Gerando PDF em Python

Minha biblioteca favorita é a pdf-reports.

Conteúdo da página

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.

python on the report

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

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!

Assinar

Receba novos artigos sobre sistemas, infraestrutura e engenharia de IA.