用Tkinter制作一个用于合并PDF文件的小程序

需要安装PyPDF2库,具体原代码如下:

python 复制代码
# -*- 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文件需要会员,还是自己开发一个。

相关推荐
SelectDB2 小时前
5 倍性能提升,Apache Doris TopN 全局优化详解|Deep Dive
数据库·apache
StarChainTech3 小时前
电动车租赁中的智能管理:电子围栏技术如何改变出行行业
大数据·人工智能·微信小程序·小程序·团队开发·软件需求·共享经济
zhougl9965 小时前
Vuex 模块命名冲突:问题解析与完整解决方案
linux·服务器·apache
2503_928411566 小时前
12.26 小程序问题和解决
前端·javascript·微信小程序·小程序
I · T · LUCKYBOOM6 小时前
1.Apache网站优化
linux·运维·服务器·网络·apache
qq_124987075310 小时前
基于springboot的智能任务管理助手小程序设计与实现(源码+论文+部署+安装)
spring boot·后端·信息可视化·微信小程序·小程序·毕业设计·计算机毕业设计
一人の梅雨10 小时前
微店商品详情接口深度解析:从多端适配到全链路数据补全
apache
夏日白云12 小时前
《PDF解析工程实录》第 8 章|融合策略:不是兜底,而是信息利用率最大化
pdf·llm·大语言模型·rag·文档解析
菩提小狗13 小时前
第3天:基础入门-抓包&封包&协议&APP&小程序&PC应用&WEB应用|小迪安全笔记|网络安全|
前端·安全·小程序
百锦再13 小时前
万字解析:抖音小程序与微信小程序开发全景对比与战略选择
人工智能·ai·语言模型·微信小程序·小程序·模拟·模型