Convertir HTML a PDF
Sube un único archivo .html y lo imprimimos con Chrome headless en nuestros servidores, incrustando las hojas de estilos, imágenes y fuentes web que estén enlazadas con una URL https absoluta. No hay casilla para URL: todo lo que tu archivo referencie con una ruta relativa no se cargará, así que incrusta esos recursos antes de subirlo.
¡Descarga iniciada!
¿Cómo calificarías tu experiencia con MiConvert?
Qué le pasa a tu HTML
El HTML está pensado para una pantalla que puede desplazarse sin fin y recomponerse a cualquier ancho. Un PDF es justo lo contrario: una instantánea fija que puedes enviar por correo, archivar, firmar o imprimir. Por eso se convierten facturas, confirmaciones de pedido, informes generados, plantillas de correo y artículos guardados, cuando el marcado ya es definitivo y solo falta la versión en papel.
Primero el archivo se limpia con DOMPurify, que elimina los elementos object, embed y applet junto con los atributos de manejadores de eventos en línea. Después se descarga y se incrusta en el documento cada hoja de estilos, imagen, fuente y script http o https que esté en un servidor público, con un techo de 20 MB por recurso y 30 segundos por descarga. Cuando termina la incrustación, se bloquea cualquier otro acceso a la red, la página se carga con una ventana gráfica de 1280 por 900 y Chrome la imprime.
Lo que se imprime es el CSS de pantalla, no el de impresión, así que un bloque @media print se ignora y el PDF queda como se veía la página en la ventana de un navegador. El texto sigue siendo seleccionable, las fuentes se incrustan como subconjuntos y los hipervínculos externos siguen siendo clicables. Lo que se pierde es todo lo que el navegador tenía que construir en tiempo de ejecución: en nuestras pruebas, lo que escribía un script en línea no apareció, de modo que las tablas, los gráficos o las fechas que genere JavaScript van a faltar.
La geometría de la página la decide la longitud y no se puede elegir. El contenido de menos de unas quince páginas Letter se imprime como una sola página tan alta como el contenido y sin márgenes. El contenido más largo se pagina como US Letter con márgenes de media pulgada. Una regla CSS @page size se ignora, así que pedir A4 en la hoja de estilos no cambia nada. Hay una consecuencia que conviene prever: en el modo de página única solo se imprime el material anterior al primer salto de página de CSS, por lo que un documento corto que use page-break-before o break-before pierde todo lo que viene detrás.
Esto le sirve a quien desarrolla y quiere revisar una plantilla de impresión, a quien necesita un recibo o un informe generado en forma de documento, y a quien archiva una página que ya ha guardado como archivo autocontenido.
Cómo convertir HTML a PDF
- Guarda la página como un solo archivo .html. La extensión .htm se rechaza al subir, así que renómbralo a .html antes de empezar, y ten en cuenta que un «Guardar página como» completo, con una carpeta de recursos por separado, no funciona aquí.
- Haz que todos los recursos sean accesibles: enlaces https absolutos en un servidor público, o incrusta el CSS, las imágenes y las fuentes como URI de datos. Las referencias relativas del tipo img/logo.png o las rutas de archivos locales no se pueden resolver, porque lo que subes es un archivo solitario en un directorio temporal.
- Comprueba si algo importante lo dibuja JavaScript. Si es así, copia el marcado ya renderizado desde el inspector de tu navegador y sube eso en su lugar.
- Sube el archivo, o hasta 10 archivos en una misma solicitud con cuentas gratuitas y sin registro, y cada uno generará su propio PDF. Sin cuenta, el límite es de 50 MB por archivo.
- Lanza la conversión. La mayoría de las páginas terminan en unos segundos en esta herramienta; los documentos muy pesados se cortan al llegar al límite de 120 segundos de renderizado y 150 MB de HTML incrustado.
- Descarga el PDF antes de que pasen unas cuatro horas y revisa la paginación, sobre todo si tu marcado contiene saltos de página explícitos.
Detalles del conversor
- Impresión con Chrome headless, así que el HTML5 y el CSS3 modernos, flexbox y grid incluidos, se renderizan igual que los muestra un navegador
- Las hojas de estilos, imágenes y fuentes web remotas enlazadas con URL absoluta se descargan y se incrustan antes de imprimir
- El marcado se limpia y la red se cierra por completo en cuanto acaba la incrustación, por lo que el paso de impresión no puede llamar a ningún sitio
- Los hipervínculos externos siguen siendo clicables y el texto seleccionable, con subconjuntos de fuentes incrustados en el PDF
- Admite documentos de hasta unos 150 MB tras la incrustación y hasta dos millones de etiquetas
- Convierte varios archivos HTML en una sola solicitud, un PDF por archivo
Preguntas sobre HTML a PDF
¿Puedo pegar la URL de una página web?
No. Esta herramienta convierte un archivo que subes, así que no hay campo de URL ni de sitio web. Si quieres capturar una página en vivo, guárdala primero en tu navegador, mantenla como un único archivo .html y asegúrate de que los recursos que necesita sean enlaces https absolutos antes de subirla.
¿Se cargan las hojas de estilos y las imágenes externas?
Sí, cuando son URL http o https absolutas en un servidor público. Cada recurso se descarga con un tope de 20 MB y un límite de 30 segundos, y se incrusta en el documento. Las direcciones en redes privadas o locales no se descargan, y las rutas relativas como ./style.css no se pueden resolver, así que salen sin estilos o como imágenes rotas.
¿Se ejecuta JavaScript?
No cuentes con ello. El acceso a la red se corta antes de imprimir y, en nuestras pruebas, el contenido escrito por un script en línea nunca llegó al PDF. Todo lo que se genere en tiempo de ejecución, incluidos gráficos, salida de plantillas e imágenes con carga diferida, debería quedar fijado en el marcado antes de subir el archivo.
¿Puedo elegir A4, márgenes o saltos de página?
No. Los documentos cortos se imprimen como una sola página tan alta como el contenido y sin márgenes, y los largos se imprimen como US Letter con márgenes de media pulgada. Una regla @page en tu CSS se ignora. Si necesitas A4, vuelve a paginar el PDF terminado con una herramienta de configuración de página.
Usé page-break-before y falta la mitad de mi documento. ¿Por qué?
Es el modo de página única: con contenido corto solo se imprime la parte anterior al primer salto. Hoy no hay opción para cambiar de modo. Una solución práctica es dividir el documento en un archivo .html por sección, convertirlos por lotes y luego unir los PDF.
¿Por qué el PDF no coincide con mi hoja de estilos de impresión?
Porque la página se renderiza con los estilos de pantalla. Un bloque @media print no tiene ningún efecto, incluidos sus trucos de ocultar la navegación o mostrar la URL de los enlaces. Si quieres el diseño de impresión, pasa esas reglas a la hoja de estilos normal o a un bloque de estilos en línea antes de convertir.
La conversión superó el tiempo límite o falló. ¿Qué hago?
Vuelve a intentarlo. Los fallos que vemos en esta combinación son un renderizador que no arrancó dentro de su ventana de 30 segundos y algún cierre inesperado durante la impresión, y ambos suelen resolverse en un segundo intento. Si los fallos persisten, suelen indicar un documento muy grande o muy complejo: recorta el marcado que no uses, reduce las imágenes incrustadas enormes o divide el archivo.
¿Mi archivo es privado y cuánto tiempo se guarda?
La conversión se hace en nuestros servidores a través de HTTPS, no en tu navegador. El HTML subido se borra en el momento en que termina el trabajo, y el PDF se puede descargar mediante un enlace imposible de adivinar durante unas cuatro horas, tras las cuales se elimina automáticamente. Se registran los nombres de archivo, los tamaños y los resultados, y las cuentas con sesión iniciada conservan una entrada en el historial de conversiones.