CodeGym /Các khóa học /Python SELF VI /Định dạng văn bản và tiêu đề trong tài liệu PDF bằng Repo...

Định dạng văn bản và tiêu đề trong tài liệu PDF bằng ReportLab

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Cơ bản về thêm văn bản và tiêu đề trong PDF

Trong ReportLab, văn bản được thêm bằng đối tượng canvas, cung cấp các phương pháp để thiết lập phông chữ, màu sắc, kích thước và vị trí của văn bản.

Tạo PDF đơn giản với tiêu đề và văn bản

Python

from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

# Tạo PDF mới
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4

# Thêm tiêu đề
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Báo cáo doanh số")

# Thêm văn bản chính
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Tài liệu này chứa thông tin về doanh số trong quý vừa qua.")

# Lưu PDF
pdf_file.save()

Mã trên tạo một tệp PDF chứa tiêu đề và văn bản chính. Chúng ta thiết lập phông chữ và kích thước văn bản bằng phương pháp setFont().

2. Định dạng và tạo kiểu cho văn bản

Trong ReportLab, bạn có thể thay đổi màu sắc, phông chữ và kích thước văn bản để tạo tiêu đề và nội dung chính phong cách hơn. Điều này giúp tài liệu được cấu trúc tốt hơn và dễ đọc hơn.

Thay đổi phông chữ và kích thước văn bản

ReportLab hỗ trợ các phông chuẩn như Helvetica, Times-RomanCourier. Bạn có thể chỉ định kiểu phông (thường, đậm hoặc nghiêng) và kích thước bằng setFont().

Python

pdf_file.setFont("Helvetica-Bold", 18)  # Tiêu đề với phông chữ đậm
pdf_file.drawString(100, height - 50, "Tiêu đề chính")

pdf_file.setFont("Helvetica-Oblique", 14)  # Phụ tiêu đề với phông chữ nghiêng
pdf_file.drawString(100, height - 80, "Phụ tiêu đề: Kết quả quý")

Thay đổi màu sắc văn bản

Bạn có thể thay đổi màu sắc của văn bản bằng phương pháp setFillColorRGB(), phương pháp này chấp nhận giá trị RGB từ 0 đến 1.

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # Màu xanh
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Văn bản này có màu xanh.")

Bạn cũng có thể sử dụng các màu đã được định sẵn từ reportlab.lib.colors.

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Văn bản màu đỏ")

3. Căn lề và văn bản nhiều dòng

Nếu văn bản dài, tốt hơn là hiển thị nó dưới dạng nhiều dòng. ReportLab cung cấp lớp TextObject, hỗ trợ tự động ngắt dòng.

Văn bản nhiều dòng với TextObject

Python

text = """
Báo cáo chứa phân tích doanh số bán hàng trong ba tháng vừa qua.
Chúng tôi xem xét sự thay đổi và tác động của chúng đến sự tăng trưởng của công ty.
"""

text_object = pdf_file.beginText(100, height - 180)
text_object.setFont("Helvetica", 12)
text_object.setFillColor(colors.darkblue)

for line in text.split("\n"):
    text_object.textLine(line)

pdf_file.drawText(text_object)

Mã này tạo ra một khối văn bản với nhiều dòng, mỗi dòng được thêm vào PDF. Sử dụng TextObject rất tiện lợi cho văn bản dài vì nó hỗ trợ tự định dạng.

4. Sử dụng đoạn văn để định dạng văn bản

Lớp Paragraph từ module reportlab.platypus cho phép thêm văn bản được định dạng với hỗ trợ các thẻ HTML, chẳng hạn như <b>, <i>, và <u>. Paragraph cũng hỗ trợ căn lề và khoảng cách, điều này làm cho nó lý tưởng để tạo văn bản định dạng.

Tạo đoạn văn với Paragraph

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import SimpleDocTemplate, Paragraph

# Cài đặt PDF
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Tạo đoạn văn với văn bản đậm và nghiêng
text = "Báo cáo doanh số
Báo cáo quý năm 2023" paragraph = Paragraph(text, styles["Title"]) elements.append(paragraph) # Thêm văn bản chính main_text = """ Báo cáo này chứa dữ liệu quan trọng về doanh số bán hàng trong quý vừa qua, cũng như phân tích ảnh hưởng của doanh số đến thu nhập tổng thể của công ty. """ paragraph = Paragraph(main_text, styles["BodyText"]) elements.append(paragraph) # Xây dựng PDF doc.build(elements)

Ở đây, chúng tôi sử dụng Paragraph để thêm văn bản được định dạng, bao gồm các thẻ HTML để tạo kiểu (chữ đậm và nghiêng). getSampleStyleSheet() cung cấp các kiểu mẫu cơ bản, như TitleBodyText, có thể được tùy chỉnh.

5. Áp dụng định dạng riêng

ReportLab cho phép bạn tạo và tùy chỉnh phong cách của riêng mình, có thể sử dụng để định dạng văn bản. Điều này đặc biệt hữu ích khi tạo báo cáo có sử dụng kiểu lặp lại cho tiêu đề, phụ đề và văn bản chính.

Tạo phong cách riêng

Python

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import ParagraphStyle
from reportlab.platypus import SimpleDocTemplate, Paragraph

# Cài đặt PDF
doc = SimpleDocTemplate("custom_styles.pdf", pagesize=A4)
elements = []

# Tạo phong cách riêng
custom_style = ParagraphStyle(
    name="CustomStyle",
    fontName="Helvetica-Bold",
    fontSize=14,
    leading=18,
    textColor=colors.darkgreen,
    spaceAfter=10,
)

# Tạo đoạn văn với phong cách riêng
paragraph = Paragraph("Đây là tiêu đề với phong cách riêng", custom_style)
elements.append(paragraph)

# Thêm văn bản chính
default_style = ParagraphStyle(
    name="Default",
    fontName="Helvetica",
    fontSize=12,
    leading=14,
    textColor=colors.black,
    spaceAfter=10,
)
paragraph = Paragraph("Đây là văn bản chính sử dụng phong cách mặc định.", default_style)
elements.append(paragraph)

# Xây dựng PDF
doc.build(elements)

Ví dụ này chúng tôi tạo một phong cách CustomStyle với màu xanh lá cây cho văn bản và phông chữ lớn hơn, áp dụng cho tiêu đề.

6. Tạo tài liệu với tiêu đề và văn bản

Để tài liệu PDF có cấu trúc, bạn có thể tạo báo cáo nhiều trang với các phần, mỗi phần có tiêu đề và văn bản được định dạng riêng.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION