By PDFKits Team — Published February 19, 2026
TL;DR. Convertir HTML a PDF significa elegir dónde se renderiza. El navegador (Ctrl+P → Guardar como PDF) basta para guardar una página puntual. Chrome headless (Puppeteer, Playwright) es la opción correcta para pipelines de producción que generan facturas, informes o etiquetas — renderiza CSS moderno, fuentes web y contenido dinámico con fidelidad porque ES Chrome. Las librerías de servidor (WeasyPrint, wkhtmltopdf, jsPDF) sacrifican soporte CSS a cambio de previsibilidad. Para conversión ad-hoc de una página web o un archivo HTML, herramientas basadas en navegador como PDFKits realizan la conversión localmente sin subir nada. La elección correcta es la que casa con la complejidad de tu HTML.
HTML a PDF parece un problema trivial y resulta depender de lo que se quiere lograr. La primera decisión es el motor de renderizado: Chromium completo (compatible con CSS moderno, fuentes web, flexbox, grid, contenido renderizado por JavaScript) o un motor más ligero (más rápido, más previsible, con peculiaridades en CSS). La segunda es dónde se ejecuta: en navegador (interactivo, un documento por vez), en proceso headless (apto para lote, programable, repetible), o en una librería puramente aislada (sin dependencia de Chromium, ejecutable en servidor mínimo).
Cada ruta tiene su perfil típico. Equipos de marketing y operaciones generando facturas, recibos y etiquetas se inclinan por Chrome headless porque el HTML es complejo y la salida debe ser pixel-perfect. Desarrolladores que entregan documentos desde backend con restricciones (Lambda, contenedor) prefieren WeasyPrint o wkhtmltopdf porque el peso del binario importa. Trabajadores del conocimiento guardando una página web puntual usan el imprimir-como-PDF del navegador porque no requiere configuración.
Una empresa SaaS argentina genera facturas para sus clientes desde una plantilla HTML poblada con datos de pedido, luego renderiza a PDF para envío por email. El equipo usa Puppeteer en un servicio Node.js: cada solicitud de factura devuelve una página HTML del API de facturación, Chrome headless la renderiza y el PDF va al email del cliente y al archivo contable (para cumplir con AFIP). El sistema procesa 2.000+ facturas/mes sin intervención.
El equipo de marketing de una startup B2C en México gestiona landings con A/B tests. Cada variante necesita un snapshot en PDF para el archivo de experimentos — la línea base visual contra la que se ejecutó la prueba. Imprimir-como-PDF basta para casos puntuales; para el flujo estándar usan un script Playwright que toma una URL, espera la carga completa (incluidas fuentes web e imágenes lazy-loaded), guarda el resultado.
Un centro de distribución en Bogotá produce 800–1.200 etiquetas diarias para los repartidores. La API del transportista devuelve el HTML de la etiqueta; el sistema convierte a PDF para impresión térmica. wkhtmltopdf es la elección — rápido, predecible sobre el HTML repetitivo de etiquetas, encaja en la infraestructura Linux existente sin Chromium.
Una reportera en Santiago archiva su material como PDFs — artículos, comunicados de gobierno, publicaciones de redes sociales que quiere citar. Imprimir-como-PDF, a veces combinado con el modo lector de Firefox o Chrome, es la herramienta correcta: un clic, se ve bien, sin subida, sin servicio de terceros. Para páginas con paywall o renderizado complejo, usa las herramientas de PDFKits para limpiar el PDF resultante.
En un litigio mercantil, un abogado en Madrid documenta páginas web en momentos específicos como pruebas. El imprimir-como-PDF se acompaña de URL y fecha visibles en el pie de página (configuración del navegador). Para un valor probatorio más riguroso (presentación como prueba bajo excepciones de oídas), el equipo usa un flujo de pantallazo más metadatos en lugar de "guardar como PDF" — pero para pruebas rutinarias, la impresión del navegador es suficiente.
Abrir la herramienta Crear PDF. Pegar una URL o subir un archivo HTML. Elegir tamaño de página (A4, US Letter, ajustar al contenido), orientación y márgenes. Activar opcionalmente el encabezado/pie con URL y fecha. Clic en Crear. PDFKits renderiza el HTML en tu navegador, produce el PDF y lo ofrece para descarga. El archivo se construye localmente — útil para HTML que contiene datos de cliente que no quieres subir a un convertidor externo.
Para HTML que depende de contenido renderizado por JavaScript, la herramienta carga la página tras la ejecución de JS donde sea posible. Para páginas tras autenticación o paywall, guardar primero el HTML renderizado localmente (clic derecho → Guardar como) y subir el HTML guardado — la conversión usará lo que esté en el archivo.
Mejor para: guardado puntual, periodistas, trabajadores del conocimiento, archivo casual.
Fortalezas: cero configuración, idéntico a lo visto en pantalla, soporta todo CSS y fuentes que soporta el navegador.
Debilidades: no se puede automatizar, los saltos de página pueden ser raros, personalización de encabezado/pie limitada.
Mejor para: pipelines de producción, HTML complejo, CSS moderno, contenido dinámico.
Fortalezas: paridad pixel-perfect con Chrome, soporte CSS y JavaScript completo, lotes scriptables.
Debilidades: binario pesado (Chromium ~150 MB), más lento por documento que herramientas ligeras, requiere entorno con Chrome.
Mejor para: HTML simple en alto volumen (etiquetas, recibos, informes básicos).
Fortalezas: rápido, ligero, ejecutable en cualquier entorno con Qt.
Debilidades: motor WebKit años atrás de Chrome — características CSS modernas (Grid en particular) suelen fallar. Proyecto en mantenimiento; para nuevos despliegues mejor Chrome headless.
Mejor para: generación servidor de documentos en Python, cuando CSS Paged Media es necesario.
Fortalezas: Python puro, sin Chromium, excelente soporte para CSS Paged Media (números de página, encabezados, pies, páginas con nombre).
Debilidades: soporte limitado de JavaScript, más lento que wkhtmltopdf para HTML simple.
Mejor para: generación programática de PDF donde controlas el layout en código.
Fortalezas: lado cliente, sin renderizado HTML — dibujas el PDF directamente. Footprint pequeño.
Debilidades: no es realmente una herramienta HTML a PDF — escribes código para posicionar texto e imágenes, lo cual no es lo que quieres si ya tienes HTML.
| Función | PDFKits | Puppeteer (propio) | Smallpdf | Adobe Acrobat Online |
|---|---|---|---|---|
| Precio | Gratis | Gratis (autoejecutado) | 9 €/mes | 29,99 €/mes |
| Archivos no salen del equipo | Sí | Sí (tu servidor) | No — nube | No — nube |
| CSS moderno (Grid, fuentes) | Sí (browser) | Sí (Chrome) | Sí | Sí |
| Lote / scriptable | No (solo UI) | Sí | Limitado | Limitado |
| Encabezado/pie por página | Básico | Completo (API) | Limitado | Sí |
| Páginas autenticadas | Sí (vía archivo local) | Sí (scriptear auth) | Limitado | Limitado |
| Sin instalación | Sí | No (Node + Chromium) | Sí | Sí |
Para una persona guardando una sola página, PDFKits o imprimir-en-PDF dan el mismo resultado y la misma privacidad. Para un pipeline de producción de miles de documentos diarios, Puppeteer u opción headless equivalente es la única vía viable — ninguna herramienta web ni impresión manual escala.
Colores e imágenes de fondo. Los diálogos de impresión del navegador suelen omitir gráficos de fondo por defecto. Si tu HTML usa fondos de color, activa "Gráficos de fondo" en las opciones de impresión, o pasa printBackground: true a Puppeteer.
Fuentes web que no cargan antes del render. Chrome headless puede empezar a renderizar antes de que las fuentes web estén listas. La solución es page.evaluateHandle('document.fonts.ready') en Puppeteer; en navegador, esperar a que la página cargue (1–2 s) antes de Guardar como PDF.
Control de saltos de página. Usa page-break-before: always, page-break-after: avoid y page-break-inside: avoid (o las propiedades break-* más nuevas) para controlar la paginación. Sin esto, un gráfico o tabla puede partirse a mitad.
Posicionamiento fijo vs absoluto. Los elementos con position: fixed se comportan de forma irregular entre motores — a veces se repiten en cada página, a veces solo en la primera. Probar con contenido multi-página antes de desplegar.
Media queries. Usa @media print para definir estilos específicos para impresión — esconder navegación, expandir contenido colapsado, cambiar a fuentes amigables para impresión. Muchas páginas web se ven mucho mejor en PDF tras añadir unas 20 líneas de hoja de estilos de impresión.
Tres sospechosos: CSS solo para impresión (la página tiene reglas @media print), colores de fondo eliminados por el diálogo de impresión, fuentes web que no se habían cargado al tomar la captura. Verificar la hoja de estilos por reglas @media print, asegurarse de que las fuentes están cargadas antes de convertir.
Sí, pero estando autenticado al momento. Imprimir en PDF funciona directamente. Para conversión programática, el script debe manejar la autenticación — log in para capturar cookies de sesión, luego pasarlas al headless browser antes de navegar.
Imprimir suele capturar solo lo visible. Para páginas con scroll infinito, desplazar al final primero (manual o vía un script) antes de invocar imprimir. Algunos sitios tienen un modo "ver como artículo" o "vista de página única" que evita el problema.
Depende del HTML de entrada. Si tiene etiquetas semánticas adecuadas (encabezados, alt en imágenes, etiquetas ARIA), el PDF suele heredar la estructura como tags. HTML sin etiquetar produce PDF sin etiquetar. Para conformidad PDF/UA completa, postprocesar con Adobe Acrobat Pro.
En Puppeteer: pasar displayHeaderFooter: true con HTML de plantilla para encabezado y pie. En imprimir-navegador: el diálogo tiene opciones para texto de encabezado/pie. Para control total, usar reglas @page de CSS Paged Media con WeasyPrint.
Sí, si están cargadas al momento de la conversión. Las fuentes web referenciadas vía @font-face en la hoja de estilos se incrustan en el PDF por Chrome headless y por la impresión del navegador. Las fuentes locales también se incrustan.
Para una página típica con texto y algunas imágenes, entre 200 KB y 2 MB. Páginas con muchas imágenes de alta resolución pueden superar los 10 MB. Pasar Optimizar PDF al resultado para reducir el tamaño a niveles web-friendly.
No desde una UI — para eso brillan los scripts Puppeteer. Un script Node.js corto puede iterar URLs, convertir cada una, guardar con nombre de archivo razonable. Calcular 1–3 segundos por página en hardware promedio.
Usar el modo lector de la página (Firefox, Edge, Chrome con extensiones) para despejar antes de guardar. O en un script, raspar solo el contenedor del artículo y convertir ese fragmento. Ambos enfoques evitan llevar anuncios y navegación al PDF.
SVG renderiza limpio con convertidores basados en Chrome (Puppeteer, imprimir-navegador). wkhtmltopdf y algunas herramientas viejas rasterizan SVG, produciendo salida borrosa. Si la fidelidad SVG importa, usar convertidor basado en Chrome.
Crear PDF (HTML a PDF) — Convertir URLs y archivos HTML en el navegador. Unir PDF — Combinar páginas convertidas con otros PDFs. Optimizar PDF — Reducir PDFs convertidos grandes para envío. Editar PDF — Edits posteriores a la conversión. Limpiar metadatos — Quitar URL y datos de creador antes de compartir. Números de página — Añadir paginación consistente a exports multi-página.
PDFKits ofrece 45 herramientas PDF gratuitas que funcionan completamente en tu navegador. Sin envío de archivos a servidores, sin registro, sin límites diarios. Este enfoque local hace que PDFKits sea estructuralmente más privado que servicios como Smallpdf o iLovePDF que suben tus documentos para procesarlos — una ventaja esencial para archivos legales, médicos o financieros confidenciales.
Explora otras herramientas PDFKits: Unir PDF, Comprimir PDF, Dividir PDF, Firmar PDF, PDF a Word, Editar PDF, Proteger PDF, OCR PDF. Todas gratuitas y funcionan en tu navegador.