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。它還支持添加標誌、圖像和其他格式化元素。
使用 ReportLab 在 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:創建一個新的 PDF 文件,合併多個現有文件。
- 分割頁面:提取指定頁面並存儲為單獨文件。
- 添加批註與評論:這已經是高級操作了!
到這個階段,你應該對 PyPDF2 的工作方式和提供的功能有一個概覽。當然,一堂課無法掌握全部,但我們將一步步探索這個庫的潛力。
反饋與常見錯誤
通常程式碼不會一次就運行成功,每次學習都像是在 "找蟲子"。使用 PyPDF2 時最常見的錯誤之一是文件路徑不正確。確保你的 PDF 文件位於與腳本相同的目錄,或者提供完整的路徑。此外,別忘了以二進制模式 ('rb'
) 打開文件,這有助於避免編碼問題。正如某位智慧的程式員所說:"Bug 不是程式碼中的錯誤,而只是預料之外的功能。"
GO TO FULL VERSION