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
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().
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.
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.
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
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
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
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.
GO TO FULL VERSION