html performance pdf xhtml wkhtmltopdf

Rendimiento de wkhtmltopdf



performance xhtml (4)

Tenemos la intención de usar wkhtmltopdf para convertir html a pdf, pero nos preocupa la escalabilidad de wkhtmltopdf. ¿Alguien tiene alguna idea de cómo se escala? Nuestra aplicación web podría intentar convertir cientos de miles de html (complejos) por lo que es importante que tengamos alguna idea. ¿Alguien tiene información sobre esto?


En mi experiencia, el rendimiento depende mucho de tus imágenes. Hay muchas imágenes grandes que pueden ralentizar significativamente. De ser posible, trataría de realizar una prueba con una estimación de cuál sería la carga para sus servidores. Algunas personas lo usan para operaciones intensivas, pero nunca he oído hablar de cientos de miles. Supongo que como todo, depende de tu contenido y recursos.

La siguiente cita es directamente de la lista de correo wkhtmltopdf :

Estoy usando wkHtmlToPDF para convertir unos 6000 correos electrónicos por día a PDF. Todo se hace en un servidor quadcore con 4 GB de memoria ... es incluso más que suficiente para eso.

Hay algunos consejos de rendimiento, pero le sugiero que pruebe cuáles son sus cuellos de botella antes de optimizar el rendimiento. Por ejemplo, recuerdo que alguna persona dijo que si era posible, cargar imágenes directamente desde el disco en lugar de tener un servidor web entre ellas puede acelerarlo de manera concisa.

Editar: Añadiendo a esto me divertí jugando con wkhtmltopdf. Actualmente en un Intel Centrino 2 con memoria de 4 Gb genero PDF con 57 páginas de contenido (mixto p, ul, tabla), ~ 100 imágenes y un toc dura consistentemente <7 segundos. También estoy ejecutando Visual Studio, navegador, servidor http y varios otros programas que pueden ralentizarlo. Uso stdin y stdout directamente en lugar de archivos.


Intentamos usar wkhtmltopdf en cualquier implementación. Mis objetos son tablas enormes para los puntos de coordenadas generados. Típicamente el volumen de mi pdf = 500 páginas

Intentamos usar el puerto de wkhtmltopdf a .net. Los resultados son

- Pechkin - Pro: don''t need other app. Contra: slow. 500 pages generated about 5 minutes - PdfCodaxy - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Problems with non unicode text - Nreco - only contra: slow. Slower than pure wkhtmltopdf. Required installed wkhtmltopdf. Incorrect unlock libs after use (for me)

Intentamos utilizar wkhtmltopdf binario invocado desde el código C #.

Pro: easy to use, faster that libs Contra: need temporary files (cannot use Stream objects). Break with very huge (100MB+)html files as like as other libs


wkhtmltopdf --print-media-type es increíblemente rápido. Pero pierdes el estilo CSS normal con eso.

Esta NO puede ser una solución ideal para la exportación de páginas html complejas. Pero funcionó para mí porque mis contenidos html son bastante simples y en forma de tabla.

Probado en la versión wkhtmltopdf 0.12.2.1


Antes que nada, tu pregunta es bastante general; hay muchas variables a considerar al preguntar sobre la escalabilidad de cualquier proyecto. Obviamente, hay una diferencia entre convertir "cientos de miles" de archivos HTML en una semana y esperar hacerlo en un día o una hora. Además de ese HTML "relativamente complejo" puede significar cosas diferentes para otras personas.

Una vez dicho esto, pensé que ya que he hecho algo similar a esto, convertir aproximadamente 450,000 archivos html, utilizando wkhtmltopdf; Yo compartiría mi experiencia.

Aquí estaba mi escenario:

  • 450,000 archivos HTML
    • El 95% de los archivos tenían una página de longitud
    • generalmente contiene 2 imágenes (ruta relativa, sistema local)
    • datos tabulares (a veces contenían tablas anidadas)
    • marcado simple en otro lugar (fuerte, cursiva, subrayado, etc.)
  • Una computadora de escritorio de repuesto
    • 8GB de RAM
    • Procesador Dual Core de 2.4GHz
    • 7200RPM HD

Utilicé un script simple de un solo hilo escrito en PHP, para iterar sobre las carpetas y pasar la ruta del archivo html a wkhtmltopdf. El proceso tomó aproximadamente 2.5 días para convertir todos los archivos, con errores mínimos.

Espero que esto te dé una idea de lo que puedes esperar al utilizar wkhtmltopdf en tu aplicación web. Algunas mejoras obvias vendrían al ejecutar esto en un hardware mejor pero principalmente al utilizar una aplicación de subprocesos múltiples para procesar archivos simultáneamente.