PyPDF2,一个超酷的 Python 库!
点击上方卡片关注我
设置星标 学习更多技能
在日常工作中,经常需要处理PDF文件,比如提取文本内容、合并多个PDF文档、分割大型PDF文件或者添加水印等操作。PyPDF2是Python中一个功能强大的PDF处理库,它提供了纯Python实现的PDF文件读写功能,无需依赖外部程序。PyPDF2可以帮助开发者轻松实现PDF文件的读取、写入、合并、分割、加密等操作,是处理PDF文档的理想选择。
安装
PyPDF2的安装非常简单,使用pip包管理器即可完成安装:
pip install PyPDF2
安装完成后,可以通过以下代码验证是否安装成功:
import PyPDF2print(PyPDF2.__version__)
如果能够正常输出版本号,说明安装成功。
核心特性
-
纯Python实现:无需安装额外的系统依赖,跨平台兼容性好 -
PDF读取:可以读取PDF文件的元数据、页数、文本内容等信息 -
PDF合并:支持将多个PDF文件合并为一个文件 -
PDF分割:可以从PDF中提取特定页面或分割成多个文件 -
PDF加密:支持为PDF文件添加密码保护 -
页面旋转:可以旋转PDF页面的方向
基本功能
1、读取PDF文件信息
读取PDF文件是最基础的操作,通过PyPDF2可以轻松获取PDF的页数、作者、标题等元数据信息。在需要批量处理PDF文件或者建立文档管理系统时非常有用。
下面的示例展示了如何打开一个PDF文件并读取其基本信息,包括总页数和文档元数据。
from PyPDF2 import PdfReader# 打开PDF文件reader = PdfReader('example.pdf')# 获取页数print(f'总页数: {len(reader.pages)}')# 获取元数据metadata = reader.metadataprint(f'标题: {metadata.title}')print(f'作者: {metadata.author}')
2、提取文本内容
从PDF中提取文本是常见需求,比如需要分析PDF文档内容、建立搜索索引或进行数据挖掘,PyPDF2提供了简单的API来提取每一页的文本内容。
需要注意的是,对于图片型PDF或扫描件,PyPDF2无法直接提取文字,需要配合OCR技术使用。
from PyPDF2 import PdfReaderreader = PdfReader('example.pdf')# 提取第一页的文本page = reader.pages[0]text = page.extract_text()print(text)# 提取所有页面的文本all_text = ''for page in reader.pages: all_text += page.extract_text()print(all_text)
3、合并PDF文件
在实际工作中,经常需要将多个PDF文件合并成一个文档,比如合并多个报告章节、整合扫描的文档等。
PyPDF2的PdfWriter类提供了强大的合并功能,可以按照指定顺序将多个PDF文件合并,并保存为新文件。
from PyPDF2 import PdfWriter, PdfReader# 创建PDF写入对象writer = PdfWriter()# 添加多个PDF文件pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']for pdf_file in pdf_files: reader = PdfReader(pdf_file)for page in reader.pages: writer.add_page(page)# 保存合并后的PDFwith open('merged.pdf', 'wb') as output_file: writer.write(output_file)
高级功能
1、分割PDF文件
当PDF文件过大或需要提取特定章节时,分割功能就显得尤为重要。
下面的示例展示了如何从一个大型PDF中提取指定页面范围,创建新的PDF文件。
from PyPDF2 import PdfWriter, PdfReaderreader = PdfReader('large_file.pdf')writer = PdfWriter()# 提取第1-5页for page_num in range(0, 5): writer.add_page(reader.pages[page_num])# 保存分割后的PDFwith open('split_pages.pdf', 'wb') as output_file: writer.write(output_file)
2、PDF加密
为PDF文件添加密码保护是保护敏感信息的重要手段,PyPDF2支持为PDF文件设置用户密码和所有者密码,可以限制文档的打开、编辑、打印等权限。
from PyPDF2 import PdfWriter, PdfReaderreader = PdfReader('example.pdf')writer = PdfWriter()# 复制所有页面for page in reader.pages: writer.add_page(page)# 添加密码保护writer.encrypt(user_password='user123', owner_password='owner456')# 保存加密的PDFwith open('encrypted.pdf', 'wb') as output_file: writer.write(output_file)
3、页面旋转
有时PDF页面的方向不正确,需要进行旋转调整,PyPDF2提供了页面旋转功能,可以将页面按90度的倍数进行旋转,确保文档的正确显示。=
from PyPDF2 import PdfWriter, PdfReaderreader = PdfReader('example.pdf')writer = PdfWriter()# 旋转第一页90度page = reader.pages[0]page.rotate(90)writer.add_page(page)# 保存旋转后的PDFwith open('rotated.pdf', 'wb') as output_file: writer.write(output_file)
总结
PyPDF2是Python生态中一个非常实用的PDF处理库,它提供了丰富的功能来满足日常PDF文件处理需求。通过本文的介绍,我们了解了PyPDF2的安装方法、主要特性以及各种实用功能。从基础的读取和文本提取,到高级的合并、分割、加密和旋转操作,PyPDF2都能轻松应对。虽然PyPDF2在处理某些复杂PDF格式时可能存在局限性,但对于大多数常规PDF处理任务来说,它已经足够强大且易于使用。掌握PyPDF2,可以大大提高我们处理PDF文档的效率,实现文档处理流程的自动化。
💡推荐阅读
如果在编程工具充值使用上遇到麻烦,推荐一个牛逼的中转工具!一次性搞定 Codex 、Claude Code和 gemini,内容介绍和付费兑换详见文末阅读原文。


实测 4 个爆火 Skill,一句话生成画布/知识库/任务规划/自动发布
从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)
出海建站必备:告别AI味,这两个页面设计 Skills 太牛了!
夜雨聆风
