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

Python:合并两个PDF文件为一个PDF

如果你使用PyPDF2’遇到了 AttributeError: partially initialized module 'PyPDF2' has no attribute 'PdfFileReader' 这个错误,可能是由于 PyPDF2 库的版本问题或者库本身的问题。在这种情况下,你可以尝试使用 PyMuPDF(MuPDF)库来处理 PDF 文件。以下是一个使用 PyMuPDF 的示例代码:

首先,你需要安装 PyMuPDF 库:

pip install pymupdf

接下来,使用以下示例代码来合并两个 PDF 文件:

import fitz  # PyMuPDFdef merge_pdfs(pdf1_path, pdf2_path, output_path):# 打开两个 PDF 文件pdf1 = fitz.open(pdf1_path)pdf2 = fitz.open(pdf2_path)# 创建新的 PDF 文档merged_pdf = fitz.open()# 将第一个 PDF 文件的页面添加到新文档for page_num in range(pdf1.page_count):page = pdf1[page_num]merged_pdf.insert_pdf(pdf1, from_page=page_num, to_page=page_num, start_at=merged_pdf.page_count)# 将第二个 PDF 文件的页面添加到新文档for page_num in range(pdf2.page_count):page = pdf2[page_num]merged_pdf.insert_pdf(pdf2, from_page=page_num, to_page=page_num, start_at=merged_pdf.page_count)# 保存合并后的 PDF 到输出文件merged_pdf.save(output_path)# 关闭所有打开的 PDF 文件pdf1.close()pdf2.close()merged_pdf.close()# 使用示例
pdf1_path = 'path/to/first.pdf'
pdf2_path = 'path/to/second.pdf'
output_path = 'path/to/output.pdf'merge_pdfs(pdf1_path, pdf2_path, output_path)

替换 path/to/first.pdfpath/to/second.pdf 为你的实际文件路径,将合并后的 PDF 文件保存到 path/to/output.pdf。这个示例使用 PyMuPDFfitz 模块来实现 PDF 合并。

相关文章:

  • 051:vue项目webpack打包后查看各个文件大小
  • YOLOv8改进 | 2023主干篇 | EfficientViT替换Backbone(高效的视觉变换网络)
  • Proteus仿真--射击小游戏仿真设计
  • IoTDB服务安装教程-集群版
  • Python爬取酷我音乐
  • LangChain 26: 回调函数callbacks打印prompt verbose调用
  • Java对List<Map>进行合并去重
  • k8s一键部署uniswap
  • LeetCode力扣每日一题(Java):35、搜索插入位置
  • SQLMAP的使用(rails 为例)
  • SQL注入一般过程
  • Spring boot 发送邮箱
  • flutter 底部弹窗和中间弹窗
  • 分布式搜索引擎02
  • at least 1 bean which qualifies as autowire candidate
  • __proto__ 和 prototype的关系
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • Android组件 - 收藏集 - 掘金
  • Angular数据绑定机制
  • C语言笔记(第一章:C语言编程)
  • java中的hashCode
  • JS数组方法汇总
  • Laravel Mix运行时关于es2015报错解决方案
  • laravel 用artisan创建自己的模板
  • PermissionScope Swift4 兼容问题
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • React-生命周期杂记
  • Redis中的lru算法实现
  • spring boot 整合mybatis 无法输出sql的问题
  • spring boot下thymeleaf全局静态变量配置
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • XForms - 更强大的Form
  • 翻译--Thinking in React
  • 给新手的新浪微博 SDK 集成教程【一】
  • 规范化安全开发 KOA 手脚架
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 批量截取pdf文件
  • 转载:[译] 内容加速黑科技趣谈
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ###C语言程序设计-----C语言学习(3)#
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (arch)linux 转换文件编码格式
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (接口自动化)Python3操作MySQL数据库
  • (学习日记)2024.01.09
  • (转)JAVA中的堆栈
  • (转)Linq学习笔记
  • .htaccess 强制https 单独排除某个目录
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)