news 2026/8/23 10:55:52

pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清

pypdf 完整指南:合并、拆分、水印等 6 个常用操作一次讲清

【免费下载链接】pypdfA pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files项目地址: https://gitcode.com/GitHub_Trending/py/pypdf

pypdf 是一个纯 Python 编写的 PDF 处理库,帮你用代码完成 PDF 的拆分、合并、裁剪、页面变换、加密与文本提取。无需系统级依赖,pip 一条命令即可安装,适合脚本开发者和批量文档处理场景。

📌 30 秒了解 pypdf

pypdf 定位很直接:用 Python 代码读写 PDF 文件。

  • 合并多份 PDF,或把一份 PDF 拆出指定页面
  • 裁剪、旋转、缩放页面,调整页面尺寸
  • 给文档加水印、印章、图形和文本注释
  • 提取 PDF 中的文本与元数据,支持加解密

⚙️ 它适合哪些场景

  • 自动化办公:把一批报告按顺序合并成一份 PDF
  • 文档处理:给合同批量盖"已审核"印章或加水印
  • 数据整理:从 PDF 里批量抽取文字,导入数据库或做检索
  • 格式调整:旋转方向错误的页面、裁剪多余的页边

🔧 安装与环境准备

安装

pip install pypdf

验证是否装好:

python -c "import pypdf; print(pypdf.__version__)"

兼容性

操作系统Python 版本支持状态
Windows / macOS / Linux3.9✓ 支持
Windows / macOS / Linux3.10 ~ 3.13✓ 支持
Windows / macOS / Linux3.14✓ 支持
任意平台< 3.9✗ 不支持

pypdf 与操作系统无关,只要 Python 版本达标即可运行。

可选扩展

  • pip install "pypdf[crypto]":AES 加密/解密 PDF
  • pip install "pypdf[image]":提取、嵌入图片
  • pip install "pypdf[fonts]":字体处理
  • pip install "pypdf[rtl_text]":阿拉伯语等右起文字
  • pip install "pypdf[full]":以上全部

🔍 功能速览

如何一步合并多份 PDF

PdfWriter依次调用append追加文件,最后write输出即可,只合并前三页也可以传pages=(0, 3)

提示:合并不同尺寸的页面时,可用merge方法指定插入位置并自动扩展画布。

如何从 PDF 中拆分指定页面

PdfReader读入原文件,add_page挑选要保留的页码,写出新文件就是拆分。想保留哪些页,就加哪些页。

如何裁剪、旋转和缩放 PDF 页面

页面提供rotate方法调整角度,修改mediabox坐标即可裁剪,缩放则调整页面尺寸参数。

注意:裁剪只是调整可视区域,被裁掉的内容仍留在文件里,别当保密手段用。

如何给 PDF 添加水印或印章

merge_page把水印页合并到每一页上,over=False水印垫底,over=True印章置顶,配合Transformation还能旋转缩放。

印章适合"已审核"这类标识,水印适合版权保护,两者只差一个参数。

如何提取 PDF 文本

reader.pages[0].extract_text()直接返回文字;传extraction_mode="layout"可尽量还原原始排版。

💡 进阶操作

  • 加密与解密writer.encrypt("密码")给文档设访问密码,PdfReader打开加密文件时传入password参数。AES-256 加解密需要安装 crypto 扩展包。
  • 填写 PDF 表单:读取page.get_annots()找到表单域,赋值后保存,可用于批量填写发票、申请单。
  • 处理图形与文本注释pypdf支持高亮、下划线、自由文本、矩形等注释类型,创建和读取都可以,适合做批注工具。

✅ 实战场景

场景一:文档归档(合并 + 水印)收到一份主文档和几份附件,先按顺序append合并成一份 PDF,再用merge_page(over=False)给每页垫上水印,最后写出归档文件。顺序上先合并再加水印,避免对多份文件重复加水印。

场景二:批量盖章后拆分分发(印章 + 拆分)先给合同每页用merge_page(over=True)盖"已盖章"印章,保存后再按页拆分,把每位申请人对应的页分别导出。印章用over=True保证压在正文之上不被遮挡。

⚠️ 常见坑

  • 现象:照旧教程写PdfMerger报不存在。原因PdfMerger已弃用,功能并入PdfWriter解决:改用PdfWriter().append(...)完成合并。
  • 现象:处理大文件报RecursionError原因:Python 递归深度不够。解决sys.setrecursionlimit(sys.getrecursionlimit() * 5)
  • 现象:扫描件提取文本为空。原因:图片型 PDF 没有文本层,pypdf 不做 OCR。解决:先过 OCR 工具再提取。
  • 现象:水印显示在文字上面。原因merge_page默认over=True解决:水印改为over=False,印章才用True
  • 现象:输出大量 warning 日志。原因:很多 PDF 不完全符合规范,pypdf 会记录警告。解决:属正常现象,需要精确控制可传strict=True改为报错。

📎 小贴士

  1. 发布代码时用print(pypdf.__version__)确认并锁定版本,跨版本 API 有差异。
  2. 批量处理时给每个文件单独写脚本或循环处理,方便定位坏文件。
  3. 读入可疑文件先试strict=False,容忍格式瑕疵。
  4. 需要提取的图片或字体时,按需安装对应扩展包,不要一开始就装 full。
  5. 输出文件先写临时文件确认无误再覆盖原文件,防止误操作丢失源文档。

到这里,pypdf 的常用能力就都过了一遍:合并、拆分、裁剪变换、水印印章、文本提取,再配上加解密和表单填写覆盖绝大多数需求。下一步建议从 docs/user/ 下的 merging-pdfs.md、add-watermark.md 和 cropping-and-transforming.md 三个文档看完整示例,也可以试试 docs/user/extract-text.md 里的文本提取写法。

【免费下载链接】pypdfA pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files项目地址: https://gitcode.com/GitHub_Trending/py/pypdf

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/23 10:54:56

网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404

网站链接检查神器&#xff1a;broken-link-checker 帮你 5 分钟扫完整站 404 【免费下载链接】broken-link-checker Find broken links, missing images, etc within your HTML. 项目地址: https://gitcode.com/gh_mirrors/br/broken-link-checker broken-link-checker …

作者头像 李华
网站建设 2026/8/23 10:48:38

AltTab 使用指南:macOS 上的窗口切换技巧

AltTab 使用指南&#xff1a;macOS 上的窗口切换技巧 【免费下载链接】alt-tab-macos Windows alt-tab on macOS 项目地址: https://gitcode.com/gh_mirrors/al/alt-tab-macos 换了 Mac 之后&#xff0c;最难适应的不是 Dock&#xff0c;而是切窗口。系统自带 CommandT…

作者头像 李华
网站建设 2026/8/23 10:48:37

C++运算符重载与函数模板:从语法特性到工程实践的核心设计工具

1. 项目概述&#xff1a;从“语法糖”到“设计利器”的认知跃迁 很多C初学者&#xff0c;包括几年前的我&#xff0c;都曾把运算符重载和函数模板看作是“高级语法”或者“炫技”的玩意儿。老师讲实验13&#xff0c;标题是“运算符重载2与函数模板”&#xff0c;我们可能就按部…

作者头像 李华
网站建设 2026/8/23 10:48:36

Czkawka 跨平台视频查重:从安装到批量清理的完整指南

Czkawka 跨平台视频查重&#xff1a;从安装到批量清理的完整指南 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 硬盘里存满下载的电影、课程录像和…

作者头像 李华
网站建设 2026/8/23 10:48:33

C++模板编程中typename关键字的深度解析与应用实践

1. 从一次编译错误说起&#xff1a;为什么需要 typename &#xff1f; 如果你写过一段时间的 C 模板代码&#xff0c;尤其是涉及容器迭代器或者嵌套类型的时候&#xff0c;大概率见过下面这种让人摸不着头脑的编译错误&#xff1a; template<typename T> void printS…

作者头像 李华
网站建设 2026/8/23 10:44:10

数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南

1. 赛题核心与破题思路总览 又到了一年一度的数维杯数学建模竞赛季&#xff0c;对于很多初次参赛或者希望冲击更高奖项的同学来说&#xff0c;面对A、B、C三道风格迥异的题目&#xff0c;如何快速抓住核心、建立有效的解题框架&#xff0c;往往是决定成败的第一步。我参加过多次…

作者头像 李华