pypdf:纯 Python 的 PDF 处理库
pypdf:纯 Python 的 PDF 处理库
pypdf 在 GitHub 上已经拿到 10,022 Star 了。
这个纯 Python 写的 PDF 库,干的是拆分、合并、提取、加密这些脏活累活。不用装任何外部依赖,pip 安装直接就能用。对于不想引入重型工具链、只需要在 Python 里简单操作 PDF 的人来说,它是个务实的选择。
1、这玩意儿是干嘛的
就做一件事:用纯 Python 代码读写 PDF 文件。
拆分 PDF、合并多个文件、裁剪页面、旋转页面、提取文字、读写元数据、加密码加密解密。全部在 Python 里完成,不需要调用外部程序或者装系统级的库。这意味着你在 Windows 上能跑的脚本,放到 Linux 服务器上一样能跑,不用操心编译环境或者动态链接库的版本问题。

2、为什么要用它
处理 PDF 是个老大难问题。商业库收费,其他开源方案要么依赖 C 扩展装起来麻烦,要么功能残缺只支持读取不能写入。
pypdf 走了一条不一样的路:纯 Python 实现,零外部依赖。跨平台不会踩编译的坑,Windows、macOS、Linux 上表现一致。代码量可控,出了问题读源码就能定位。
版本 3.1.0 之后做了大量重构和改进,API 设计比早期版本清晰很多。社区维护也比较活跃,StackOverflow 上有专门的标签,GitHub Discussions 里能找到不少使用示例。
对于只需要做常规 PDF 操作的人来说,它够用了。
3、能做什么

拆分和合并是最常用的功能。把一份几百页的 PDF 按章节拆开,或者把几份扫描件合成一本,几行代码就能搞定。合并时还可以调整页面顺序,插入空白页。
文本提取支持从页面中抽出纯文字内容,方便后续做检索或者灌进 NLP 管线。虽然复杂排版的 PDF 提取效果取决于文件本身的结构,但对于常规文档来说够用了。
页面变换包括裁剪、旋转、缩放,适合做打印前的版面调整。比如把 A4 页面裁成发票尺寸,或者把横版页面转成竖版。
加密解密可以给 PDF 加上打开密码,限制打印或复制权限。支持标准的 PDF 加密算法,AES 加密需要额外安装 crypto 扩展。
自定义数据和查看选项允许在 PDF 里嵌入额外信息,或者指定打开时的缩放比例、页面布局。这个对于生成需要特定阅读体验的报告或电子书比较有用。
4、安装使用
安装一行命令:
pip install pypdf
如果需要 AES 加密解密,多装一个扩展:
pip install pypdf[crypto]
读取 PDF 提取文字:
from pypdf import PdfReader
reader = PdfReader("example.pdf")
number_of_pages = len(reader.pages)
page = reader.pages[0]
text = page.extract_text()
pypdf 还支持更多操作,比如合并多个文件、拆分指定页面范围、添加注释、解密受密码保护的文档、调整页面尺寸。具体用法可以参考官方文档里的示例。
测试覆盖也比较全,项目里带了 230 多个测试用例,用 pytest 可以直接跑。
5、适合哪些人用
- 需要在 Python 里自动化处理 PDF 的开发者
- 做文档管线、需要拆分合并或提取文本的工程师
- 不想引入重型依赖、希望代码可移植的项目
- 做数据分析或 NLP、需要从 PDF 里抽文本做预处理的人

浙公网安备 33010602011771号