用Tkinter制作一个用于合并PDF文件的小程序
需要安装PyPDF2库,具体原代码如下:
# -*- coding: utf-8 -*-
"""
Created on Sun Dec 29 14:44:20 2024
@author: YBK
"""
import PyPDF2
import os
import tkinter as tk
import windnd
pdf_files = []
def dragged_files(files):
if len(files) > 1:
for item in files:
pdf_files.append(item.decode('gbk'))
message.config(text='当前拖放的文件路径为:\n' + '\n'.join((file for file in pdf_files)))
else:
pdf_files.append(files[0].decode('gbk'))
message.config(text='当前拖放的文件路径为:\n' + '\n'.join((file for file in pdf_files)))
def is_pdf_file(file_path):
# 使用os.path.splitext()分割文件路径和扩展名
_, file_extension = os.path.splitext(file_path)
# 检查扩展名是否为.pdf(注意扩展名包含点号)
return file_extension.lower() == '.pdf'
def on_button_click():
global pdf_files
print("生成合并的PDF文件!")
output_path = os.path.dirname(pdf_files[0])
output_path = os.path.join(output_path,'mergedpdf.pdf')
print(output_path)
merge_pdfs(pdf_files, output_path)
message.config(text='合成成功,当前合成PDF的文件路径为:\n' + output_path)
def on_button_click0():
global pdf_files
pdf_files = []
message.config(text='当前拖放的文件路径为:\n' + '\n'.join((file for file in pdf_files)))
print("清空列表")
def merge_pdfs(pdf_list, output_path):
merger = PyPDF2.PdfMerger()
for pdf in pdf_list:
if is_pdf_file(pdf):
with open(pdf, 'rb') as f:
merger.append(f)
with open(output_path, 'wb') as f:
merger.write(f)
if __name__ == '__main__':
rootWindow = tk.Tk()
rootWindow.title("按顺序拖拉PDF文件进行合并")
rootWindow.geometry("400x520")
message = tk.Message(rootWindow, width=400, text="当前未拖放PDF文件,请拖放文件到这里...")
message.grid(row=0,columnspan=2)
button0 = tk.Button(rootWindow, text="清空文件列表", command=on_button_click0)
button = tk.Button(rootWindow, text="提交进行合并", command=on_button_click)
# 放置按钮在主窗口上
button0.grid(row=1,column=0)
button.grid(row=1,column=1)
windnd.hook_dropfiles(rootWindow, func=dragged_files,)
rootWindow.mainloop()
运行界面:
非常实用,提高办公效率。因为现在Wps合并PDF文件需要会员,还是自己开发一个。