1. Làm quen với PDFPlumber
Trích xuất bảng và cấu trúc phức tạp bằng PDFPlumber
PDFPlumber rất phù hợp để trích xuất dữ liệu từ PDF, đặc biệt là các bảng và cấu trúc phức tạp như cột. Nó cho phép nhận diện và trích xuất dữ liệu mà rất khó lấy được bằng PyPDF2.
Cài đặt PDFPlumber
pip install pdfplumber
Trích xuất bảng bằng 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)
Đoạn code này trích xuất bảng từ từng trang của PDF, điều này rất hữu ích khi xử lý các báo cáo tài chính hoặc phân tích, nơi mà các bảng chứa số liệu quan trọng.
2. Làm quen với ReportLab
Tạo báo cáo PDF với ReportLab
Nếu bạn muốn tạo PDF từ đầu, ví dụ như để báo cáo hoặc tài liệu tự động, thư viện ReportLab cung cấp các chức năng linh hoạt để xây dựng PDF với văn bản, bảng, hình ảnh và biểu đồ.
Cài đặt ReportLab
pip install reportlab
Tạo một tài liệu PDF đơn giản
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# Tạo PDF
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4
# Thêm tiêu đề
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Báo cáo doanh số")
# Thêm văn bản
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Báo cáo này chứa dữ liệu doanh số tháng vừa qua.")
# Lưu PDF
pdf_file.showPage()
pdf_file.save()
Đoạn code này tạo một PDF với tiêu đề và văn bản. Nó cũng cho phép thêm logo, hình ảnh và các thành phần khác để trang trí.
Tạo bảng trong PDF với ReportLab
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# Dữ liệu cho bảng
data = [
["Tháng", "Doanh số"],
["Tháng Một", "200"],
["Tháng Hai", "300"],
["Tháng Ba", "250"]
]
# Tạo PDF với bảng
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),
]))
# Xây dựng PDF
elements = [table]
pdf_file.build(elements)
Đoạn code này tạo bảng và lưu nó vào PDF. Với ReportLab, bạn cũng có thể thêm kiểu dáng, thay đổi màu sắc, kích thước font và định dạng văn bản.
3. Trở lại với PyPDF2
Tại sao là PyPDF2?
Như bạn đã biết, tài liệu PDF gần như là tiêu chuẩn cho mọi loại tài liệu, từ báo cáo cho đến white paper. Nhưng khi nhắc đến tự động hóa, làm việc với PDF trong Python có thể rất đau đầu. PyPDF2 giúp bạn vượt qua khó khăn đó: nó cho phép trích xuất văn bản, gộp và tách các trang, và còn nhiều hơn thế nữa. Làm việc với nó thật sự là một niềm vui. Nói chung, nó giống như một tách cà phê buổi sáng cho coder, nhưng thay vì làm tỉnh táo, nó làm bạn thoải mái!
Hãy điểm qua những chức năng cơ bản mà PyPDF2 cung cấp. Điều này sẽ chuẩn bị cho bạn những thử thách khó hơn, bởi vì bắt đầu dần dần sẽ dễ hiểu hơn.
Import và ví dụ cơ bản
Điều đầu tiên chúng ta cần làm là import thư viện. Giống như `import this` cổ điển, nhưng giờ nó sẽ thực hiện các nhiệm vụ cụ thể.
import PyPDF2
Ví dụ đơn giản, hãy thử mở một tài liệu PDF và đọc nó.
# Mở file ở chế độ nhị phân để đọc
with open('example.pdf', 'rb') as pdf_file:
# Tạo đối tượng PDFReader
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Trích xuất văn bản từ trang đầu tiên
page = pdf_reader.pages[0]
text = page.extract_text()
print(text)
Đoạn code này thực hiện tất cả những gì cần thiết để bắt đầu: mở tài liệu PDF, trích xuất văn bản từ trang đầu tiên và in ra. Đơn giản và hiệu quả.
Tổng quan về chức năng của PyPDF2
PyPDF2 cung cấp nhiều chức năng để làm việc với PDF:
- Trích xuất văn bản: đã được xem xét.
- Gộp PDF: tạo một tài liệu PDF mới bằng cách gộp một số tài liệu hiện có.
- Tách các trang: chọn các trang cần thiết và lưu chúng vào các tệp riêng biệt.
- Thêm chú thích và nhận xét: đây là phần nâng cao nhất!
Ở giai đoạn này, bạn nên có cái nhìn tổng quan về cách PyPDF2 hoạt động và những gì nó cung cấp. Tất nhiên, không thể học hết trong một buổi, nhưng chúng ta sẽ từng bước khám phá những gì thư viện này có thể làm.
Phản hồi và lỗi phổ biến
Thông thường, code không chạy ngay mà mỗi lần học sẽ biến thành "hunt the bug". Lỗi phổ biến nhất khi sử dụng PyPDF2 là đường dẫn tệp sai. Hãy đảm bảo rằng tài liệu PDF của bạn nằm trong cùng thư mục với script hoặc chỉ định đường dẫn đầy đủ. Ngoài ra, đừng quên mở tệp ở chế độ nhị phân ('rb'), vì điều này giúp tránh các vấn đề về mã hóa. Như một lập trình viên thông thái từng nói, "Bug không phải là lỗi trong code của bạn, đó chỉ là những tính năng bất ngờ mà thôi".
GO TO FULL VERSION