Convirtiendo HTML a PDF.
Al convertir HTML con css a pdf, las personas a menudo se encuentran con problemas, ya sea el procesamiento de fuentes, css-float, los elementos de posicionamiento a problemas con la memoria en el lado del servidor. La pregunta principal es a menudo, ¿cómo realmente necesito escribir CSS para PDF? ¿Tiene algunas características ocultas que harán que todo funcione?
Bueno, la respuesta es que no hay atajos. Algunas bibliotecas harán la mayor parte del trabajo por usted si mantiene html simple, pero cuando necesite cambiar algo a algo más complicado, probablemente encontrará resultados diferentes con el renderizado, el tiempo de conversión, el uso de memoria, etc.
- ¿Qué herramientas y tecnologías se utilizan para construir Squarespace?
- ¿Cuál es la mejor aplicación de productividad para desarrolladores?
- Cómo cargar la página con vista
- ¿Qué tipo de cosas necesito hacer en las bibliotecas de JavaScript y JavaScript si obtengo un trabajo como front-end junior?
- ¿Cómo puedo crear un sistema de publicidad como los anuncios de Facebook con PHP usando el marco Laravel?
La gente a menudo usa convertidores en el lado del servidor porque tiene más bibliotecas, y puede almacenar datos de manera más fácil y directa en un servidor, o pasar encabezados adicionales para mostrar el contenido de PDF en el navegador. No hay muchos convertidores del lado del cliente. Dado que los convertidores son caros si está utilizando HTML simple, sería mejor usar un script del lado del cliente para liberar recursos del servidor. En este ejemplo, solo vamos a examinar los convertidores del lado del servidor.
Empecemos.
Examinaremos el tiempo de conversión, el consumo de memoria y el aspecto visual de algunos renderizadores HTML.
Vamos a usar 3 plantillas en este ejemplo. Uno es bastante simple y los otros dos son más complejos con respecto a la estructura del código, css o la cantidad de datos que deben convertirse. Vamos a calificar los resultados de la escala 1 a 5, 1 es el resultado deficiente y 5 es el resultado excelente. Todas las pruebas se realizaron en la misma máquina (ejecutando Linux OS) un par de veces, y se tomaron resultados promedio para cada grupo de datos. Solo valoraremos los convertidores PDF de código abierto gratuitos
Puede obtener una vista previa de las plantillas HTML que utilizamos en nuestras pruebas
HTML simple
HTML complejo
HTML largo
Instalación
DOMPDF:
(Os: universal, se ejecuta en php) Instalación muy fácil (menos de un minuto). Utiliza el compositor para descargar e instalar dependencias. También tiene un archivo zip si no desea usarlo con el compositor. Es principalmente un motor de diseño y renderización HTML compatible con CSS 2.1 escrito en PHP. Es un renderizador basado en el estilo: descargará y leerá hojas de estilo externas, etiquetas de estilo en línea y los atributos de estilo de elementos HTML individuales. También es compatible con la mayoría de los atributos HTML de presentación.
wkhtmltopdf:
(sistema operativo: Windows, Mac OS, Linux, “SmartOS”, “OpenBSD”). Fácil descarga e instalación, en menos de un minuto. Utiliza el motor de renderizado Qt WebKit. “Estos se ejecutan completamente” sin cabeza “y no requieren una pantalla o servicio de visualización”. En esta demostración vamos a utilizar la versión de 64 bits.
mPDF:
(os: universal, se ejecuta en php). Fácil descarga e instalación, en menos de un minuto. Utiliza el compositor para descargar e instalar dependencias. mPDF es una clase PHP que genera archivos PDF a partir de HTML codificado UTF-8. Se basa en FPDF y HTML2FPDF, con varias mejoras.
TCPDF:
(os: universal, se ejecuta en php). Fácil descarga e instalación, en menos de un minuto. No se requiere dependencia para generar HTML simple. NOTA: Hay una nueva versión de TCPDF en desarrollo, pero estaba teniendo dificultades para ejecutar esta nueva versión de desarrollo.
Entrar en detalles.
Como se ve en los resultados, si va a usar html simple, por ejemplo, facturas simples para generar PDF, probablemente preferirá mpdf. Proporcionó excelentes resultados, con 16 mb de uso, wkhtmltopdf también hizo un trabajo decente, generando en el medio tiempo de mpdf, pero usó el doble de memoria que mpdf. DOMPDF y tcpdf requerirían una optimización html para obtener los resultados deseados.
Para un html complejo definitivamente recomendamos wkhtmltopdf. Aunque utiliza gran cantidad de memoria, los resultados fueron excelentes. Quizás ejecutarlo como un servicio separado es una buena opción, pero eso depende de la frecuencia con la que espere generar archivos PDF complejos. También me llevó un tiempo generar PDF, alrededor de 18 segundos, pero si ese es el costo para tener un resultado excelente, lo tomaré. Mpdf estaba luchando por representar correctamente los tamaños de columna, y carece de algunos detalles de CSS, pero bueno, si no los necesita, también puede vivir con mpdf porque solo usó 23 MB de memoria en comparación con wkhtmltopdf que usaba 108. Otras bibliotecas no son Vale la pena ser mencionado aquí.
En un ejemplo largo, utilizamos html bastante simple, suficiente para generar alrededor de 15 páginas. Peple a menudo necesita generar archivos PDF grandes pero simples. Por ejemplo, alguna exportación de base de datos. Una vez más, wkhtmltopdf y mpdf arrojaron buenos resultados. Wkhtmltopdf se llevó la victoria en velocidad y memoria con solo 654 ms para generar pdf y 21 mb de RAM, mientras que mpdf tardó aproximadamente 7 segundos y un poco más de memoria en 80 mb, ambos arrojaron excelentes resultados. Parece que tcpdf se ejecutaría para siempre, pero alrededor de 2 minutos de ejecución arrojaron buenos resultados con solo 6 MB de RAM, pero ese tiempo es simplemente demasiado para que cualquiera pueda esperar y parece divertido cuando miramos medio segundo para wkhtmltopdf. Dompdf produjo una excepción de memoria, que a menudo es el problema con DOMPDF como puedo ver en stackoverflow.
Vale la pena mencionar que wkhtmltopdf tiene algunas otras características como ejecutar Javascript en su interior, y puede obtener el número de página de wkhtmltopdf donde puede inyectar el número de página en cierto elemento html que elija. También puede proporcionar encabezados y pies de página como en la biblioteca tcpdf. Wkhtmltopdf ofrece aún más variables para jugar con él.
Conclusión.
Aunque los resultados varían de muchas maneras, es seguro decir que mpdf y wkhtmltopdf lo llevarán a donde lo necesita rápidamente y con buenos resultados. Para DOMPDF, le tomará algún tiempo agregar, por ejemplo, fuentes a PDF y satisfacer html para tener un PDF atractivo. Usamos dompdf en algunas representaciones simples, pero rápidamente lo cambiamos a wkhtmltopdf cuando se trata de soluciones más complejas. Por supuesto, quizás haya algunos mejores convertidores de PDF en línea, pero diría que buscando en Google estos convertidores de 4 a 5 pdf se encuentran principalmente en conversaciones.
Detalles y prueba sobre: Cómo transferir eficientemente HTML a PDF – Plava tvornica