Python处理PDF文件完全指南:PyPDF2库详解
PDF是电子文档中最流行的格式之一。然而,合并、拆分、加密或提取文本等操作需要可靠的工具。在Python生态中,PyPDF2是最受欢迎且稳定的PDF处理库之一。
PyPDF2让开发者能够读取、编辑和创建PDF文件,还能获取元数据、管理页面、添加保护甚至嵌入水印。无论是文档自动化还是与其他服务集成,它都是一个强大的工具。
什么是PyPDF2
PyPDF2是一个用于处理PDF文件的Python库,作为原始PyPDF库的改进版本开发。它提供高级API来读取、写入和修改PDF文档,无需理解PDF格式的内部结构。
核心功能
- 读取并提取PDF文件中的文本
- 合并多个PDF文档
- 将PDF拆分为单独页面
- 添加水印和页面叠加
- PDF文件加密与解密
- 文档元数据操作
- 页面旋转与缩放
- 书签和目录管理
安装PyPDF2
通过pip安装库:
pip install PyPDF2
为获得更稳定的运行,建议同时安装额外依赖:
pip install PyPDF2[crypto]
核心类与组件
PdfReader
PdfReader类用于读取PDF文件,提供对页面、元数据和其他文档信息的访问。
PdfWriter
PdfWriter类用于创建新的PDF文件或修改现有文件,支持添加页面、应用加密和修改元数据。
PdfMerger
PdfMerger类专门用于将多个PDF文件合并为一个文档,并可自定义页面顺序。
PDF基础操作
读取PDF文件
from PyPDF2 import PdfReader
# 加载PDF文件
reader = PdfReader("example.pdf")
# 获取页数
print(f"总页数: {len(reader.pages)}")
# 提取第一页文本
first_page = reader.pages[0]
text = first_page.extract_text()
print(text)
提取所有页面文本
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
full_text = ""
for page_num, page in enumerate(reader.pages):
text = page.extract_text()
full_text += f"--- 第 {page_num + 1} 页 ---\n{text}\n\n"
print(full_text)
检查文档信息
from PyPDF2 import PdfReader
reader = PdfReader("example.pdf")
# 检查是否加密
if reader.is_encrypted:
print("文件已加密")
else:
print("文件未加密")
# 获取第一页尺寸
page = reader.pages[0]
print(f"页面尺寸: {page.mediabox}")
print(f"旋转角度: {page.rotation} 度")
合并PDF文件
简单合并
from PyPDF2 import PdfMerger
merger = PdfMerger()
# 添加文件
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.append("file3.pdf")
# 保存结果
merger.write("merged_document.pdf")
merger.close()
指定页码范围合并
from PyPDF2 import PdfMerger
merger = PdfMerger()