0

i wrote a code which works on PyCharm, with Conda but I am not able to use auto-py-to-exe because the exe never works. This is the code:

import os
from PyPDF2 import PdfReader, PdfWriter
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
import tkinter as tk
from tkinter import filedialog, simpledialog, OptionMenu


def save_recent_output_folders():
    with open("recent_output_folders.txt", "w") as file:
        for folder in recent_output_folders:
            file.write(folder + "\n")


def choose_input_pdf():
    file_paths = filedialog.askopenfilenames(title="Wählen Sie die Eingabe-PDF-Dateien",
                                             filetypes=[("PDF Dateien", "*.pdf")])
    selected_files.clear()
    for file_path in file_paths:
        file_name = os.path.basename(file_path)
        selected_files[file_name] = file_path
    input_pdf_var.set(", ".join(selected_files.keys()))


def choose_output_folder():
    folder_path = filedialog.askdirectory(title="Wählen Sie den Ausgabeordner")
    output_folder_var.set(folder_path)
    recent_output_folders.insert(0, folder_path)
    update_output_folder_menu()
    save_recent_output_folders()


def update_output_folder_menu():
    output_folder_menu['menu'].delete(0, tk.END)
    for folder in recent_output_folders:
        output_folder_menu['menu'].add_command(label=folder, command=lambda f=folder: output_folder_var.set(f))


def extract_and_save_vorletzte_seite(input_file_path, output_file_path):
    pdf = PdfReader(input_file_path)

    if len(pdf.pages) < 2:
        result_label.config(text="Die PDF hat weniger als 2 Seiten.")
        return

    vorletzte_seite = pdf.pages[-2]

    writer = PdfWriter()
    writer.add_page(vorletzte_seite)

    with open(output_file_path, 'wb') as output_file:
        writer.write(output_file)

    result_label.config(text="Fertig!")


def process_pdfs():
    output_folder = output_folder_var.get()

    for input_file_name, input_file_path in selected_files.items():
        output_filename = simpledialog.askstring("Ausgabefile-Namen festlegen",
                                                 f"Geben Sie den Ausgabefile-Namen für '{input_file_name}' ein:")
        if output_filename is not None and output_filename.strip():
            output_filename += ".pdf"
            output_file_path = os.path.join(output_folder, output_filename)
            extract_and_save_vorletzte_seite(input_file_path, output_file_path)


recent_output_folders = []
if os.path.exists("recent_output_folders.txt"):
    with open("recent_output_folders.txt", "r") as file:
        recent_output_folders = [line.strip() for line in file]

selected_files = {}

root = tk.Tk()
root.title("PDF-Erstellung")
root.geometry("500x600")
root.configure(bg="black")

input_pdf_var = tk.StringVar()
input_pdf_label = tk.Label(root, text="Eingabe-PDF:", bg="black", fg="white")
input_pdf_label.pack()
input_pdf_entry = tk.Entry(root, textvariable=input_pdf_var, bg="black", fg="white")
input_pdf_entry.pack()
input_pdf_button = tk.Button(root, text="Durchsuchen", command=choose_input_pdf, bg="black", fg="white")
input_pdf_button.pack()

output_folder_var = tk.StringVar()
output_folder_frame = tk.Frame(root, bg="black")
output_folder_label = tk.Label(output_folder_frame, text="Ausgabeordner:", bg="black", fg="white")
output_folder_label.pack()
output_folder_menu = tk.OptionMenu(output_folder_frame, output_folder_var, *recent_output_folders)
output_folder_menu.config(bg="black", fg="white")
output_folder_menu["menu"].config(bg="black", fg="white")
output_folder_menu.pack()
output_folder_frame.pack()
output_folder_button = tk.Button(root, text="Durchsuchen", command=choose_output_folder, bg="black", fg="white")
output_folder_button.pack()

create_button = tk.Button(root, text="PDFs erstellen", command=process_pdfs, bg="black", fg="white")
create_button.pack()

result_label = tk.Label(root, text="", bg="black", fg="white")
result_label.pack(pady=10)

root.mainloop()

save_recent_output_folders()

Can someone please help me?

I tried it many times but it never worked. I am not at home so I can´t use another machine. Can someone please help me? It would also help to upload the exe. I also tried to use pyinstaller but it also didn´t work

Max
  • 1
  • What have you tried? Did you get any error messages? – liorko Aug 24 '23 at 18:51
  • 2
    What does "it never works" actually mean? – JonSG Aug 24 '23 at 18:54
  • It opens the command prompt and closes it after 2 seconds without any error messages. I tried to use auto-py-to-exe and pyinstaller. Both in one file and few files option. Is anyone able to help? – Max Aug 25 '23 at 09:06

0 Answers0