CodeGym /Cursos /Python SELF PT /Estilizando textos e cabeçalhos em documentos PDF com Rep...

Estilizando textos e cabeçalhos em documentos PDF com ReportLab

Python SELF PT
Nível 44 , Lição 3
Disponível

1. Fundamentos de adição de texto e cabeçalhos em PDF

No ReportLab o texto é adicionado através do objeto canvas, que oferece métodos para definir fontes, cores, tamanhos e posições do texto.

Criando um PDF simples com cabeçalho e texto

Python

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

# Criando um novo PDF
pdf_file = canvas.Canvas("styled_text.pdf", pagesize=A4)
width, height = A4

# Adicionando um cabeçalho
pdf_file.setFont("Helvetica-Bold", 20)
pdf_file.drawString(100, height - 100, "Relatório de vendas")

# Adicionando o texto principal
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Este documento contém informações sobre vendas do último trimestre.")

# Salvando o PDF
pdf_file.save()

Este código cria um arquivo PDF contendo um cabeçalho e um texto principal. Definimos a fonte e o tamanho do texto usando o método setFont().

2. Estilização e formatação do texto

No ReportLab você pode alterar cor, fonte e tamanho do texto, criando cabeçalhos estilizados e conteúdo principal. Isso ajuda a estruturar o documento e torna a leitura mais fácil.

Alterando a fonte e o tamanho do texto

O ReportLab suporta fontes padrão como Helvetica, Times-Roman e Courier. Você pode especificar o estilo da fonte (normal, negrito ou itálico) e o tamanho, usando setFont().

Python

pdf_file.setFont("Helvetica-Bold", 18)  # Cabeçalho em negrito
pdf_file.drawString(100, height - 50, "Cabeçalho principal")

pdf_file.setFont("Helvetica-Oblique", 14)  # Subtítulo em itálico
pdf_file.drawString(100, height - 80, "Subtítulo: Resultados do trimestre")

Alterando a cor do texto

Você pode alterar a cor do texto usando o método setFillColorRGB(), que aceita valores RGB de 0 a 1.

Python

pdf_file.setFillColorRGB(0.2, 0.4, 0.6)  # Cor azul
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 110, "Este texto está na cor azul.")

Você também pode usar cores predefinidas do reportlab.lib.colors.

Python

from reportlab.lib import colors

pdf_file.setFillColor(colors.red)
pdf_file.drawString(100, height - 140, "Texto vermelho")

3. Alinhamento e texto multilinha

Se o texto for longo, é melhor formatá-lo em várias linhas. O ReportLab fornece a classe TextObject, que suporta quebra automática de linha.

Texto multilinha com TextObject

Python

text = """
O relatório contém uma análise de vendas dos últimos três meses.
Analisamos as mudanças e seu impacto no crescimento geral da empresa.
"""

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)

Este código cria um bloco de texto com várias linhas, cada uma adicionada no PDF. O uso de TextObject é conveniente para texto longo, pois garante formatação automática.

4. Usando parágrafos para estilizar texto

A classe Paragraph do módulo reportlab.platypus permite adicionar texto estilizado com suporte a tags HTML como <b>, <i> e <u>. Paragraph também suporta alinhamento e recuos, o que o torna ideal para criar texto formatado.

Criando parágrafos com Paragraph

Python

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

# Configurando o PDF
doc = SimpleDocTemplate("styled_paragraphs.pdf", pagesize=A4)
styles = getSampleStyleSheet()
elements = []

# Criando um parágrafo com texto em negrito e itálico
text = "Relatório de Vendas
Relatório trimestral de 2023" paragraph = Paragraph(text, styles["Title"]) elements.append(paragraph) # Adicionando o texto principal main_text = """ Este relatório contém os principais dados sobre vendas do último trimestre, além de uma análise do impacto das vendas na receita geral da empresa. """ paragraph = Paragraph(main_text, styles["BodyText"]) elements.append(paragraph) # Gerar o PDF doc.build(elements)

Aqui usamos Paragraph para adicionar texto formatado que inclui tags HTML para estilização (texto em negrito e itálico). getSampleStyleSheet() fornece estilos padrão como Title e BodyText, que podem ser personalizados.

5. Aplicando estilos ao texto

O ReportLab permite criar e personalizar estilos próprios que podem ser usados para formatar texto. Isso é especialmente útil ao criar relatórios que utilizam estilos repetitivos para cabeçalhos, subtítulos e texto principal.

Configurando um estilo personalizado

Python

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

# Configurando o PDF
doc = SimpleDocTemplate("custom_styles.pdf", pagesize=A4)
elements = []

# Criando estilo personalizado
custom_style = ParagraphStyle(
    name="CustomStyle",
    fontName="Helvetica-Bold",
    fontSize=14,
    leading=18,
    textColor=colors.darkgreen,
    spaceAfter=10,
)

# Criando um parágrafo com estilo personalizado
paragraph = Paragraph("Este é um cabeçalho com estilo personalizado", custom_style)
elements.append(paragraph)

# Adicionando texto principal
default_style = ParagraphStyle(
    name="Default",
    fontName="Helvetica",
    fontSize=12,
    leading=14,
    textColor=colors.black,
    spaceAfter=10,
)
paragraph = Paragraph("Este é o texto principal usando o estilo padrão.", default_style)
elements.append(paragraph)

# Gerar o PDF
doc.build(elements)

Neste exemplo criamos um estilo personalizado CustomStyle com texto na cor verde e fonte maior, aplicado ao cabeçalho.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION