PyPDF2
PyPDF2 是一个纯 Python 编写的 PDF 工具库,可以读取、分割、合并和转换 PDF 文件。
安装
pip install PyPDF2
读取 PDF 信息
from PyPDF2 import PdfReader
# 读取 PDF 文件
reader = PdfReader('example.pdf')
# 获取页数
print(f"总页数: {len(reader.pages)}")
# 获取 PDF 信息
info = reader.metadata
print(f"标题: {info.get('/Title', '未知')}")
print(f"作者: {info.get('/Author', '未知')}")
print(f"创建者: {info.get('/Creator', '未知')}")
# 读取第一页
page = reader.pages[0]
print(f"第一页内容: {page.extract_text()}")
提取所有文本
from PyPDF2 import PdfReader
def extract_text_from_pdf(pdf_path):
reader = PdfReader(pdf_path)
text = ""
for page in reader.pages:
text += page.extract_text() + "\n"
return text
# 提取文本
text = extract_text_from_pdf('example.pdf')
print(text)
# 保存到文本文件
with open('output.txt', 'w', encoding='utf-8') as f:
f.write(text)
合并 PDF 文件
from PyPDF2 import PdfMerger
# 创建合并器
merger = PdfMerger()
# 添加 PDF 文件
merger.append('file1.pdf')
merger.append('file2.pdf')
merger.append('file3.pdf')
# 或者使用文件对象
with open('file4.pdf', 'rb') as f:
merger.append(f)
# 保存合并后的 PDF
merger.write('merged.pdf')
merger.close()
分割 PDF 文件
from PyPDF2 import PdfReader, PdfWriter
# 读取 PDF
reader = PdfReader('example.pdf')
# 分割:提取前 3 页
writer = PdfWriter()
for i in range(3):
writer.add_page(reader.pages[i])
# 保存
with open('first_3_pages.pdf', 'wb') as f:
writer.write(f)
# 分割:提取特定页面
writer = PdfWriter()
writer.add_page(reader.pages[0]) # 第1页
writer.add_page(reader.pages[2]) # 第3页
writer.add_page(reader.pages[4]) # 第5页
with open('selected_pages.pdf', 'wb') as f:
writer.write(f)
旋转 PDF 页面
from PyPDF2 import PdfReader, PdfWriter
# 读取 PDF
reader = PdfReader('example.pdf')
writer = PdfWriter()
# 旋转所有页面 90 度
for page in reader.pages:
page.rotate(90)
writer.add_page(page)
# 保存
with open('rotated.pdf', 'wb') as f:
writer.write(f)
# 旋转特定页面
writer = PdfWriter()
for i, page in enumerate(reader.pages):
if i == 0: # 第一页旋转 180 度
page.rotate(180)
writer.add_page(page)
with open('rotated_first_page.pdf', 'wb') as f:
writer.write(f)
加密和解密 PDF
from PyPDF2 import PdfReader, PdfWriter
# 加密 PDF
reader = PdfReader('example.pdf')
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
# 添加密码
writer.encrypt('user_password', owner_password='owner_password')
# 保存加密的 PDF
with open('encrypted.pdf', 'wb') as f:
writer.write(f)
# 解密 PDF
reader = PdfReader('encrypted.pdf')
if reader.is_encrypted:
reader.decrypt('user_password')
# 提取解密后的内容
page = reader.pages[0]
print(page.extract_text())
添加水印
from PyPDF2 import PdfReader, PdfWriter
# 读取 PDF 和水印
pdf_reader = PdfReader('example.pdf')
watermark_reader = PdfReader('watermark.pdf')
writer = PdfWriter()
# 为每一页添加水印
watermark_page = watermark_reader.pages[0]
for page in pdf_reader.pages:
page.merge_page(watermark_page)
writer.add_page(page)
# 保存
with open('watermarked.pdf', 'wb') as f:
writer.write(f)
💡 提示:PyPDF2 适合处理简单的 PDF 操作,如合并、分割、提取文本等。对于复杂的 PDF 操作,可以考虑使用 pdfplumber 或 PyMuPDF。