
在自动化办公和数据处理场景中,PDF 是一种常见的文档格式。Python 提供了多种库来操作 PDF 文件,常见任务包括 读取、提取文本、提取表格、合并、拆分、旋转、加密/解密 等。
本文将介绍两类主流方案:
pdfplumber:擅长提取文本和表格pypdf(PyPDF2 升级版):擅长结构化操作(合并、拆分、旋转、加密等)pip install pdfplumber
pip install pypdf
pypdf是PyPDF2的继任者,API 更现代化,性能更好。
import pdfplumber
with pdfplumber.open("example.pdf") as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)import pdfplumber
from openpyxl import Workbook
with pdfplumber.open("table.pdf") as pdf:
table = pdf.pages[0].extract_table()
wb = Workbook()
ws = wb.active
for row in table:
ws.append(row)
wb.save("output.xlsx")from pypdf import PdfReader
reader = PdfReader("example.pdf")
print("页数:", len(reader.pages))
print("元数据:", reader.metadata)from pypdf import PdfMerger
merger = PdfMerger()
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.write("merged.pdf")
merger.close()from pypdf import PdfReader, PdfWriter
reader = PdfReader("example.pdf")
for 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)from pypdf import PdfReader, PdfWriter
reader = PdfReader("example.pdf")
writer = PdfWriter()
page = reader.pages[0]
page.rotate(90) # 顺时针旋转90度
writer.add_page(page)
with open("rotated.pdf", "wb") as f:
writer.write(f)from pypdf import PdfReader, PdfWriter
reader = PdfReader("example.pdf")
writer = PdfWriter()
for page in reader.pages:
writer.add_page(page)
writer.encrypt("123456") # 设置密码
with open("encrypted.pdf", "wb") as f:
writer.write(f)问题 | 解决方案 |
|---|---|
提取文本乱码 | 尝试 pdfplumber 或结合 OCR(如 pytesseract) |
表格错位 | 调整 pdfplumber 的 table_settings 参数 |
大文件合并慢 | 分批合并,减少内存占用 |
批量处理 | 使用 glob 遍历文件夹批量操作 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。