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