Désolé de déterrer ce vieux post, mais il est sorti premier dans ma recherche du meilleur outil de conversion HTML/PDF. Sous Linux wkhtmltopdf est très bon (prend en compte CSS, entre autres) et GPL.
Mise à jour 2019-05
L'ensemble du processus a heureusement été emballé dans une image docker par TheCodingMachine :https://github.com/thecodingmachine/gotenberg
Cela rend la maintenance et l'utilisation de la génération de PDF basée sur Chrome dans les environnements de production vraiment fluides et sans tracas.
Il y a un nouveau mode sans tête depuis Chrome 59. Comme toutes les autres solutions ont vraiment du mal avec des fonctionnalités CSS plus récentes (ou plus si nouvelles) comme flexbox, c'était dans mon cas la seule solution pour produire une sortie PDF correcte.
Pour créer un pdf à partir d'un fichier html local, utilisez simplement la commande suivante :chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html
.
Pour Mac OS, remplacez chrome
avec /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
.
Le seul inconvénient que j'ai remarqué jusqu'à présent est que (actuellement) vous ne pouvez pas transmettre le code HTML via stdin, mais la création d'un fichier temporaire n'est pas vraiment un problème.
Pour plus d'informations, consultez https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom
Mise à jour :Il s'avère que les gars de Chrome fourniront très probablement une sorte de module de nœud pour cette tâche, ce qui finira par déprécier le mode sans tête (https://bugs.chromium.org/p/chromium/issues/detail?id =719921).
Le mieux serait d'utiliser l'approche basée sur les nœuds en utilisant le puppeteermodule comme documenté sous https://developers.google.com/web/updates/2017/04/headless-chrome#node et d'imprimer la page via la commande Page.printToPDF , ce qui permet également une configuration supplémentaire.
Bien sûr, vous pouvez également vous connecter au socket Web de la console de débogage à partir de n'importe quel autre environnement que le nœud (c'est-à-dire le script PHP).
REMARQUE :cette réponse date de 2008 et est probablement maintenant incorrecte ; merci de vérifier les autres réponses
PrinceXML est le meilleur que j'ai vu (il analyse le HTML normal ainsi que le XML/XHTML). Comment est-ce le meilleur ? Eh bien, il passe le test acid2 que j'ai trouvé très impressionnant
C'est cependant assez cher
WeasyPrint produit de beaux PDF avec du texte et des hyperliens sélectionnables.
weasyprint input.html output.pdf
Si vous utilisez wkhtmltopdf
essayez plutôt les options suivantes :
wkhtmltopdf --margin-bottom 20mm --margin-top 20mm --minimum-font-size 16 ...