Como Gerar Relatórios em PDF do Zero em Python Usando o ReportLab

Como Gerar Relatórios em PDF do Zero em Python Usando o ReportLab

A biblioteca reportlab permite criar e manipular arquivos PDF diretamente no Python sem depender de softwares externos ou da conversão de páginas HTML. Essa solução é ideal para a geração dinâmica de relatórios financeiros, notas fiscais, certificados e faturas de forma leve, rápida e automatizada.

Python
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle

def gerar_relatorio_pdf(caminho_saida="relatorio.pdf"):
    # Configura a estrutura do documento no formato Letter (padrão 8.5 x 11 polegadas)
    pdf = SimpleDocTemplate(caminho_saida, pagesize=letter)
    elementos = []

    # Carrega a folha de estilos padrão da biblioteca
    estilos = getSampleStyleSheet()

    # Criação de um estilo customizado para o título
    estilo_titulo = ParagraphStyle(
        'TituloPersonalizado',
        parent=estilos['Title'],
        fontSize=20,
        leading=24,
        textColor='#1A365D',
        spaceAfter=12
    )

    # Adiciona elementos de texto e espaçamento ao relatório
    elementos.append(Paragraph("Relatório Mensal de Desempenho", estilo_titulo))
    elementos.append(Spacer(1, 15))
    
    corpo_texto = """
    Este relatório foi gerado automaticamente via Python. O uso do ReportLab 
    permite formatar textos, ajustar margens e criar documentos dinâmicos com alta performance.
    """
    elementos.append(Paragraph(corpo_texto, estilos['Normal']))

    # Compila a lista de elementos e constrói o arquivo PDF no disco
    pdf.build(elementos)
    print(f"Relatório salvo com sucesso em: {caminho_saida}")

# Exemplo de uso prático
if __name__ == "__main__":
    gerar_relatorio_pdf()
  • Estrutura com Platypus (SimpleDocTemplate): O módulo Platypus organiza o fluxo do documento automaticamente em páginas, gerenciando margens e quebras de linha sem a necessidade de calcular coordenadas (x, y) manualmente para cada texto.

  • Gerenciamento de Estilos (ParagraphStyle): Permite criar classes de formatação reusáveis definindo fonte, tamanho (fontSize), espaçamento entre linhas (leading), alinhamento e cores em código hexadecimal ou RGB.

  • Uso de Parâmetros de Espaçamento (Spacer): O componente Spacer(largura, altura) é utilizado para empurrar elementos verticalmente pela página, mantendo o layout limpo e padronizado.

  • Atributo Obrigatório leading: Ao alterar o parâmetro fontSize de um ParagraphStyle, ajuste sempre o leading proporcionalmente (geralmente de 20% a 25% maior que o tamanho da fonte) para evitar a sobreposição de linhas de texto.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server