Como Gerar Relatórios em PDF com Python (Passo a Passo)

Quer automatizar a criação de relatórios em PDF com Python?

Para gerar relatórios em PDF com Python, use as bibliotecas Pandas (para ler os dados de um CSV ou Excel) e ReportLab (para criar o PDF). Instale com pip install pandas reportlab, percorra as linhas da tabela com um loop for e gere um PDF individual por registro com canvas.Canvas e drawString.

Neste tutorial, você vai aprender a transformar dados de uma planilha do Excel em PDFs personalizados usando Python!

Vamos mostrar como automatizar a criação de relatórios profissionais usando Python, Pandas e ReportLab.

Vamos descobrir como gerar relatórios de horas extras para cada funcionário, gerando PDFs individuais com nome, departamento, horas trabalhadas e mês de referência — tudo com poucas linhas de código!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

O que você aprende neste vídeo

Resposta rápida: A automação usa duas bibliotecas: pandas para ler a base (pd.read_csv) e reportlab para desenhar o PDF (canvas.Canvas + drawString). O caminho que a aula ensina é montar o relatório de uma pessoa até ficar certo e só depois embrulhar tudo num for sobre tabela.index, trocando os valores fixos por tabela.loc[linha, "coluna"].

Neste vídeo (24 min):

  • 2:00 - A regra de ouro de toda automação: escrever antes, em português, o passo a passo que você faria na mão, é isso que vira o esqueleto do código.
  • 4:00 - Instalação das duas de uma vez: pip install reportlab pandas.
  • 5:00 - Os imports: import pandas as pd, from reportlab.pdfgen import canvas e from reportlab.lib.pagesizes import A4.
  • 6:00 - A base entra com tabela = pd.read_csv("horas_extras.csv"), CSV é o formato que quase todo sistema de empresa exporta.
  • 8:00 - O documento em branco nasce de canvas.Canvas(nome_do_arquivo, pagesize=A4), com o nome montado por f-string para sair um PDF por pessoa.
  • 10:00 - Escrever é sempre em dois passos: setFont(fonte, tamanho) e depois drawString(x, y, texto).
  • 12:00 - O ponto (0, 0) do ReportLab é o canto inferior esquerdo, a altura cresce de baixo para cima, o contrário do que a maioria supõe.
  • 13:00 - Uma página A4 tem 595 por 842 pontos; é essa medida que orienta onde cada texto cai.
  • 17:00 - Em vez de digitar cada altura na mão, defina uma variável distancia = 30 e vá subtraindo múltiplos dela: mudar o espaçamento passa a ser um número só.
  • 19:00 - Para repetir, tudo (variáveis, criação e save) entra num for linha in tabela.index.
  • 20:00 - tabela.index é a lista dos números de linha, é ela que faz o laço percorrer a base inteira.
  • 21:00 - Os valores fixos viram tabela.loc[linha, "Nome"]; o nome da coluna tem que ser copiado exatamente como está na base, com acento e espaço.
  • 22:00 - Rodando o laço, saem os 18 PDFs personalizados de uma vez, e o mesmo código serviria para 180.

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

O que você vai ver hoje?

Imagine uma empresa que precisa enviar relatórios mensais de horas extras para dezenas de funcionários.

Fazer isso manualmente no Word ou Excel é demorado e propenso a erros.

Com Python, você automatiza o processo, gerando PDFs profissionais em minutos!

Neste guia prático, você vai:

  • Entender como a automação de relatórios economiza tempo em empresas.
  • Configurar o ambiente com Python e as bibliotecas necessárias.
  • Criar PDFs personalizados a partir de uma planilha CSV.
  • Aplicar dicas avançadas para melhorar a aparência e funcionalidade dos relatórios.
  • Descobrir ideias para adaptar o código a outros casos, como relatórios de desempenho ou folhas de pagamento.

O que você vai precisar?

Antes de começar, certifique-se de ter:

relatórios em pdf com python
Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python

Passo 1: Estrutura do Código

Começamos importando as bibliotecas e carregando os dados do CSV:

Python
import pandas as pd
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

# Importar os dados
tabela = pd.read_csv("horas_extras.csv")

Como funciona?

  • Pandas: Lê o arquivo CSV e organiza os dados em um DataFrame.
  • ReportLab: Biblioteca para criar PDFs, com canvas para desenhar texto e A4 para definir o tamanho da página.
  • tabela: Contém as informações do CSV, como nomes e horas extras.

Passo 2: Criando os PDFs

Para cada funcionário na planilha, geramos um PDF personalizado com um loop for:

Codigo
for linha in tabela.index:
    # Extrair dados
    nome = tabela.loc[linha, "Nome"]
    departamento = tabela.loc[linha, "Departamento"]
    horas_extras = tabela.loc[linha, "Horas Extras"]
    mes_ref = tabela.loc[linha, "Referência"]

    # Criar PDF
    documento_pdf = canvas.Canvas(f"Relatório de Horas Extras {nome}.pdf", pagesize=A4)
    
    # Adicionar conteúdo
    documento_pdf.setFont("Helvetica-Bold", 18)
    documento_pdf.drawString(100, 750, f"Relatório de Horas Extras {nome}")
    
    documento_pdf.setFont("Helvetica", 12)
    documento_pdf.drawString(100, 700, f"Nome: {nome}")
    documento_pdf.drawString(100, 670, f"Departamento: {departamento}")
    documento_pdf.drawString(100, 640, f"Horas Extras: {horas_extras}")
    documento_pdf.drawString(100, 610, f"Mês de Referência: {mes_ref}")
    
    # Salvar
    documento_pdf.save()

Como funciona?

  • O loop percorre cada linha do DataFrame (tabela.index).
  • Extraímos os dados de cada funcionário usando tabela.loc.
  • Criamos um PDF com o nome do funcionário no título (ex.: "Relatório de Horas Extras Ana Souza.pdf").
  • Usamos setFont para definir fontes e tamanhos, e drawString para posicionar o texto na página (coordenadas x=100, y=750, etc.).
  • save() finaliza e salva o PDF.

Dicas Profissionais

  • Posicionamento: As coordenadas (x, y) controlam onde o texto aparece. Por exemplo, (100, 750) coloca o título próximo ao topo da página. Ajuste os valores para centralizar ou reposicionar.
  • Fontes: Além de "Helvetica-Bold", experimente "Times-Roman" ou "Courier" para estilos diferentes. Consulte a documentação do ReportLab para mais opções.
  • Automatização: O loop for cria um PDF por funcionário automaticamente, economizando horas de trabalho manual.

Bônus: Como Melhorar Seu Código

Para tornar seus relatórios ainda mais profissionais:

  • Adicione um logo: Use documento_pdf.drawImage("logo.png", x, y, width, height) para inserir a logo da empresa no topo do PDF.
  • Crie tabelas: Utilize reportlab.platypus para organizar os dados em tabelas, melhorando a legibilidade.
  • Inclua gráficos: Gere gráficos de horas extras por departamento com matplotlib e insira no PDF usando drawImage.

Dica extra: Para PDFs com várias páginas (ex.: relatórios anuais), use documento_pdf.showPage() para criar novas páginas dentro do loop.

Resultado Final

Ao executar o script, você terá arquivos PDF nomeados como:

  • Relatório de Horas Extras Ana Souza.pdf
  • Relatório de Horas Extras Carlos Lima.pdf
  • E assim por diante, um para cada funcionário na planilha.

Cada PDF conterá o nome, departamento, horas extras e mês de referência, formatados de forma clara e profissional.

Perguntas frequentes

1. Quais bibliotecas Python são usadas para criar PDFs?

As mais comuns são o ReportLab, que desenha texto, imagens e tabelas diretamente no PDF, e o Pandas, que lê e organiza os dados de uma planilha CSV ou Excel. Instale ambas com pip install pandas reportlab. Também é possível usar FPDF ou WeasyPrint, dependendo do nível de formatação desejado.

2. Como gerar um PDF diferente para cada linha de uma planilha?

Carregue a planilha com pd.read_csv() e percorra as linhas com for linha in tabela.index. Dentro do loop, extraia os dados com tabela.loc, crie um arquivo com canvas.Canvas() usando o nome do registro, escreva o conteúdo com drawString e finalize com save(). Assim cada registro vira um PDF individual automaticamente.

3. Como posicionar o texto no PDF com o ReportLab?

O ReportLab usa coordenadas (x, y) em pontos, com a origem no canto inferior esquerdo da página. Por exemplo, drawString(100, 750, texto) posiciona o texto perto do topo. Aumentar o valor de y sobe o texto; aumentar x move para a direita. Use setFont para definir fonte e tamanho antes de escrever.

4. Como deixar os relatórios em PDF mais profissionais?

Você pode adicionar a logo da empresa com drawImage(), organizar os dados em tabelas usando o módulo reportlab.platypus e incluir gráficos gerados com matplotlib. Para relatórios de várias páginas, use showPage() dentro do loop para iniciar uma nova página a cada registro ou seção, mantendo a formatação consistente.

Conclusão

Automatizar relatórios em PDF com Python, Pandas e ReportLab é uma habilidade poderosa para empresas que lidam com dados.

Este tutorial te mostrou como transformar uma planilha CSV em relatórios personalizados, economizando tempo e garantindo consistência. Com as dicas e bônus, você pode levar seus relatórios a um novo nível, adicionando logos, tabelas ou gráficos.

Se quiser aprender mais sobre Python com guias práticos como este, confira os outros posts sobre Python no nosso blog!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos