3 分钟跑通 pypdf:免费纯 Python 的 PDF 合并、拆分、水印与文本提取指南

发布时间:2026/9/17 4:03:30
3 分钟跑通 pypdf:免费纯 Python 的 PDF 合并、拆分、水印与文本提取指南
3 分钟跑通 pypdf免费纯 Python 的 PDF 合并、拆分、水印与文本提取指南【免费下载链接】pypdfA pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files项目地址: https://gitcode.com/GitHub_Trending/py/pypdf你有多少次为合并几个 PDF这件事卡住过用鼠标在软件里一页页拖拖错顺序重来或者把公司文件传到在线工具上心里发毛万一传出去呢再或者花几百块买一套 PDF 套件结果 90% 的功能你只用了合并这一个按钮。今天要介绍的主角是pypdf一个纯 Python 写的开源 PDF 库合并、拆分、裁剪、旋转、加水印、提取文本、加密解密全部能在几行代码里搞定。它不需要图形界面、不上传任何文件还能直接写进你的脚本和自动化任务里。安装上只有一条pip install pypdf核心功能零第三方依赖几乎不会遇到依赖冲突。上图为 pypdf 为文档逐页叠加半透明水印的实际效果——这正是后文要带你用十几行代码复现出来的成果。它凭什么替代老办法先说清楚你换工具能省下什么。pypdf 是 BSD-3-Clause 许可的开源项目完全免费、纯 Python、本地运行维度pypdf付费 PDF 软件在线转换工具成本免费开源订阅制年年掏钱免费但有文件大小限制隐私全程本地处理文件不出电脑本地处理文件要上传到别人服务器自动化可写脚本批量上百个文件手动点鼠标单文件逐个上传可定制性完全可编程任意改造有限预设选项无定制能力依赖纯 Python轻量大型软件依赖网络一句话以前花钱、手点、上传的事现在免费、自动、本地搞定。一条命令跑通最小闭环你此刻最大的顾虑大概是装不上或版本不兼容。先花 10 秒确认 Python 版本pypdf 要求 Python 3.9 或更高python --version然后一条命令装好就这么简单pip install pypdf装完立刻验证一下跑通最小闭环——打印版本号、读一下 PDF 页数。这里拿仓库自带的样例 PDF 测试不用自己找文件import pypdf print(pypdf.__version__) # 打印你刚装好的版本号 reader pypdf.PdfReader(sample-files/09-simple-annotations/annotated.pdf) print(len(reader.pages)) # 打印页数看到版本号和一个大于 0 的页数恭喜已经跑通了环境、依赖、Python 版本全部没问题后面所有任务都建立在它上面。真实任务走一遍给合同批量加保密水印假设你要给一份多页合同的每一页都盖上CONFIDENTIAL水印。老办法是打开软件逐页插入图片用 pypdf核心就是merge_page一个方法——它把水印叠印到页面上不是把两页接起来水印默认在文字底下不影响阅读。from pypdf import PdfReader, PdfWriter reader PdfReader(合同.pdf) watermark PdfReader(水印模板.pdf).pages[0] # 水印模板只需取第一页 writer PdfWriter() for page in reader.pages: page.merge_page(watermark) # 把水印叠到当前页 writer.add_page(page) with open(合同-水印版.pdf, wb) as f: writer.write(f)运行完你会得到一份新 PDF每一页都盖着半透明水印原文字清晰可读。想调整水印的位置、大小、旋转角度看 docs/user/add-watermark.md 就行那里还有用Transformation控制缩放位移的完整示例。按需选装依赖解锁哪些能力pypdf 的设计哲学是核心零依赖、高级能力按需装。你不需要一次全装对照下面的能力清单挑就行完整列表见 docs/user/installation.md安装命令解锁能力什么时候用pip install pypdf[image]图像提取装 Pillow要从 PDF 里抠出图片pip install pypdf[crypto]AES 加密解密装 cryptography给 PDF 设密码、读加密 PDF只用到 RC4 时核心包就够pip install pypdf[fonts]字体工具装 fonttools需要精细处理字体pip install pypdf[rtl_text]阿拉伯语等右起文字排版处理 RTL 语言文档pip install pypdf[full]上面全部一次装齐不确定要什么时的一站式方案生产环境建议只装实际用到的那一项项目体积和潜在攻击面都更小。上生产前必看三个最容易踩的坑一次说清。1. 文件不合规怎么办。PDF 规范有一千多页现实中的文件经常不守规矩。PdfReader有个strict参数strictTrue默认遇到不规范直接抛异常strictFalse则尽力抢救并打警告。调试时建议用严格模式暴露问题上线时可按需放宽。详见 docs/user/robustness.md。2. 错误要精准捕获。pypdf 的错误类是一套有层级的家族别一律抓Exceptiontry: reader PdfReader(待处理.pdf) except pypdf.errors.PdfReadError as e: print(f读取失败: {e}) # 空文件、密码错误、流损坏都会落到这里WrongPasswordError、EmptyFileError这些都是它的子类需要分别处理时按家族往下抓即可。3. 版本与升级。pypdf 4.x 起每个版本都兼容所有受支持的 Python3.9 到 3.14见pyproject.toml保持向后兼容。建议新项目直接用最新版老项目定期pip install --upgrade pypdf既能拿到性能改进也能及时打上安全修复。收尾与行动清单回顾一下你刚走过的路一条命令装好 pypdf一次验证跑通环境十几行代码给合同批量盖完水印——全程免费、本地、可重复。接下来你可以马上做的几件事把今天的水印脚本改成循环处理整个文件夹的 PDF从一份长 PDF 里提取文本走一遍 docs/user/extract-text.md试一次writer.append()把几个 PDF 合并成一个需要密码保护时装pypdf[crypto]并参考 docs/user/encryption-decryption.md遇到怪文件先查 docs/user/robustness.md再用pypdf.__version__记录版本信息去提问告别逐页拖拽拥抱 Python 自动化——pypdf 已经就位剩下的交给你。【免费下载链接】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),仅供参考