2008-10-06 23 views
35

He estado usando htmldoc por un tiempo, pero me he encontrado con algunas limitaciones bastante serias. Necesito la solución final para trabajar en una caja de Linux. Voy a llamar a esta biblioteca/utilidad/aplicación desde una aplicación Perl, por lo que cualquier interfaz Perl sería una ventaja.¿Cómo puedo automatizar las conversiones de HTML a PDF?

Respuesta

8

PrinceXML es el mejor que he visto (analiza HTML normal y XML/XHTML). ¿Cómo es el mejor? Well, it passes the acid2 test lo que pensé que era bastante impresionante

Es sin embargo, bastante caro

+2

Tuve este mismo problema. Recientemente evalué Prince XML y puedo asegurar que es una aplicación ENORME. La velocidad y la calidad de la salida son simplemente increíbles. – cletus

+0

¿Por qué pagar muchos miles de dólares cuando hay disponible un software gratuito y de código abierto que también supera la prueba de Acid 2? http://weasyprint.readthedocs.io WeasyPrint altamente recomendado. Resultados fenomenales – FlorianB

2

No voy a decir que esta es la "mejor" solución, pero es "una" solución que he usado.

de entrada HTML ->HTML 2 PS ->PS 2 PDF -> PDF de salida

1

Ésta sería una exageración total, pero se podría descargar e instalar mirth. Es un motor de enrutamiento de mensajes, pero tiene la capacidad de convertir html a pdf, por lo que puede configurarlo para recoger un archivo html en una carpeta, convertirlo a PDF y soltar el pdf en la misma carpeta u otra. Como dije, exagerado, un poco de una curva de aprendizaje, pero es gratis, y Java para que puedas ejecutarlo en Linux si quieres. Y toda tu aplicación PERL tendría que hacer es soltar el html a un archivo.

7

Hice un poco de búsqueda en Google para ti y se me ocurrieron dos opciones. Puede haber más, mi estrategia de google fue probar "webkit línea de comando pdf" y "gecko línea de comando pdf", básicamente buscando programas de línea de comandos que incorporen los dos populares motores de código abierto en los procesadores de líneas de comando. Esto es lo que encontré:

Firefox command-line printer - salidas a PDF y PNG

wkpdf - si bien esto es para Mac, es probable que sea muy portátil.

53

este momento para desenterrar este antiguo puesto, pero le salió por primera vez en mi búsqueda de la mejor herramienta de conversión de HTML/PDF. En Linux wkhtmltopdf es muy bueno (tiene en cuenta CSS, entre otros) y GPL.

+0

Para respaldar su punto, 1) funciona como un encanto 2) utiliza el motor de procesamiento webkit y qt, lo que significa que puede beneficiarse de las actualizaciones. Aunque el último RC fue lanzado en febrero de 2011. – kommradHomer

+0

excelente software, gracias – RockScience

+0

Para actualizar el comentario de @ kommradHomer, el proyecto aún está activo; la última versión estable fue lanzada el mes pasado. También está disponible en los repositorios oficiales de Ubuntu, pero al momento de escribir algunas versiones atrás. – Arild

-1

Es posible que desee comprobar el 'Servicio de conversión de documentos' de Peernet (en http://www.peernet.com/conversion-software/batch-document-converter/). Esto se ejecuta como un servicio en un equipo con Windows Desktop o Windows Server. Abre documentos HTML en un navegador web y luego los imprime a través de un controlador de impresión para crear documentos PDF, de modo que el documento PDF producido se vea exactamente como si hubiera impreso el documento HTML desde el navegador.

1

Usted debe echar un vistazo a http://phantomjs.org/

conversión se puede hacer por un pequeño script rasterize.js y luego emitir

phantomjs rasterize.js 'http://en.wikipedia.org/w/index.php?title=Jakarta&printable=yes' jakarta.pdf 
12

WeasyPrint produce buenos archivos PDF con texto seleccionable e hipervínculos.

weasyprint input.html output.pdf 

Si utiliza wkhtmltopdf lugar, pruebe las siguientes opciones:

wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ... 
+0

Esta debería ser la respuesta seleccionada, es gratis, de código abierto, y sí, ¡los resultados son fenomenales! Muy recomendable. – FlorianB

4

hay una nueva modalidad autónoma desde Chrome 59. Como todas las otras soluciones les cuesta mucho más nuevo (o no tan nuevo) Funciones de CSS como flexbox, esta fue en mi caso la única solución para producir una salida PDF adecuada.

Para crear un pdf a partir de un archivo html local simplemente use el siguiente comando: chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html.

Para Mac OS sustituya chrome con /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome.

El único inconveniente que noté hasta ahora es que (actualmente) no se puede pasar el html a través de stdin, pero crear un archivo temporal no es un gran problema.

Para más información ver https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom

Actualización: Como resultado, los chicos de cromo más probable es proporcionar algún tipo de módulo de nodo para esta tarea, que con el tiempo despreciar el modo sin cabeza (https://bugs.chromium.org/p/chromium/issues/detail?id=719921).

La mejor opción sería utilizar el enfoque basado en nodo utilizando el módulo puppeteer como se documenta en https://developers.google.com/web/updates/2017/04/headless-chrome#node e imprimir la página mediante el comando Page.printToPDF, que también permite algunas configuraciones adicionales.

Por supuesto, también puede conectarse al websocket de la consola de depuración desde cualquier otro entorno que no sea el nodo (es decir, el script PHP).