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

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),仅供参考

http://www.cnnetsun.cn/news/4172741.html

相关文章:

  • 网站链接检查神器:broken-link-checker 帮你 5 分钟扫完整站 404
  • AltTab 使用指南:macOS 上的窗口切换技巧
  • C++运算符重载与函数模板:从语法特性到工程实践的核心设计工具
  • Czkawka 跨平台视频查重:从安装到批量清理的完整指南
  • C++模板编程中typename关键字的深度解析与应用实践
  • 数维杯数学建模竞赛:A/B/C三类赛题通用破题思路与实战建模指南
  • TimeSage-MT:构建多轮对话时间序列智能体的评测基准与工程实践
  • andrej-karpathy-skills:把 AI 的“顺手重构“管住
  • 视频标题 - BV1xx411c7mX
  • palera1n 越狱工具:从连上设备到完成越狱的完整指南
  • 5分钟清干净满地物品:流放之路过滤器 NeverSink Filter 快速上手指南
  • 告别手动整理!FileMover开源工具实现文件批量自动化管理
  • wewe-rss RSS订阅管理前端错误监控完整指南:从白屏到分层防御
  • 数学建模中的概率模型:从随机变量到蒙特卡洛模拟的完整指南
  • Auto.js 简介与避坑指南
  • 工业AGV多车路径规划:从轻量级算法到仓库落地实践
  • 从文件到屏幕:Python/java 字符编码、解码、文本处理的底层逻辑解析
  • OPTEE 3.15运行在QEMU ARMv8上
  • MiniMax H3前瞻:技术评估、部署准备与效果验证全指南
  • 机器学习十大经典算法实战指南:从原理到数学建模应用
  • 工业机器人Socket通信:3D视觉引导路径传输的完整协议设计与实现
  • Vue.js面经应用开发实战与核心技巧解析
  • react-rangeslider快速上手指南:5分钟搭建你的第一个React滑块组件
  • 用google-ads-python增删改查广告:10个高频广告操作代码示例,简单到直接复制就能用
  • 为什么国旗有4个字符却只有1个字素簇?unicode-segmentation字素簇完整教程
  • meta与EnTT组合实战:打造C++ ECS游戏引擎的运行时内省与属性编辑基础
  • Physical Token经济学:破解机器人规模化瓶颈的能力复用新范式
  • MobileInfo 设备指纹实践:如何基于 Build 与 Serial 生成不碰撞的设备唯一 ID
  • 单机多GPU利用率最大化:Distributed-TensorFlow-Guide中Worker的GPU分配实战教程
  • 阿里云RTC LTR技术解析:硬件解码支持下的弱网视频抗丢包方案