pypdf 安装与上手指南:5 行代码搞定 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
周五下午五点,共享盘里堆着 12 份部门周报,下班前要合并成一个 PDF,还得逐页盖上“机密”水印。与其在 PDF 工具里拖拽页面,不如写两分钟 Python 脚本——这是 pypdf 能做的事:一个纯 Python 实现的 PDF 库,负责拆分、合并、裁剪、变换 PDF 页面,顺带处理文本提取和加密。它免费开源,文件在本地处理,数据不出你的电脑。
pypdf 是什么,适合谁
pypdf 核心几乎零依赖(Python 3.9+ 下仅带一个类型回退包),安装干净,适合办公自动化、文档流水线、需要批量处理 PDF 的场景。它和常见方案的区别如下:
| 对比项 | pypdf | Adobe Acrobat | 在线转换工具 |
|---|---|---|---|
| 成本 | 免费开源 | 付费订阅 | 免费但有文件限制 |
| 自动化 | 脚本批量处理 | 手动操作为主 | 单文件上传 |
| 隐私 | 本地处理 | 本地处理 | 文件上传到服务器 |
| 可定制性 | 完全可编程 | 定制有限 | 无 |
30 秒装好 pypdf 并验证
先说结果:执行完下面这条命令,你当前环境里就多了一个可用的 pypdf。
pip install pypdf环境要求:Python 3.9+,运行python --version确认,低于 3.9 先升级 Python。
装好后,随便找个有 PDF 文件的目录跑这段验证:
import pypdf from pypdf import PdfReader print(pypdf.__version__) # 输出版本号 reader = PdfReader("example.pdf") print(len(reader.pages)) # 输出页数终端打印出版本号和一个数字,就装好了。如果看到ModuleNotFoundError,通常是没激活虚拟环境,先source xxx/bin/activate再跑。
按需加料
只装加密组件
文档需要 AES 级加密解密时,核心包不够,补装 crypto 选项:
pip install pypdf[crypto]它会引入 cryptography 依赖;如果你只做基础 RC4 加密,核心包已经够用,不用装。
图片提取与右起文字
pip install pypdf[image]装 Pillow,用来提取和处理页面里的图像;pip install pypdf[rtl_text]支持阿拉伯语等从右到左的文本。拿不准会用到什么就pip install pypdf[full]一次装全,生产环境建议只装真正用到的。
没有管理员权限怎么装
共享服务器上执行pip install --user pypdf,装进用户目录即可;想隔离依赖就python -m venv pdf_env建虚拟环境,激活后再安装,互不污染。
完整跑一遍:合并并加水印
需求:给一份文档的每一页盖上水印,输出新文件,原文件保持不动:
from pypdf import PdfReader, PdfWriter src, dst = PdfReader("doc.pdf"), PdfReader("watermark.pdf") writer = PdfWriter() for page in src.pages: # 逐页处理 page.merge_page(dst.pages[0]) # 叠加水印页 writer.add_page(page) with open("output.pdf", "wb") as f: writer.write(f)运行后打开 output.pdf,每页都应出现水印,页数和内容不变。如果报文件找不到,检查相对路径;旋转、定位等更多水印写法见官方加水印教程。
常见问题
- pip 提示找不到匹配版本:多半是 Python 低于 3.9,用
python --version核对。 - 打开加密 PDF 直接报错:文件带密码,先
reader.decrypt("密码")再操作。 - 怎么升级:
pip install --upgrade pypdf。pypdf 保持向后兼容,但 2.x 到 3.x 有过破坏性变更,升级前看一眼迁移指南。 - 提取的文本乱码:通常是字体没有内置编码映射,属字体问题,先看提取文本文档的说明。
下一步
官方文档里合并、裁剪、表单的教程都整理好了。建议第一次动手就试:写个脚本把一份 50 页的报告按章节拆成独立文件。
【免费下载链接】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),仅供参考