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 canvasefrom 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 depoisdrawString(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 = 30e 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 numfor 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?
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:
- Python instalado (versão 3.6 ou superior). Baixe em python.org se necessário.
- Bibliotecas: Instale
pandasereportlabcom o comando:pip install pandas reportlab(se você ainda não conhece o Pandas, descubra o que é, para que serve e como Instalar). - Arquivo de exemplo: Use nosso arquivo
horas_extras.csv, que contém colunas como "Nome", "Departamento", "Horas Extras" e "Referência". Você pode baixá-lo preenchendo o formulário na nossa página.

Passo 1: Estrutura do Código
Começamos importando as bibliotecas e carregando os dados do CSV:
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
canvaspara desenhar texto eA4para 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:
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
setFontpara definir fontes e tamanhos, edrawStringpara 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
forcria 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.platypuspara organizar os dados em tabelas, melhorando a legibilidade. - Inclua gráficos: Gere gráficos de horas extras por departamento com
matplotlibe insira no PDF usandodrawImage.
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!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








