from PyPDF2 import PdfFileWriter, PdfFileReader
import os
import tkinter as tk
from tkinter import ttk
from tkinter.filedialog import askopenfilename


win = tk.Tk()
win.geometry("400x200")
win.title("Delete PDF Pages")


def pagedel():
    pages_del = pages.get()
    pages_to_delete = pages_del.strip().split(",")
    pages_to_delete = [(int(i) - 1) for i in pages_to_delete]

    with open(path, "rb") as pdf_file:
        pdf_reader = PdfFileReader(pdf_file)
        num_pages = pdf_reader.numPages

    out_of_index_page = []
    for num in pages_to_delete:
        if num > num_pages:
            out_of_index_page.append(num)

    if len(out_of_index_page) == 0:

        infile = PdfFileReader(path, "rb")
        output = PdfFileWriter()

        for i in range(infile.getNumPages()):
            if i not in pages_to_delete:
                p = infile.getPage(i)
                output.addPage(p)

        inputfile_name = ((path.split("\\")[-1]).split(".pdf"))[0]

        output_name = inputfile_name + "_deleted.pdf"

        with open(output_name, "wb") as f:
            output.write(f)

        print(f"\nThe output pdf is saved as: {output_name}\n")

    else:
        print("\nPage number entered is greater than the No of Pages in PDF")
        print("Please Check & Re-Try\n")


def getpages():
    global pages, path
    user_path = askopenfilename().strip()
    path = os.path.normpath(user_path)

    label2 = ttk.Label(win, text="Enter page numbers to be deleted seperated by commas:\n(Eg: 1,2) ")
    label2.grid(row=0, column=0, padx=50, pady=20)

    pages = tk.Entry(win, width = 30)
    pages.grid(row=1, column=0, padx=50, pady=0)

    button2 = ttk.Button(win, text="Enter", width=30, command=pagedel)
    button2.grid(row=2, column=0, padx=50, pady=10)


label1 = ttk.Label(win, text="Select PDF File: ")
label1.grid(row=0, column=0, padx=100, pady=40)

button1 = ttk.Button(win, text="Select File", width=30, command=getpages)
button1.grid(row=1, column=0, padx=100, pady=0)

win.mainloop()