1. 了解 PDFPlumber
使用 PDFPlumber 提取表格和复杂结构
PDFPlumber 非常适合从 PDF 中提取数据,尤其是表格和复杂结构(比如列)。它 可以识别并提取用 PyPDF2 难以获取的数据。
安装 PDFPlumber
pip install pdfplumber
使用 PDFPlumber 提取表格
import pdfplumber
with pdfplumber.open("sample_with_table.pdf") as pdf:
for page in pdf.pages:
table = page.extract_table()
if table:
for row in table:
print(row)
此代码从每个 PDF 页面中提取表格,对于处理财务和分析报告非常有用, 因为表格通常包含关键数据。
2. 了解 ReportLab
使用 ReportLab 创建 PDF 报告
如果你想从零开始创建 PDF,例如报告或自动文档, ReportLab 库提供了灵活的选项来构建包含文本、表格、 图片和图表的 PDF。
安装 ReportLab
pip install reportlab
创建简单的 PDF 文档
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# 创建 PDF
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4
# 添加标题
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "销售报告")
# 添加文本
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "本报告包含上个月的销售数据。")
# 保存 PDF
pdf_file.showPage()
pdf_file.save()
此代码创建包含标题和文本的 PDF。它还支持 添加 logo、图片和其他设计元素。
在 PDF 中创建表格
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# 表格数据
data = [
["月份", "销售额"],
["一月", "200"],
["二月", "300"],
["三月", "250"]
]
# 创建包含表格的 PDF
pdf_file = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))
# 构建 PDF
elements = [table]
pdf_file.build(elements)
此代码创建表格并将其保存到 PDF 文件中。使用 ReportLab, 您还可以添加样式、更改颜色、字体大小和格式化文本。
3. 回到 PyPDF2
为什么选择 PyPDF2?
如你所知,PDF 文件几乎是各种文档的标准,从报告到白皮书应有尽有。 但在处理自动化时,从 Python 操作 PDF 可能是一项大挑战。PyPDF2 可以帮你摆脱困境:它允许提取文本、合并和拆分页面,以及 其他许多操作。使用它感觉棒极了,这是每个程序员梦寐以求的工具。
让我们快速看看 PyPDF2 提供的基础功能,这将帮助你应对更复杂的任务。
导入和基本示例
首先,我们需要导入库。就像经典的 `import this`,但现在它可以完成特定任务。
import PyPDF2
一个简单的例子是尝试打开 PDF 文档并读取它。
# 用二进制模式打开文件读取
with open('example.pdf', 'rb') as pdf_file:
# 创建 PDFReader 对象
pdf_reader = PyPDF2.PdfReader(pdf_file)
# 从第一页提取文本
page = pdf_reader.pages[0]
text = page.extract_text()
print(text)
此代码完成了启动所需的一切:打开 PDF 文件,从第一页提取文本并打印。 简单而优雅。
PyPDF2 功能概览
PyPDF2 提供了许多用于处理 PDF 的功能:
- 提取文本:我们已经演示过了。
- 合并 PDF:将多个现有文件合并成一个新文件。
- 拆分页面:提取所需页面并保存为单独的文件。
- 添加注释和评论:这些是真正的高阶功能!
目前你应该对 PyPDF2 的工作原理和功能有一个大致了解。 当然,一节课不可能完全掌握,但我们会逐步学习这库的功能。
反馈与常见错误
通常代码不是一开始就能运行,总会变成 "找 bug 游戏"。
使用 PyPDF2 的最常见错误是错误的文件路径。
确保你的 PDF 文件和脚本在同一目录下,
或者提供全路径。此外,别忘了以二进制模式 ('rb'
) 打开文件,
因为这可以避免编码问题。正如一位聪明的程序员所说,"Bug 不是代码的错误,
它们只是意想不到的特性!"
GO TO FULL VERSION