Cách viết tệp PDF bằng Python: Hướng dẫn toàn diện
By JoeVu, at: 20:58 Ngày 30 tháng 11 năm 2023
Thời gian đọc ước tính: __READING_TIME__ minutes


Mở đầu
Python cung cấp một bộ thư viện đa năng để làm việc với các tệp PDF, cho phép các nhà phát triển tạo, sửa đổi và thao tác các tài liệu PDF một cách dễ dàng. Trong hướng dẫn toàn diện này, chúng ta sẽ khám phá các thư viện Python khác nhau để viết tệp PDF, bao gồm các hoạt động cơ bản và giới thiệu khả năng của các thư viện phổ biến như PyPDF2, ReportLab, pdfkit, pdfrw và PyMuPDF.
Có một bài đăng trên blog khác về đọc tệp pdf
1. PyPDF2: Viết PDF cơ bản
Cài đặt: pip install PyPDF2
Ví dụ viết PDF cơ bản:
import PyPDF2
with open('output_pypdf2.pdf', 'wb') as output_file:
pdf_writer = PyPDF2.PdfFileWriter()
# Thêm một trang mới vào PDF
page = pdf_writer.addPage()
# Thiết lập nội dung cho trang
page.mergePage(PyPDF2.PdfReader('input.pdf').getPage(0))
# Mã hóa PDF (tùy chọn)
pdf_writer.encrypt('password')
# Viết PDF đã sửa đổi vào tệp đầu ra
pdf_writer.write(output_file)
Ví dụ này trình bày cách tạo một tệp PDF mới, thêm một trang, thiết lập nội dung của nó và tùy chọn mã hóa PDF bằng PyPDF2.
2. ReportLab: Tạo PDF nâng cao
Cài đặt: pip install reportlab
Ví dụ tạo PDF nâng cao:
from reportlab.pdfgen import canvas
def generate_pdf(file_path):
# Tạo một tài liệu PDF mới
pdf_canvas = canvas.Canvas(file_path)
# Thêm nội dung vào PDF
pdf_canvas.drawString(100, 750, "Hello, ReportLab!")
# Lưu PDF
pdf_canvas.save()
# Tạo PDF bằng ReportLab
generate_pdf('output_reportlab.pdf')
Trong ví dụ này, ReportLab được sử dụng để tạo một tài liệu PDF đơn giản với nội dung văn bản tại các tọa độ được chỉ định.
3. pdfkit: Chuyển đổi HTML sang PDF
Cài đặt: pip install pdfkit
Ví dụ chuyển đổi HTML sang PDF:
import pdfkit
# Chuyển đổi HTML sang PDF
pdfkit.from_file('input.html', 'output_pdfkit.pdf')
pdfkit sử dụng thư viện wkhtmltopdf để chuyển đổi nội dung HTML sang PDF. Trong ví dụ này, chúng ta chuyển đổi một tệp HTML sang một tài liệu PDF.
4. PyMuPDF: Viết PDF với văn bản và hình ảnh
Cài đặt: pip install PyMuPDF
Ví dụ viết PDF với văn bản và hình ảnh:
import fitz # PyMuPDF
def write_pdf_with_text_and_images(file_path):
# Tạo một tài liệu PDF mới
doc = fitz.open()
# Thêm một trang vào PDF
page = doc.newPage()
# Thêm văn bản vào trang
page.insertText((100, 100), "Hello, PyMuPDF!")
# Thêm hình ảnh vào trang
image_path = 'image.jpg'
image_rect = fitz.Rect(100, 200, 300, 400)
page.insertImage(image_rect, filename=image_path)
# Lưu PDF
doc.save(file_path)
doc.close()
# Viết PDF với văn bản và hình ảnh bằng PyMuPDF
write_pdf_with_text_and_images('output_pymupdf.pdf')
Trong ví dụ PyMuPDF này, chúng ta tạo một PDF mới, thêm một trang, chèn văn bản và hình ảnh, và lưu tài liệu kết quả.
5. pdfrw: Viết PDF cấp thấp
Cài đặt: pip install pdfrw
Ví dụ viết PDF cơ bản:
from pdfrw import PdfWriter, PdfDict, IndirectPdfDict
def write_pdf_with_pdfrw(file_path):
# Tạo một tài liệu PDF mới
pdf_writer = PdfWriter()
# Thêm một trang vào PDF
page = PdfDict(
Type='/Page',
Parent=IndirectPdfDict(),
Contents=IndirectPdfDict(stream="q 1 0 0 1 72 720 cm /F1 12 Tf (Hello, pdfrw!) Tj Q"),
)
# Thiết lập kích thước trang
page.MediaBox = [0, 0, 612, 792]
# Thêm trang vào PDF
pdf_writer.pages.append(page)
# Lưu PDF
with open(file_path, 'wb') as output_file:
pdf_writer.write(output_file)
# Viết PDF với pdfrw
write_pdf_with_pdfrw('output_pdfrw.pdf')
Trong ví dụ này, pdfrw
được sử dụng để viết PDF cấp thấp. Chúng ta tạo một tài liệu PDF mới, thêm một trang, thiết lập nội dung của nó (văn bản) và lưu tài liệu kết quả. pdfrw
cung cấp tính linh hoạt để thao tác trực tiếp các đối tượng PDF, làm cho nó phù hợp với các trường hợp cần kiểm soát chính xác cấu trúc và nội dung PDF.
Kết luận
Python cung cấp một hệ sinh thái phong phú các thư viện để viết tệp PDF, mỗi thư viện đáp ứng các nhu cầu và trường hợp khác nhau. Cho dù bạn đang thực hiện các hoạt động cơ bản với PyPDF2, tạo các tài liệu phức tạp với ReportLab, chuyển đổi nội dung HTML với pdfkit, hoặc kết hợp văn bản và hình ảnh với PyMuPDF, bạn có rất nhiều công cụ để sử dụng.
Hãy chọn thư viện phù hợp nhất với yêu cầu cụ thể của bạn và hãy khám phá thế giới tạo và tùy chỉnh PDF với Python. Khi bạn khám phá các thư viện này, bạn sẽ khám phá được sự linh hoạt và sức mạnh mà chúng mang lại cho các dự án liên quan đến PDF của bạn. Chúc bạn lập trình vui vẻ!