之前安利的 pdfplumber 是不是超好用?
别再复制粘贴了!用这个Python库,PDF表格秒变Excel请相信 小编精选 的魅力~
但如果你只是想把 3 个 PDF 合成 1 个,或者从中抽几页出来——你可能会发现,pdfplumber 的“强大”反而成了负担。
pypdf 没有 pdfplumber 那么强大的文本提取能力,也没有那些花哨的布局分析功能。但正因为“简单”,它才格外可靠——功能刚好够用,代码一学就会,这才是日常办公摸鱼的刚需:
pip install pypdf,没有复杂的系统依赖所以,如果你也:
那么,pypdf可能就是你在找的那个“刚刚好”的选择。

上次让AI“水”了一篇pdfplumber,这次我决定再“摸鱼”一次:于是,你看到了这篇文章。是的,从标题到代码片段,再到这个“职场小剧场”,都是AI的手笔。我只需要在一旁喝着咖啡,偶尔提点“无理要求”~
AI乖乖照做,我继续摸鱼。技术写作的边界?用AI探索才有意思!

接下来,让我们看看这个“轻骑兵”到底有多好用——放心,代码简单到你会怀疑:“这就完了?”
上周五下午4点,产品经理甩过来30个PDF文件。
“把这30个pdf合并成一个文件,再按章节拆成5份,下班前给我。”

我看着那堆密密麻麻的文件,眼前一黑。用Acrobat一个个拖拽?手速再快也得半小时。更别提万一顺序错了,还得重头再来。
我默默打开PyCharm,写了几行代码。
3秒,合并完成。5秒,拆分结束。
产品经理看着生成好的文件,眼睛瞪得像铜铃:“你...你什么时候学会变魔术了?”
我笑了笑:“不是魔术,是 pypdf。”
是的,PDF批量处理,本该如此简单。
说到Python处理PDF,很多人会想到老牌的PyPDF2。但时代变了,兄弟。
pypdf 是PyPDF2的现代继承者,就像iPhone 15对比iPhone 4:
一句话:它是目前Python生态中最轻量、最顺手的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都有解决方案。
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)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")from pathlib import Pathwriter = PdfWriter()# 自动读取文件夹下所有PDFfor pdf_path in Path("pdfs").glob("*.pdf"): writer.append(str(pdf_path))writer.write("批量合并.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:排版混乱
pdfplumber问题2:大文件内存溢出
PdfWriter 的增量写入,或换用 PyMuPDF(fitz)问题3:页面旋转
# 顺时针旋转90度page = reader.pages[0]page.rotate(90)writer.add_page(page)行政小张之前处理月度报告:
效率提升60倍,而且零失误。

工具的意义,就是让我们从重复劳动中解放出来。
下次再遇到PDF合并拆分的需求,别急着拖鼠标,先想想:能不能用代码解决?
代码改变生活,从拒绝手动拖拽开始。
P.S. 小编实测,pypdf在合并拆分场景下稳如老狗,大家快去试试吧!