当前位置:首页>python>别再复制粘贴了!用这个Python库,PDF拆分、合并、加密一键搞定

别再复制粘贴了!用这个Python库,PDF拆分、合并、加密一键搞定

  • 2026-10-11 07:13:24
别再复制粘贴了!用这个Python库,PDF拆分、合并、加密一键搞定

之前安利的 pdfplumber 是不是超好用?

别再复制粘贴了!用这个Python库,PDF表格秒变Excel请相信 小编精选 的魅力~

但如果你只是想把 3 个 PDF 合成 1 个,或者从中抽几页出来——你可能会发现,pdfplumber 的“强大”反而成了负担。

当简单成为优势:为什么安利 pypdf

pypdf 没有 pdfplumber 那么强大的文本提取能力,也没有那些花哨的布局分析功能。但正因为“简单”,它才格外可靠——功能刚好够用,代码一学就会,这才是日常办公摸鱼的刚需:

  • • 🚀 3秒安装:pip install pypdf,没有复杂的系统依赖
  • • 🎯 功能纯粹:合并、拆分、旋转、加密,办公刚需全覆盖
  • • 💪 稳如老狗:处理那些“有问题”的PDF时,反而更少崩溃
  • • 📦 轻到极致:纯Python实现,不拖泥带水

所以,如果你也:

  • • 受够了复杂PDF库的各种报错
  • • 只是想要简单的合并拆分功能
  • • 追求“开箱即用,用完即走”的体验

那么,pypdf可能就是你在找的那个“刚刚好”的选择。

上次让AI“水”了一篇pdfplumber,这次我决定再“摸鱼”一次:于是,你看到了这篇文章。是的,从标题到代码片段,再到这个“职场小剧场”,都是AI的手笔。我只需要在一旁喝着咖啡,偶尔提点“无理要求”~

AI乖乖照做,我继续摸鱼。技术写作的边界?用AI探索才有意思!

接下来,让我们看看这个“轻骑兵”到底有多好用——放心,代码简单到你会怀疑:“这就完了?”

开篇:那个被PDF合并逼疯的下午

上周五下午4点,产品经理甩过来30个PDF文件。

“把这30个pdf合并成一个文件,再按章节拆成5份,下班前给我。”

我看着那堆密密麻麻的文件,眼前一黑。用Acrobat一个个拖拽?手速再快也得半小时。更别提万一顺序错了,还得重头再来。

我默默打开PyCharm,写了几行代码。

3秒,合并完成。5秒,拆分结束。

产品经理看着生成好的文件,眼睛瞪得像铜铃:“你...你什么时候学会变魔术了?”

我笑了笑:“不是魔术,是 pypdf。”

是的,PDF批量处理,本该如此简单。


一、为什么是 pypdf?

说到Python处理PDF,很多人会想到老牌的PyPDF2。但时代变了,兄弟。

pypdf 是PyPDF2的现代继承者,就像iPhone 15对比iPhone 4:

  • • 纯Python实现:一行命令安装,零外部依赖
  • • API更现代:代码更简洁,告别那些拗口的方法名
  • • 功能全覆盖:合并、拆分、旋转、加密,办公需求一网打尽
  • • 维护活跃:PyPDF2已停更,pypdf才是未来

一句话:它是目前Python生态中最轻量、最顺手的PDF操作工具。

二、3行代码搞定PDF合并

先安装(注意库名是单数):

pip install pypdf

然后,见证奇迹的时刻:

from pypdf import PdfWriterwriter = PdfWriter()# 添加多个PDF文件for pdf_file in ["1.pdf", "2.pdf", "3.pdf"]:    writer.append(pdf_file)writer.write("合并结果.pdf")writer.close()

就这么简单,30个文件瞬间变1个。

三、实战:从复杂需求到简单代码

现实中的PDF需求往往没那么“标准”。别怕,pypdf都有解决方案。

场景1:按页拆分(最常用)

from pypdf import PdfReader, PdfWriterreader = PdfReader("大文件.pdf")# 拆成单页PDFfor i, page in enumerate(reader.pages):    writer = PdfWriter()    writer.add_page(page)    with open(f"page_{i+1}.pdf", "wb") as f:        writer.write(f)

场景2:提取指定页面(比如只要第3-5页)

reader = PdfReader("报告.pdf")writer = PdfWriter()# 注意:页码从0开始,左闭右开for page_num in [2, 3, 4]:  # 对应第3-5页    writer.add_page(reader.pages[page_num])writer.write("重要章节.pdf")

场景3:批量处理整个文件夹

from pathlib import Pathwriter = PdfWriter()# 自动读取文件夹下所有PDFfor pdf_path in Path("pdfs").glob("*.pdf"):    writer.append(str(pdf_path))writer.write("批量合并.pdf")

四、进阶:加密与元数据

提取出来的数据,当然要保存成文件:

给PDF加密码(保护敏感文档)

from pypdf import PdfWriterwriter = PdfWriter()writer.append("机密.pdf")# 设置密码(用户密码123,所有者密码admin)writer.encrypt(user_password="123", owner_password="admin")writer.write("加密文件.pdf")

读取文档信息(查户口)

reader = PdfReader("文档.pdf")meta = reader.metadataprint(f"标题:{meta.title}")print(f"作者:{meta.author}")print(f"页数:{len(reader.pages)}")

五、避坑指南:常见问题解决

**问题1:排版混乱

  • • 原因:pypdf对复杂中文PDF支持有限
  • • 解决:提取文本时,换用 pdfplumber

问题2:大文件内存溢出

  • • 原因:默认全量加载
  • • 解决:使用 PdfWriter 的增量写入,或换用 PyMuPDF(fitz)

问题3:页面旋转

# 顺时针旋转90度page = reader.pages[0]page.rotate(90)writer.add_page(page)

六、真实案例:从30分钟到30秒

行政小张之前处理月度报告:

  • • 手动操作:30分钟(还得祈祷别点错)
  • • Adobe订阅版:10分钟(还得等软件启动)
  • • pypdf脚本:30秒(包括喝咖啡的时间)

效率提升60倍,而且零失误。

七、写在最后

工具的意义,就是让我们从重复劳动中解放出来。

下次再遇到PDF合并拆分的需求,别急着拖鼠标,先想想:能不能用代码解决?

代码改变生活,从拒绝手动拖拽开始。

P.S. 小编实测,pypdf在合并拆分场景下稳如老狗,大家快去试试吧!

最新文章

随机文章