Gerando PDF em Python
Minha biblioteca favorita é a pdf-reports.
Gerando Relatórios em PDF com Python
Python, com suas extensas bibliotecas e módulos, oferece ferramentas poderosas para gerar relatórios em PDF profissionais. Este guia explora vários métodos para criar documentos PDF usando Python, cobrindo bibliotecas populares como ReportLab, FPDF, Xhtml2pdf, WeasyPrint, Jinja2, pdf-reports e PdfKit.
Faz parte do nosso hub Ferramentas de Documentação em 2026: Markdown, LaTeX, PDF & Fluxos de Impressão.

Por que Gerar Relatórios em PDF com Python?
- Automação: Scripts em Python podem automatizar a geração de relatórios, economizando tempo e reduzindo erros humanos.
- Personalização: Adapte relatórios a necessidades específicas adicionando texto, imagens, tabelas e gráficos.
- Consistência: Garanta a consistência da marca em todos os relatórios com modelos padronizados.
- Versatilidade: Gere faturas, relatórios comerciais, resumos de dados ou qualquer outro tipo de documento.
Bibliotecas Python Populares para Geração de PDF
ReportLab
ReportLab é uma biblioteca versátil que permite criar documentos PDF programaticamente. Suporta a adição de texto, imagens, tabelas e gráficos, tornando-o adequado para vários tipos de relatórios.
Prós:
- Conjunto rico de funcionalidades
- API de alto nível para uso fácil
- Suporta funcionalidades avançadas como anotações e formulários interativos
Contras:
- Curva de aprendizado mais íngreme em comparação com outras bibliotecas
- API menos intuitiva para algumas tarefas
Usando o ReportLab
Instalação: Instale o ReportLab usando o pip:
pip install reportlab
Configuração Básica:
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
# Adicionando Texto:
python c.drawString(100, 800, "Hello World")
# Salvando o PDF:
python c.save()
FPDF
FPDF é uma biblioteca de criação de PDF simples, mas poderosa, escrita em Python puro. É ideal para gerar documentos PDF básicos com código mínimo.
Prós:
- Fácil de aprender e usar
- Leve e rápido
- Suporta caracteres Unicode
Contras:
- Conjunto de funcionalidades limitado em comparação com o ReportLab
- Menor controle sobre a colocação de elementos na página
Usando o FPDF
Instalação: Instale o FPDF usando o pip:
pip install fpdf2
Configuração Básica:
from fpdf import FPDF pdf = FPDF()
# Adicionando Texto:
python pdf.add_page()
pdf.set_font('Arial', 'B', 16)
pdf.cell(40, 10, 'Hello World')
# Salvando o PDF:
python pdf.output('hello.pdf', 'F')
Xhtml2pdf
Xhtml2pdf é um conversor de CSS/HTML para PDF que utiliza o ReportLab nos bastidores. É perfeito para gerar PDFs a partir de modelos HTML, tornando-o uma excelente escolha para conversões da web para PDF.
Prós:
- Converte HTML e CSS para PDF
- Suporta layouts complexos e estilização
- Integra-se bem com frameworks web como Django
Contras:
- Requer conhecimento de HTML e CSS
- Pode não ser adequado para relatórios simples e não baseados na web
Usando o Xhtml2pdf
Instalação: Instale o Xhtml2pdf usando o pip:
pip install xhtml2pdf
Gerando um PDF a partir de HTML: python
from xhtml2pdf import pisa
html = "<h1>Hello World</h1>"
with open('hello.pdf', 'wb') as output_file:
pisa_status = pisa.CreatePDF(html, dest=output_file)
WeasyPrint
WeasyPrint é uma biblioteca Python versátil que permite aos desenvolvedores converter HTML e CSS em documentos PDF com renderização de alta qualidade. É particularmente útil para gerar relatórios, faturas ou qualquer outro documento que exija formatação precisa. Abaixo, vários exemplos demonstram como usar o WeasyPrint em vários cenários.
Funcionalidades
- Converte HTML e CSS em documentos PDF.
- Lida com renderização de dados dinâmicos com a ajuda de motores de modelagem como Jinja2.
Instalação:
pip install weasyprint
Aqui está um exemplo simples de gerar um PDF a partir de uma string HTML:
from weasyprint import HTML
html_string = """
<html>
<head><title>Sample PDF</title></head>
<body>
<h1>Hello, WeasyPrint!</h1>
<p>This is a sample PDF generated using WeasyPrint.</p>
</body>
</html>
"""
HTML(string=html_string).write_pdf("sample.pdf")
Neste exemplo, a classe HTML do WeasyPrint é usada para converter uma string HTML em um arquivo PDF chamado “sample.pdf”.
Carregando HTML de Arquivos
Você também pode carregar conteúdo HTML diretamente de arquivos:
from weasyprint import HTML
# Carrega HTML de um arquivo
HTML('sample.html').write_pdf('output.pdf')
Este método é útil quando você tem seu conteúdo HTML armazenado em um arquivo externo. Usando Folhas de Estilo CSS
WeasyPrint suporta o uso de folhas de estilo CSS para estilizar seus documentos PDF. Veja como aplicar um arquivo CSS:
from weasyprint import HTML
# Carrega HTML e CSS de arquivos
HTML('sample.html').write_pdf('output.pdf', stylesheets=['sample.css'])
Isso permite uma estilização mais complexa, facilitando a criação de PDFs visualmente atraentes.
Jinja2
Jinja2 é um poderoso motor de modelagem para Python que permite gerar conteúdo dinâmico incorporando expressões Python, condicionais e loops dentro de modelos. Este guia o levará através de vários exemplos de uso do Jinja2 em Python, desde a substituição básica de variáveis até funcionalidades mais avançadas como herança de modelos.
Funcionalidades principais do Jinja2
- Um motor de modelagem que pode ser usado em conjunto com WeasyPrint ou ReportLab para gerar conteúdo HTML dinamicamente.
- Ideal para incorporar dados em modelos predefinidos.
- Instalação:
pip install jinja2
Veja exemplos na página oficial da documentação do jinja2: https://jinja.palletsprojects.com/en/3.0.x/
pdfkit
pdfkit é uma biblioteca Python poderosa que simplifica o processo de converter conteúdo HTML em documentos PDF. Atua como um wrapper para a utilidade wkhtmltopdf, aproveitando o WebKit para renderizar páginas HTML com precisão no formato PDF. Este guia o levará através de vários exemplos e casos de uso de geração de PDFs usando pdfkit.
Funcionalidades principais
- Um wrapper Python para wkhtmltopdf, que converte HTML para PDF.
- Requer instalação do wkhtmltopdf em todo o sistema. https://wkhtmltopdf.org/downloads.html
Instalação:
# e certifique-se de que o wkhtmltopdf esteja instalado.
Uso Básico - Convertendo String HTML para PDF
Você pode converter uma string HTML simples em um arquivo PDF usando pdfkit.from_string():
import pdfkit
html_sample = """
<html>
<head><title>Sample PDF</title></head>
<body>
<h1>This is a heading</h1>
<p>First line.</p>
<p>Second line.</p>
<p>Third line.</p>
<p>Fourth line.</p>
</body>
</html>
"""
pdfkit.from_string(html_sample, 'output.pdf')
Isso gerará um arquivo PDF chamado output.pdf no diretório atual.
Convertendo Arquivo HTML Local para PDF
Se você tiver um arquivo HTML armazenado localmente, use pdfkit.from_file():
import pdfkit
pdfkit.from_file('local.html', 'sample.pdf')
Biblioteca PDF Reports (pdf-reports)
Criar relatórios em PDF usando a biblioteca pdf-reports em Python pode ser uma maneira poderosa de gerar documentos com aparência profissional a partir de modelos HTML ou Pug. Esta biblioteca aproveita componentes modernos via o framework Semantic UI e fornece rotinas para incorporar tabelas, gráficos e outros elementos em seus PDFs.
A biblioteca pdf-reports é projetada para criar relatórios em PDF visualmente atraentes a partir de modelos HTML ou Pug. Suporta oficialmente Python 3.x, mas também pode rodar no Python 2.x com a versão apropriada do weasyprint. Isso a torna uma ferramenta versátil para gerar documentos dinâmicos e bem estruturados programaticamente.
Funcionalidades Principais
- Componentes Modernos: Utiliza o framework Semantic UI para componentes com aparência moderna.
- Incorporação de Elementos: Permite incorporar tabelas, gráficos e outros elementos nos PDFs.
- Suporte a Modelos: Suporta modelos HTML e Pug para design de relatórios flexível.
Exemplo de Uso de pdf-reports
Instalação:
pip install pdf-reports
Aqui está um exemplo básico de como usar a biblioteca pdf-reports:
from pdf_reports import PDFReport
# Defina seu arquivo de modelo (template.pug)
template = """
doctype html
html
head
title= title
body
h1= title
p This is a sample report.
"""
# Crie uma instância do relatório PDF
report = PDFReport(template)
# Defina o contexto para o modelo
context = {
'title': 'Sample Report'
}
# Gere o PDF
pdf = report.generate(context, output='sample_report.pdf')
Início na Geração de PDF em Python
Python oferece uma gama de bibliotecas poderosas para gerar relatórios em PDF. Seja para criar faturas, relatórios comerciais ou resumos de dados, essas ferramentas permitem automatizar o processo, personalizar seus documentos e garantir a consistência da marca. Escolha a biblioteca que melhor atende às suas necessidades e comece a criar PDFs profissionais hoje!