1. 程式人生 > 其它 >用python合併pdf檔案,基於tkinter+PyPDF。

用python合併pdf檔案,基於tkinter+PyPDF。

 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} \n 檔案包括:\n{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'完成\n檔案目錄:{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()

可以打包直接使用