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

拆分、合并PDF

拆分PDF

方案一:

from PyPDF3 import PdfFileReader, PdfFileWriter
import os# 使用os.path处理路径更安全
input_path = os.path.join(r"d:\PDF", "PDF文件.pdf")
output_dir = r"d:\PDF\output_path"def split_pdf(input_path, output_dir):try:# 检查输入文件是否存在if not os.path.exists(input_path):raise FileNotFoundError(f"输入文件不存在: {input_path}")# 创建输出目录(如果不存在)os.makedirs(output_dir, exist_ok=True)# 使用上下文管理器读取PDFwith open(input_path, 'rb') as file:input_pdf = PdfFileReader(file)# 获取页数num_pages = input_pdf.getNumPages()for page_num in range(num_pages):output = PdfFileWriter()output.addPage(input_pdf.getPage(page_num))# 构造输出路径output_path = os.path.join(output_dir, f"page_{page_num + 1}.pdf")# 写入文件with open(output_path, 'wb') as output_pdf:output.write(output_pdf)print(f"已保存: {output_path}")print(f"\n✅ 拆分完成!共拆分 {num_pages} 页")return Trueexcept Exception as e:print(f"❌ 发生错误: {str(e)}")return False# 执行拆分
if __name__ == "__main__":split_pdf(input_path, output_dir)

方案二:

from PyPDF3 import PdfFileWriter, PdfFileReaderpath = r"d:\PDF"
input_pdf = PdfFileReader(r"d:\PDF\PDF文件.pdf")  # PdfFileReader读取原始文件
output = PdfFileWriter()
# 获取PDF页数
num_pages = input_pdf.getNumPages()for page_num in range(num_pages):output = PdfFileWriter()# PdfFileWriter().addPage()将PDF页面添加到新的PDF中并保存output.addPage(input_pdf.getPage(page_num))with open("{}page_{}.pdf".format(path, page_num + 1), 'wb') as output_pdf:output.write(output_pdf) # 先创建output_pdf文件

合并PDF

按数字顺序合并PDF文件的Python代码:

from PyPDF2 import PdfMerger
import os
import redef merge_pdfs_by_number(input_dir, output_file):"""按数字顺序合并目录中的PDF文件参数:input_dir: 包含PDF文件的目录路径output_file: 合并后的输出文件路径"""try:# 获取目录中的所有PDF文件all_files = [f for f in os.listdir(input_dir) if f.lower().endswith('.pdf')]if not all_files:print("目录中没有找到PDF文件")return False# 提取文件名中的数字并排序def extract_number(filename):# 从文件名中提取所有数字序列numbers = re.findall(r'\d+', filename)# 如果找到数字,转换为整数;否则返回0return int(numbers[0]) if numbers else 0# 按数字排序文件sorted_files = sorted(all_files, key=extract_number)print("检测到以下PDF文件(按数字顺序排序):")for i, f in enumerate(sorted_files):print(f"{i+1}. {f}")# 创建PDF合并器merger = PdfMerger()# 按顺序添加每个PDF文件for filename in sorted_files:filepath = os.path.join(input_dir, filename)merger.append(filepath)print(f"已添加: {filename}")# 保存合并后的PDFmerger.write(output_file)merger.close()print(f"\n✅ 合并完成! 共合并 {len(sorted_files)} 个文件")print(f"📄 输出文件: {os.path.abspath(output_file)}")return Trueexcept Exception as e:print(f"❌ 合并过程中出错: {str(e)}")return Falseif __name__ == "__main__":# 配置参数SOURCE_DIR = "pdf_files"      # 包含PDF文件的目录OUTPUT_FILE = "merged.pdf"  # 输出文件名# 执行合并merge_pdfs_by_number(SOURCE_DIR, OUTPUT_FILE)

安装依赖:

pip install PyPDF2
  • 将所有PDF文件放在同一个目录中(如pdf_files

  • 文件名应包含数字(如:1_报告.pdf, 02_附录.pdf, 3.总结.pdf,4.pdf

http://www.lryc.cn/news/596292.html

相关文章:

  • 实现分布式锁
  • 数据库表介绍
  • 金仓数据库风云
  • Docker 安装、常用命令、应用部署
  • 3516cv610 mqtt库移植
  • 【工作常用】C++/QT插件编程思想——即插即用
  • React 英语单词补全游戏——一个寓教于乐的英语单词记忆游戏
  • docker build 和compose 学习笔记
  • 如何构建FunASR的本地语音识别服务
  • 开发者如何集成AI绘画?智创聚合API简化Midjourney接入
  • Linux系统权限全面解析:掌握你的数字王国钥匙
  • RPA软件机器人如何提高工作效率?
  • LeetCode 1.
  • GRU模型
  • Three.js 实现梦幻星河流光粒子特效原理与实践
  • sysbench对linux服务器上mysql8.0版本性能压测
  • Java(Set接口和HashSet的分析)
  • 决策树学习笔记
  • C++类和对象(3)
  • C++刷题常用方法
  • 4.组合式API知识点(2)
  • 低速信号设计之 MII 篇
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘Cython’问题
  • 【大模型记忆实战Demo】基于SpringAIAlibaba通过内存和Redis两种方式实现多轮记忆对话
  • 【打怪升级 - 01】保姆级机器视觉入门指南:硬件选型 + CUDA/cuDNN/Miniconda/PyTorch/Pycharm 安装全流程(附版本匹配秘籍)
  • LSTM+Transformer炸裂创新 精准度至95.65%
  • 一款功能全面的文体场所预约小程序
  • C#初学知识点总结
  • linux-计划任务
  • 数据结构自学Day12-- 排序算法2