pdfkit Python: Genera PDF desde HTML fácilmente

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿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':                    

Recommendations