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 componenteSpacer(largura, altura)é utilizado para empurrar elementos verticalmente pela página, mantendo o layout limpo e padronizado. - Atributo Obrigatório
leading: Ao alterar o parâmetrofontSizede umParagraphStyle, ajuste sempre oleadingproporcionalmente (geralmente de 20% a 25% maior que o tamanho da fonte) para evitar a sobreposição de linhas de texto.

Comentários
Postar um comentário