Lamento desenterrar esta publicación anterior, pero apareció primero 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.
Actualización 2019-05
Afortunadamente, TheCodingMachine empaquetó todo el proceso en una imagen acoplable:https://github.com/thecodingmachine/gotenberg
Esto hace que el mantenimiento y el uso de la generación de PDF basada en Chrome en entornos de producción sean realmente sencillos y sin complicaciones.
Hay un nuevo modo headless desde Chrome 59. Como todas las demás soluciones realmente tienen problemas con las funciones CSS más nuevas (o ya no tan nuevas) 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 puede pasar el html a través de stdin, pero crear un archivo temporal no es un gran problema.
Para obtener más información, consulte https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom
Actualización:resulta que, lo más probable es que los chicos de Chrome proporcionen algún tipo de módulo de nodo para esta tarea, lo que eventualmente dejaría en desuso el modo sin cabeza (https://bugs.chromium.org/p/chromium/issues/detail?id) =719921).
La mejor apuesta sería usar el enfoque basado en nodos usando el módulo de titiritero como se documenta en https://developers.google.com/web/updates/2017/04/headless-chrome#node e imprimir la página a través del comando Page.printToPDF , que también permite alguna configuración adicional.
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, script PHP).
NOTA:Esta respuesta es de 2008 y probablemente ahora sea incorrecta; por favor revisa las otras respuestas
PrinceXML es el mejor que he visto (analiza tanto HTML normal como XML/XHTML). ¿Cómo es el mejor? Bueno, pasa la prueba de acid2 que me pareció bastante impresionante
Sin embargo, es bastante caro
WeasyPrint produce buenos PDF con texto seleccionable e hipervínculos.
weasyprint input.html output.pdf
Si usa wkhtmltopdf
en su lugar, pruebe las siguientes opciones:
wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ...