当前位置: 首页 > news >正文

合并pdf工具下载

csdn上面的下载链接如下
https://download.csdn.net/download/weixin_46756664/91434934?spm=1011.2124.3001.6210
百度网盘链接如下
链接: https://pan.baidu.com/s/1z4lpDGNxKQKW8Zi5A0pgew?pwd=2s9r 提取码: 2s9r
源码如下pdf_merger_app.py(deepseek自动生成的)


import os
import tkinter as tk
from tkinter import filedialog, messagebox, Listbox, Scrollbar, MULTIPLE, END
from PyPDF2 import PdfMergerclass PDFMergerApp:def __init__(self, root):self.root = rootself.root.title("PDF合并工具")self.root.geometry("600x500")# 文件列表self.file_list = []# 创建UI组件self.create_widgets()def create_widgets(self):# 添加文件按钮tk.Button(self.root, text="添加PDF文件", command=self.add_files, height=2, bg="#4CAF50", fg="white").pack(pady=10, fill=tk.X, padx=20)# 文件列表框list_frame = tk.Frame(self.root)list_frame.pack(pady=5, fill=tk.BOTH, expand=True, padx=20)scrollbar = Scrollbar(list_frame)scrollbar.pack(side=tk.RIGHT, fill=tk.Y)self.listbox = Listbox(list_frame, selectmode=MULTIPLE,yscrollcommand=scrollbar.set,height=10)self.listbox.pack(fill=tk.BOTH, expand=True)scrollbar.config(command=self.listbox.yview)# 移除按钮tk.Button(self.root, text="移除选中文件", command=self.remove_files, height=2, bg="#f44336", fg="white").pack(pady=5, fill=tk.X, padx=20)# 输出路径path_frame = tk.Frame(self.root)path_frame.pack(pady=10, fill=tk.X, padx=20)tk.Label(path_frame, text="输出路径:").pack(side=tk.LEFT)self.path_var = tk.StringVar()tk.Entry(path_frame, textvariable=self.path_var, width=40).pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)tk.Button(path_frame, text="浏览", command=self.select_output_path).pack(side=tk.RIGHT)# 输出文件名name_frame = tk.Frame(self.root)name_frame.pack(pady=5, fill=tk.X, padx=20)tk.Label(name_frame, text="输出文件名:").pack(side=tk.LEFT)self.name_var = tk.StringVar(value="merged.pdf")tk.Entry(name_frame, textvariable=self.name_var, width=40).pack(side=tk.LEFT, padx=5, fill=tk.X, expand=True)# 合并按钮tk.Button(self.root, text="合并PDF文件", command=self.merge_pdfs, height=2, bg="#2196F3", fg="white", font=("Arial", 12, "bold")).pack(pady=20, fill=tk.X, padx=20)def add_files(self):files = filedialog.askopenfilenames(title="选择PDF文件",filetypes=[("PDF文件", "*.pdf"), ("所有文件", "*.*")])if files:self.file_list.extend(files)self.update_listbox()def remove_files(self):selected = self.listbox.curselection()if selected:# 从后往前删除避免索引变化for index in sorted(selected, reverse=True):del self.file_list[index]self.update_listbox()def update_listbox(self):self.listbox.delete(0, END)for file in self.file_list:self.listbox.insert(END, os.path.basename(file))def select_output_path(self):path = filedialog.askdirectory(title="选择输出文件夹")if path:self.path_var.set(path)def merge_pdfs(self):if not self.file_list:messagebox.showwarning("警告", "请至少添加一个PDF文件!")returnoutput_path = self.path_var.get()if not output_path:messagebox.showwarning("警告", "请选择输出路径!")returnoutput_name = self.name_var.get().strip()if not output_name:messagebox.showwarning("警告", "请输入输出文件名!")returnif not output_name.lower().endswith('.pdf'):output_name += '.pdf'output_file = os.path.join(output_path, output_name)try:merger = PdfMerger()for pdf in self.file_list:merger.append(pdf)with open(output_file, 'wb') as f:merger.write(f)messagebox.showinfo("成功", f"PDF文件合并成功!\n保存位置: {output_file}")except Exception as e:messagebox.showerror("错误", f"合并过程中发生错误:\n{str(e)}")finally:merger.close()if __name__ == "__main__":root = tk.Tk()app = PDFMergerApp(root)root.mainloop()

需要安装的库如下

pip install PyPDF2 tkinter pyinstaller

生成exe脚本如下

pyinstaller --onefile --windowed --name="pdf合并" pdf_merger_app.py 

具体界面如下
在这里插入图片描述

http://www.dtcms.com/a/289985.html

相关文章:

  • Kotlin 高阶函数初步学习
  • k8s的calico无法启动报错解决
  • 集群技术笔记-HAProxy 与 Keepalived 高可用负载均衡实战
  • 如何使用python网络爬虫批量获取公共资源数据实践技术应用
  • 江苏思必驰科技25Java实习面经
  • 杰和科技工业计算机AF208,打造高可靠新能源汽车检测产线
  • Valgrind Cachegrind 全解析:用缓存效率,换系统流畅!
  • 基于springboot+vue+mysql的在线教育系统(源码+论文)
  • 多级缓存(亿级流量缓存)
  • 布局AI +文化新赛道,浙江省文化产业投资集团赴景联文科技调研交流
  • 滚珠导轨:物流输送与包装分拣的“高速轨道”
  • 前端包管理工具深度对比:npm、yarn、pnpm 全方位解析
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘pytest’问题
  • Java 实现 TCP 一发一收通信
  • GitHub+Git新手使用说明
  • Unreal ARPG笔记
  • 讯飞输入法3.0.1742功能简介
  • SpringMVC学习笔记
  • vue3实现可视化大屏布局
  • 数组习题及答案
  • f4硬件配置spi
  • 一维DP深度解析
  • 三菱A1SJ PLC以太网模块:上位机与触摸屏高效通讯解决方案
  • 深入解析:如何在Kafka中配置Source和Sink连接器构建高效数据管道
  • 金仓数据库:融合进化,智领未来——2025年数据库技术革命的深度解析
  • 【Linux指南】Linux系统 -权限全面解析
  • Windows下编译libarchive
  • JavaWeb笔记四
  • 深入详解随机森林在医学图像质量评估中的应用与实现细节
  • OCR 身份识别:让身份信息录入场景更高效安全