1 from tkinter import * 2 from pathlib import Path 3 from tkinter.messagebox import * 4 from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter 5 6 7 # 对文件夹名为:src_floder 文件合并 8 def mergePdf(src_folder: str, des_file: str) -> str: 9 """ 10 :param src_folder: 需要合并pdf的文件见 str 11 :param des_file: 合并后的文件地址文件名.pdf str 12 :return: 13 """ 14 file_list = list(Path(src_folder).glob('*.pdf')) 15 merger = PdfFileMerger() 16 # print(file_list) 17 outputPages = 0 18 for pdf in file_list: 19 inputfile = PdfFileReader(str(pdf)) 20 merger.append(inputfile) 21 pagecounts = inputfile.getNumPages() 22 print(f'{pdf.name}页数:{pagecounts}') 23 outputPages += pagecounts 24 merger.write(des_file) 25 merger.close() 26 print(f'合并后页数为{outputPages}') 27 return des_file 28 29 30 # 合并事件 31 def merge(): 32 content = entry1.get() 33 print(content) 34 path = Path(content) 35 if not path.is_dir(): 36 showerror('错误提醒', '输入文件路径错误,请重新输入') 37 else: 38 files = path.glob('*.pdf') 39 files_path = [i.name for i in files if not i.name.startswith("~$")] 40 back = askokcancel('确认信息', 41 f'合并文件夹目录为:{path} 文件包括: {files_path}') 42 if back: 43 if len(files_path) < 2: 44 showinfo('提醒', '文件数目少于两个无需合并') 45 else: 46 file_path = mergePdf(str(path), str(path / 'merge.pdf')) 47 showinfo('finish', f'完成 文件目录:{file_path}') 48 49 ... 50 51 52 win = Tk() 53 win.title('合并pdf文件') 54 win.geometry('300x185+500+300') 55 Label(win, text='请输入需要合并pdf文件目录:', font=10).pack(pady=10, padx=10, anchor='nw') 56 entry1 = Entry(win) 57 entry1.pack(pady=10, padx=10, fill='x') 58 # 输入合并后pdf文件名 59 # Label(win, text='合并后文件名:', font=10).pack(pady=10, padx=10, anchor='nw') 60 # entry2 = Entry(win) 61 # entry2.pack(pady=10, padx=10, fill='x') 62 Button(win, text='确定', command=merge, font=10).pack(pady=10, anchor='s') 63 64 win.mainloop()
可以打包直接使用