Python3.10将多个pdf合并,要求代码可以打包为exe,双击之后弹出页面,页面首先选择输入文件夹,再选择输出文件夹,再输入合并以后的名字,最后点击开始,显示进度条,颜色为蓝色,进度条中要有百分比,给出代码,使用tkinter界面化,界面要整洁干净,看着舒服
时间: 2024-05-13 09:17:00 浏览: 108
python的pdf合并工具.exe
好的,我可以帮你写一个界面化的Python3.10脚本,实现多个PDF文件合并为一个PDF文件,并且可以打包为exe文件。
首先需要安装两个Python库:PyPDF2和PyInstaller。可以在命令行中使用以下命令进行安装:
```
pip install PyPDF2
pip install pyinstaller
```
然后,可以使用以下代码实现功能:
```python
import os
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter.ttk import Progressbar
from PyPDF2 import PdfFileMerger
class PDFMergerGUI:
def __init__(self, master):
self.master = master
self.master.title("PDF Merger")
self.master.geometry("400x300")
self.master.resizable(False, False)
self.input_folder = ""
self.output_folder = ""
self.lbl_input = tk.Label(self.master, text="Input Folder:")
self.lbl_input.grid(row=0, column=0, padx=10, pady=10)
self.ent_input = tk.Entry(self.master, width=30)
self.ent_input.grid(row=0, column=1, padx=10, pady=10)
self.btn_input = tk.Button(self.master, text="Browse", command=self.browse_input)
self.btn_input.grid(row=0, column=2, padx=10, pady=10)
self.lbl_output = tk.Label(self.master, text="Output Folder:")
self.lbl_output.grid(row=1, column=0, padx=10, pady=10)
self.ent_output = tk.Entry(self.master, width=30)
self.ent_output.grid(row=1, column=1, padx=10, pady=10)
self.btn_output = tk.Button(self.master, text="Browse", command=self.browse_output)
self.btn_output.grid(row=1, column=2, padx=10, pady=10)
self.lbl_name = tk.Label(self.master, text="Output Name:")
self.lbl_name.grid(row=2, column=0, padx=10, pady=10)
self.ent_name = tk.Entry(self.master, width=30)
self.ent_name.grid(row=2, column=1, padx=10, pady=10)
self.btn_merge = tk.Button(self.master, text="Merge", command=self.merge)
self.btn_merge.grid(row=3, column=1, padx=10, pady=10)
self.progress = Progressbar(self.master, orient=tk.HORIZONTAL, length=200, mode='determinate')
self.progress.grid(row=4, column=1, padx=10, pady=10)
def browse_input(self):
self.input_folder = filedialog.askdirectory()
self.ent_input.delete(0, tk.END)
self.ent_input.insert(0, self.input_folder)
def browse_output(self):
self.output_folder = filedialog.askdirectory()
self.ent_output.delete(0, tk.END)
self.ent_output.insert(0, self.output_folder)
def merge(self):
if not self.input_folder or not self.output_folder:
messagebox.showerror("Error", "Please select input and output folders.")
return
if not self.ent_name.get():
messagebox.showerror("Error", "Please enter output file name.")
return
merger = PdfFileMerger()
files = os.listdir(self.input_folder)
files = [f for f in files if f.endswith(".pdf")]
total_files = len(files)
if total_files == 0:
messagebox.showerror("Error", "No PDF files found in input folder.")
return
output_file = os.path.join(self.output_folder, self.ent_name.get() + ".pdf")
for index, file in enumerate(files):
self.progress['value'] = (index + 1) * 100 / total_files
self.master.update_idletasks()
file_path = os.path.join(self.input_folder, file)
with open(file_path, 'rb') as f:
merger.append(f)
with open(output_file, 'wb') as f:
merger.write(f)
messagebox.showinfo("Success", "PDF files merged successfully.")
self.progress['value'] = 0
if __name__ == '__main__':
root = tk.Tk()
app = PDFMergerGUI(root)
root.mainloop()
```
这个程序会创建一个GUI窗口,包括三个文本框和三个按钮,用于选择输入文件夹、输出文件夹和合并后的文件名,并且在点击“Merge”按钮后,将输入文件夹中的所有PDF文件合并为一个PDF文件,并保存到输出文件夹中。进度条会显示合并进度。
接下来,可以使用以下命令将这个代码打包为exe文件:
```
pyinstaller --onefile --noconsole PDFMergerGUI.py
```
这将生成一个名为“PDFMergerGUI.exe”的可执行文件。双击该文件,即可打开GUI界面,进行PDF文件合并操作。
阅读全文