¿Qué es PDFKit para Python?
PDFKit es una potente librería de Python que actúa como envoltorio de la utilidad wkhtmltopdf, la cual utiliza el motor WebKit para convertir documentos HTML en archivos PDF. Esta librería permite a los desarrolladores crear documentos PDF profesionales manteniendo maquetaciones complejas, estilos CSS modernos, fuentes incrustadas, gráficos SVG e incluso JavaScript.
La principal ventaja de PDFKit es que permite usar tecnologías web conocidas (HTML, CSS) para crear documentos que luego se convierten a PDF con alta calidad de renderizado. Esto lo convierte en la herramienta ideal para generar informes, facturas, tickets, certificados y otros documentos con contenido dinámico.
Funcionalidades de la librería PDFKit
Tecnologías compatibles
- HTML5 y CSS3 modernos
- Bootstrap, Tailwind CSS y otros frameworks CSS
- Gráficos SVG y fuentes web
- Tablas con formato complejo
- Maquetación con Flexbox y Grid
- Media queries CSS
- Soporte básico de JavaScript
Fuentes de datos para la conversión
PDFKit admite la conversión desde tres fuentes principales:
- URLs de páginas web
- Archivos HTML locales
- Cadenas HTML en memoria de la aplicación
Instalación y configuración
Instalación de la librería Python
pip install pdfkit
Instalación de wkhtmltopdf
Ubuntu/Debian:
sudo apt update
sudo apt install wkhtmltopdf
macOS (con Homebrew):
brew install --cask wkhtmltopdf
Windows: Descarga el instalador desde el sitio oficial https://wkhtmltopdf.org/downloads.html. Hay versiones disponibles para Windows Vista y superiores, tanto de 32 bits como de 64 bits.
CentOS/RHEL/Amazon Linux:
# Para CentOS 7
sudo yum install wkhtmltopdf
# Para versiones más recientes
sudo dnf install wkhtmltopdf
Verificar la instalación
Después de instalar, asegúrate de que wkhtmltopdf esté disponible en el sistema:
wkhtmltopdf --version
Si el comando no se encuentra, deberás configurar la ruta al ejecutable en tu código Python.
Métodos y funciones principales
Crear PDF desde diferentes fuentes
import pdfkit
# Desde una URL
pdfkit.from_url("https://ejemplo.com", "salida.pdf")
# Desde un archivo HTML
pdfkit.from_file("plantilla.html", "salida.pdf")
# Desde una cadena HTML
contenido_html = "<h1>Título</h1><p>Contenido del documento</p>"
pdfkit.from_string(contenido_html, "salida.pdf")
Configurar la ruta de wkhtmltopdf
Si wkhtmltopdf no está en la variable de entorno PATH, puedes indicar la ruta manualmente:
config = pdfkit.configuration(wkhtmltopdf='/usr/local/bin/wkhtmltopdf')
pdfkit.from_string(contenido_html, "salida.pdf", configuration=config)
Generar PDF en memoria
Para usar en aplicaciones web y APIs, a menudo se necesita obtener el PDF como bytes:
# Devuelve el PDF como bytes
pdf_bytes = pdfkit.from_string(contenido_html, False)
# Se puede enviar como respuesta HTTP
from flask import Response
return Response(pdf_bytes, mimetype='application/pdf')
Configuración de parámetros de generación
Opciones básicas de formato
opciones = {
'page-size': 'A4',
'margin-top': '0.75in',
'margin-right': '0.75in',
'margin-bottom': '0.75in',
'margin-left': '0.75in',
'encoding': "UTF-8",
'no-outline': También en la biblioteca
Rate Limiting en PHP: guía completa para limitar solicitudes
Monitoreo de aplicaciones en Rust: bibliotecas y herramientas para el seguimiento del rendimiento
Generador de códigos QR en Kotlin: creación y configuración de códigos QR
Análisis de HTML en Java: bibliotecas Jsoup y HtmlUnit