page contents

PyPDF2 库,用于在 Python 中处理 PDF 文件

要是你平时工作里碰到过那种一堆 PDF 文件要拆开、合并、加水印的情况,你就知道那味儿有多酸爽。 以前我用过一些桌面工具,点半天鼠标不说,还老卡。后来我发现,Python 的 PyPDF2 库真是个救星。轻量、不依赖 GUI,一行命令就能把几十页的 PDF 拆得干干净净。

attachments-2025-10-aHPZUgX668f2ecb54d1cf.png要是你平时工作里碰到过那种一堆 PDF 文件要拆开、合并、加水印的情况,你就知道那味儿有多酸爽。 以前我用过一些桌面工具,点半天鼠标不说,还老卡。后来我发现,Python 的 PyPDF2 库真是个救星。轻量、不依赖 GUI,一行命令就能把几十页的 PDF 拆得干干净净。

安装也特别简单:

pip install PyPDF2

装完之后,导入就行:

from PyPDF2 import PdfReader, PdfWriter

拆分 PDF:就像切西瓜一样简单

举个例子吧,我有个 report.pdf,一共 10 页,但我只想要前 3 页。用 PyPDF2 分分钟搞定:

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("report.pdf")

writer = PdfWriter()

for i in range(3):  # 拆出前3页

    writer.add_page(reader.pages[i])

with open("report_part.pdf", "wb") as f:

    writer.write(f)

这里的逻辑特别清晰:PdfReader 负责读文件,PdfWriter 负责写文件。reader.pages[i] 就是每一页的对象,你要哪页就取哪页。

合并多个 PDF:像拼积木那样

有时候公司发文档是一堆散页文件,a.pdf、b.pdf、c.pdf。你需要拼成一个完整报告,那 PyPDF2 也能轻松搞定:

from PyPDF2 import PdfMerger

merger = PdfMerger()

merger.append("a.pdf")

merger.append("b.pdf")

merger.append("c.pdf")

merger.write("merged.pdf")

merger.close()

这里用的是 PdfMerger,它比 PdfWriter 更方便合并,append() 可以直接加多个文件。 顺序问题自己控制,哪一个先加就哪一个在前面。

提取文本:别再手动复制粘贴了

有一次我需要从一个 50 页的 PDF 合同里提取关键条款,手动复制真要崩溃。 后来用 PyPDF2 的 extract_text(),一分钟不到搞定:

from PyPDF2 import PdfReader

reader = PdfReader("contract.pdf")

text = ""

for page in reader.pages:

    text += page.extract_text()

print(text[:500])  # 打印前500个字符看看效果

不过有一点要注意:PyPDF2 的文本提取依赖 PDF 的编码结构, 有些扫描件(其实是图片)提不出文字,这时候就得用 pytesseract 这种 OCR 库配合用了。

加个水印:稍微高级一点的玩法

比如公司要求所有导出的 PDF 文件都得带上水印,PyPDF2 也能直接搞:

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("source.pdf")

watermark = PdfReader("watermark.pdf")

writer = PdfWriter()

for page in reader.pages:

    page.merge_page(watermark.pages[0])  # 合并水印

    writer.add_page(page)

with open("output_with_watermark.pdf", "wb") as f:

    writer.write(f)

原理就是把两页叠在一起。 如果你的水印文件是透明背景的 PDF 效果最好, 否则就会挡住正文,看起来像盖了个实心章。

加密和解密:保护文件的小技巧

有时候发 PDF 文件不想别人随便打开,也可以加个密码:

from PyPDF2 import PdfReader, PdfWriter

reader = PdfReader("confidential.pdf")

writer = PdfWriter()

for page in reader.pages:

    writer.add_page(page)

writer.encrypt("mypassword")

with open("confidential_locked.pdf", "wb") as f:

    writer.write(f)

加密后的文件用 mypassword 才能打开。 如果要解密,只要这样:

reader = PdfReader("confidential_locked.pdf")

reader.decrypt("mypassword")

小结

PyPDF2 虽然不是什么特别大的库,但真的是实用得一塌糊涂。 日常工作里,它能帮你处理几乎所有 PDF 相关的需求: 合并、拆分、加水印、提文本、加密、解密。

不过要注意的是,它主要适合“结构化 PDF”, 如果是那种纯扫描件、表格类文档,可能就得配合其他库一起用了。 但总的来说,轻量又简单,能救你于“鼠标点击地狱”之中。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-10-18 09:26
  • 阅读 ( 25 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1479 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 1479 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章