首先安装相关库文件:
pip install PyPDF2, tkinter
接着,定义合并pdf函数,使用了PdfMerger构建对象,输入pdf文件路径列表,以及输出文件夹路径
from PyPDF2 import PdfMerger
def merge_pdf(file_paths, output_dir):
merger = PdfMerger()
input_pdfs = file_paths.get().split('\n')
for pdf in input_pdfs:
merger.append(pdf)
merger.write(output_dir + '/merge.pdf')
merger.close()
file_paths.set('合并完成')
使用了tkinter构建了简单的UI界面,完整代码如下
from PyPDF2 import PdfMerger
import tkinter as tk
from tkinter import filedialog
from functools import partial
def merge_pdf(file_paths, output_dir):
merger = PdfMerger()
input_pdfs = file_paths.get().split('\n')
for pdf in input_pdfs:
merger.append(pdf)
merger.write(output_dir + '/merge.pdf')
merger.close()
file_paths.set('合并完成')
def select_files(file_paths):
filetypes = [('PDF files', '*.pdf')]
filenames = filedialog.askopenfilenames(
title='Select files',
filetypes=filetypes
)
file_paths.set('\n'.join(filenames))
root = tk.Tk()
root.title('选择文件')
root.geometry('600x400')
file_paths = tk.StringVar() # 创建一个变量来存储选中的文件路径
file_paths_label = tk.Label(root, text='提示\n1. 请按照合并顺序的倒序依次选择pdf文件\n2. 然后点击合并pdf\n3. 合并后的文件将保存在当前目录下的merge.pdf', justify='left') # 创建并放置一个标签来显示合并后的文件路径
file_paths_label.pack(pady=10)
select_button = tk.Button(root, text='选择pdf文件', command=partial(select_files, file_paths)) # 创建并放置一个按钮来触发文件选择对话框
select_button.pack(pady=10)
convert_button = tk.Button(root, text='合并pdf', command=partial(merge_pdf, file_paths, '.')) # 创建并放置一个按钮来合并pdf
convert_button.pack(pady=10)
file_paths_label = tk.Label(root, textvariable=file_paths, justify='left') # 创建并放置一个标签来显示选中的文件路径
file_paths_label.pack(pady=10)
root.mainloop()
运行效果