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
pypdf 是一个纯 Python 实现的 PDF 处理库,支持页面拆分、合并、裁剪与变换,以及文本与元数据提取、图像对象读取和密码加密。核心部分没有强制第三方依赖,一条 pip 命令即可安装,AES 加密、图像提取等高级能力通过可选依赖组按需提供。它适合需要在脚本中批量处理 PDF 的开发者,也适合想快速验证 PDF 操作能力的新手。
快速开始
最小依赖安装命令
pypdf 要求 Python 3.9 及以上版本,可先运行python --version检查。核心安装无强制第三方依赖,在 Python 3.11 及以下环境会自动附带安装typing_extensions:
pip install pypdf在共享服务器等无管理员权限的环境,可加--user参数安装到用户目录:
pip install --user pypdf验证安装与版本
运行以下命令,若输出版本号(本仓库当前为 6.18.1)即安装成功:
python -c "import pypdf; print(pypdf.__version__)"再打开一个本地 PDF 验证读取能力:
from pypdf import PdfReader reader = PdfReader("example.pdf") print(len(reader.pages)) # 页数 print(reader.pages[0].extract_text()[:80]) # 第一页文本页数与文本能正常输出,说明读写、提取两个基本能力都可用。
按需选择功能
可选功能对照表
| 功能需求 | 安装命令 | 额外依赖 |
|---|---|---|
| 读取、合并、拆分、文本提取(默认档) | pip install pypdf | typing_extensions(仅 Python < 3.11) |
| AES 加密 / 解密 | pip install pypdf[crypto] | cryptography > 3.0 |
| 从 PDF 提取图像 | pip install pypdf[image] | Pillow >= 8.0.0 |
| 阿拉伯文等从右到左文本 | pip install pypdf[rtl_text] | arabic-reshaper、python-bidi |
| 字体相关处理 | pip install pypdf[fonts] | fonttools |
| 全部可选能力 | pip install pypdf[full] | 以上全部 |
默认档覆盖绝大多数读写操作,RC4 加解密在默认安装下即可使用;[full]一次性装齐全部可选依赖。生产环境如果关注依赖数量或审计范围,建议按功能组单独安装而不是直接使用full。各选项的完整说明见 安装文档。
一个真实任务跑通
给 PDF 每页添加水印
以 PDF 页面作为水印素材,over=False时水印置于页面背景,True则作为覆盖印章:
from pypdf import PdfReader, PdfWriter stamp = PdfReader("stamp.pdf").pages[0] writer = PdfWriter(clone_from="report.pdf") for page in writer.pages: page.merge_page(stamp, over=False) writer.write("out-watermark.pdf")预期结果是生成out-watermark.pdf,每一页都叠加了背景水印,页面原有内容不变:
如果需要在合并前缩小、旋转或平移水印,改用merge_transformed_page配合Transformation,例如Transformation().scale(0.5)可将水印缩放为原始大小的一半,适用于页面缩放、错位叠加等场景:
参数与变换细节可在 添加印章或水印 文档中查阅。
常见问题与排错
报错排查清单
Q:处理 AES 加密文件时报解密错误,或提示缺少依赖? A:AES 算法需要额外依赖,执行pip install pypdf[crypto]安装即可;仅用 RC4 时默认安装已够用。
Q:打开某个 PDF 时抛出PdfReadError? A:用PdfReader(path, strict=False)切换宽松解析,pypdf 会尽力解析并记录警告,而不是直接抛异常。详见 docs/user/robustness.md。
Q:合并大文件时出现RecursionError? A:提高解释器递归上限即可,例如sys.setrecursionlimit(sys.getrecursionlimit() * 5)。
Q:pip 拒绝安装并提示 Requires-Python? A:pypdf 要求 Python 3.9 及以上,用python --version确认版本;版本过低时先升级 Python 或新建虚拟环境。
Q:如何确认当前安装版本? A:运行python -c "import pypdf; print(pypdf.__version__)"。pypdf 4.0 起每个版本都兼容所有受支持的 Python 版本,常规升级一般无需改动代码。
- 装什么:pypdf 核心(Python 3.9+,无强制第三方依赖),AES 加密、图像提取、RTL 文本为可选依赖组
- 怎么用:
PdfReader负责读取与提取,PdfWriter负责合并、水印与加密,非标准文件可用strict=False兜底 - 去哪看文档:仓库 docs/user/ 目录,其中 installation.md(安装)、merging-pdfs.md(合并)、add-watermark.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),仅供参考