O que é o PDFKit para Python
O PDFKit é uma poderosa biblioteca Python que funciona como um wrapper para a ferramenta wkhtmltopdf, utilizando o motor WebKit para converter documentos HTML em arquivos PDF. Esta biblioteca permite que desenvolvedores criem documentos PDF profissionais preservando layouts complexos, estilos CSS modernos, fontes incorporadas, gráficos SVG e até mesmo JavaScript.
A principal vantagem do PDFKit é que ele permite usar tecnologias web familiares (HTML, CSS) para criar documentos que podem ser convertidos em PDF com alta qualidade de renderização. Isso o torna a ferramenta ideal para gerar relatórios, faturas, ingressos, certificados e outros documentos com conteúdo dinâmico.
Funcionalidades da biblioteca PDFKit
Tecnologias suportadas
- HTML5 e CSS3 modernos
- Bootstrap, Tailwind CSS e outros frameworks CSS
- Gráficos SVG e fontes web
- Tabelas com formatação complexa
- Layouts Flexbox e Grid
- Media queries CSS
- Suporte básico a JavaScript
Fontes de dados para conversão
O PDFKit suporta conversão a partir de três fontes principais:
- URLs de páginas web
- Arquivos HTML locais
- Strings HTML na memória da aplicação
Instalação e configuração
Instalação da biblioteca Python
pip install pdfkit
Instalação do wkhtmltopdf
Ubuntu/Debian:
sudo apt update
sudo apt install wkhtmltopdf
macOS (via Homebrew):
brew install --cask wkhtmltopdf
Windows: Baixe o instalador do site oficial https://wkhtmltopdf.org/downloads.html. Versões disponíveis para Windows Vista e superiores, tanto 32-bit quanto 64-bit.
CentOS/RHEL/Amazon Linux:
# Para CentOS 7
sudo yum install wkhtmltopdf
# Para versões mais recentes
sudo dnf install wkhtmltopdf
Verificando a instalação
Após a instalação, verifique se o wkhtmltopdf está disponível no sistema:
wkhtmltopdf --version
Se o comando não for encontrado, será necessário configurar o caminho para o executável no código Python.
Métodos e funções principais
Criando PDF a partir de diferentes fontes
import pdfkit
# A partir de uma URL
pdfkit.from_url("https://exemplo.com", "saida.pdf")
# A partir de um arquivo HTML
pdfkit.from_file("template.html", "saida.pdf")
# A partir de uma string HTML
conteudo_html = "<h1>Título</h1><p>Conteúdo do documento</p>"
pdfkit.from_string(conteudo_html, "saida.pdf")
Configurando o caminho do wkhtmltopdf
Se o wkhtmltopdf não estiver na variável de ambiente PATH, você pode especificar o caminho manualmente:
config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
pdfkit.from_string(conteudo_html, "saida.pdf", configuration=config)
Gerando PDF em memória
Para uso em aplicações web e APIs, muitas vezes é necessário obter o PDF como bytes:
# Retorna o PDF como bytes
pdf_bytes = pdfkit.from_string(conteudo_html, False)
# Pode ser enviado via resposta HTTP
from flask import Response
return Response(pdf_bytes, mimetype='application/pdf')
Configurando parâmetros de geração
Opções básicas de formatação
opcoes = {
'page-size': 'A4',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'no-outline':