Skip to main content

tu-ong-hoa-tao-pdf-voi-van-ban-va-hinh-anh-bang-python

· 3 min read

Tự Động Hóa Tạo PDF với Văn Bản và Hình Ảnh bằng Python

Giới thiệu

Việc tạo tài liệu PDF từ nhiều nguồn khác nhau, bao gồm văn bản và hình ảnh, là một nhiệm vụ phổ biến trong nhiều lĩnh vực như báo cáo kinh doanh, tài liệu hướng dẫn và trình chiếu. Trong bài viết này, chúng ta sẽ sử dụng Python và thư viện reportlab để tự động tạo một tệp PDF chứa cả nội dung văn bản và hình ảnh.

Công cụ và Thư viện Cần Thiết

Chúng ta sẽ sử dụng các thư viện sau:

  • reportlab để tạo và chỉnh sửa tệp PDF
  • PIL (Pillow) để xử lý hình ảnh

Mã Nguồn

from reportlab.lib.pagesizes import letter, landscape
from reportlab.pdfgen import canvas
from PIL import Image

def create_pdf_from_text_images(text_files, image_files, output_pdf):
# Tạo canvas PDF
c = canvas.Canvas(output_pdf, pagesize=landscape(letter))
width, height = landscape(letter)

for i, text_file in enumerate(text_files):
if i != 0:
c.showPage() # Tạo trang mới cho mỗi tệp văn bản
with open(text_file, 'r', encoding='utf-8') as f:
text = f.read()

# Thêm văn bản vào PDF
c.setFont("Helvetica", 14)
lines = text.split('\n')
y = height - 40
for line in lines:
if y < 40:
c.showPage()
c.setFont("Helvetica", 14)
y = height - 40
c.drawString(40, y, line)
y -= 20

for image_file in image_files:
c.showPage()
img = Image.open(image_file)
img_width, img_height = img.size
aspect_ratio = img_width / img_height

if img_width > width or img_height > height:
if aspect_ratio > 1:
img_width = width
img_height = width / aspect_ratio
else:
img_height = height
img_width = height * aspect_ratio

c.drawImage(image_file, 0, 0, img_width, img_height)

c.save()

# Danh sách các file văn bản và hình ảnh
text_files = ['text1.txt', 'text2.txt']
image_files = ['image1.jpg', 'image2.png']

# Tạo file PDF đầu ra
output_pdf = 'output_presentation.pdf'
create_pdf_from_text_images(text_files, image_files, output_pdf)

Giải Thích Mã

  • Đọc nội dung văn bản từ các tệp .txt và thêm vào PDF.
  • Đảm bảo bố cục trang hợp lý bằng cách xuống dòng khi cần.
  • Thêm hình ảnh vào PDF và điều chỉnh kích thước để phù hợp với khổ giấy.
  • Tạo trang mới khi cần để giữ bố cục rõ ràng.

Ứng Dụng Thực Tế

  • Tạo báo cáo tự động
  • Xuất tài liệu từ hệ thống CMS
  • Tạo bài thuyết trình PDF

Kết Luận

Việc tự động hóa quá trình tạo PDF giúp tiết kiệm thời gian và đảm bảo tính chuyên nghiệp của tài liệu. Bằng cách sử dụng Python, bạn có thể tạo báo cáo, tài liệu hướng dẫn và trình chiếu một cách nhanh chóng và hiệu quả.

Nếu bạn muốn tìm hiểu thêm về Python và xử lý tài liệu, hãy theo dõi blog của chúng tôi để cập nhật các