Comment puis-je automatiser HTML vers PDF conversions?
J'ai été en utilisant htmldoc pendant un certain temps, mais j'ai des assez sérieuses limites. J'ai besoin de la solution de travailler sur une machine Linux. Je vais appeler cette bibliothèque/utilitaire/application à partir d'une application Perl, de sorte que toute les interfaces Perl serait un bonus.
Vous devez vous connecter pour publier un commentaire.
PrinceXML est la meilleure que j'ai vu (il analyse régulière HTML et XML/XHTML). Comment est-il le meilleur? Eh bien, il passe le test acid2 j'ai pensé que c'était vachement impressionnant
Il est cependant assez cher
Désolé de déterrer ce vieux post, mais il est sorti en premier dans ma quête de la meilleure HTML/PDF outil de conversion.
Sur Linux wkhtmltopdf est très bonne (en tenant compte des CSS, entre autres) et GPL.
wkhtmltopdf
est génial. mais il ne supporte pas de flex zone de style.WeasyPrint produit agréable fichiers Pdf avec une sélection de texte et de liens hypertexte.
Si vous utilisez
wkhtmltopdf
au lieu de cela, essayez l'une des options suivantes:Mise à jour 2019-05
L'ensemble du processus a heureusement été emballé dans un menu fixe de l'image par TheCodingMachine: https://github.com/thecodingmachine/gotenberg
Cela rend l'entretien et de l'utilisation de chrome en fonction de la génération des pdf dans les environnements de production très lisse et hazzle gratuit.
Il y a un nouveau headless mode depuis Chrome 59. Comme toutes les autres solutions ont vraiment du mal avec les nouveaux (ou pas tellement plus nouvelles) fonctions CSS comme flexbox, c'était dans mon cas, la seule solution pour produire un bon de sortie au format PDF.
Pour créer un fichier pdf à partir d'un fichier html local suffit d'utiliser la commande suivante:
chrome --headless --disable-gpu --print-to-pdf file:///path/to/myfile.html
.Pour Mac OS substitue
chrome
avec/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
.Le seul inconvénient que j'ai remarqué jusqu'à présent, c'est que (pour l'instant) vous ne pouvez pas passer le html via stdin, mais la création d'un fichier temporaire n'est pas un problème.
Pour plus d'informations, voir https://developers.google.com/web/updates/2017/04/headless-chrome#create_a_pdf_dom
Mise à jour: Comme il s'avère, le chrome gars vont probablement fournir une sorte de nœud module pour cette tâche, qui finirait par la rendre caduque le headless mode (https://bugs.chromium.org/p/chromium/issues/detail?id=719921).
Le meilleur pari serait d'utiliser le nœud de base en utilisant l'approche de marionnettiste
module comme indiqué sous https://developers.google.com/web/updates/2017/04/headless-chrome#node et l'impression de la page via la Page.printToPDF de commande, qui permet à certains de configuration supplémentaires, aussi.
Bien sûr, vous pouvez vous connecter à la console de débogage websocket partir de n'importe quel autre environnement que le nœud (i.e. script PHP), trop.
J'ai fait un peu de recherche sur google pour vous et est venu avec deux options. Il y a peut-être plus, mon google stratégie était d'essayer "webkit ligne de commande pdf" et "gecko de ligne de commande pdf", en gros la recherche de la ligne de commande de programmes qui intègrent les deux open source populaires des moteurs de rendu en ligne de commande de moteurs. Voici ce que j'ai trouvé:
Firefox en ligne de commande de l'imprimante - sorties au format pdf et png
wkpdf - bien que ce soit pour mac, il est probablement assez portable.
Je ne vais pas prétendre que c'est la "meilleure" solution, mais c'est une "solution" que j'ai utilisé.
D'Entrée HTML --> HTML 2 PS --> PS 2 PDF --> le fichier PDF de Sortie
Ce serait total exagéré, mais vous pouvez télécharger et installer la gaieté. C'est un message de routage moteur, mais il a la capacité de convertir le html en pdf, de sorte que vous pouvez l'installer pour ramasser un fichier html dans un dossier, de le convertir en pdf, et déposez le fichier pdf dans le même ou dans un autre dossier. Comme je l'ai dit, overkill, un peu d'une courbe d'apprentissage, mais c'est gratuit, et de java, de sorte que vous pouvez l'exécuter sous linux, si vous le souhaitez. Et tous vos perl application aurait à faire est de déposer le code html dans un fichier.
Vous devriez jeter un oeil à http://phantomjs.org/
La Conversion peut être faite par un petit script rasterize.js puis d'émettre
Vous pouvez installer le logiciel gratuit Calibre, et l'utilisation de la
ebook-convert
utilitaire de ligne de commande, il a, pour convertir de nombreux documents html en un seul format epub ou pdf.https://manual.calibre-ebook.com/generated/en/ebook-convert.html
Idée vient à partir d'ici
Je ne l'ai pas utilisé, mais ce module npm encapsule ce processus comme mon script bash, mais probablement mieux 😉
Pour moi, sur mon mac, j'utilise la suite script bash pour convertir html en local sur votre site web en fichier PDF:
convert_html_to_pdf.sh
Une solution alternative qui n'a pas été répondu ici est d'utiliser une API.
Que l'avantage, c'est que vous externaliser les ressources nécessaires pour le travail et avoir une date de service qui met en œuvre les dernières fonctionnalités (pas besoin de mettre à jour le code, ou d'installer des corrections de bugs).
Par exemple, avec PDFShift, vous pouvez le faire avec une seule requête POST à:
Et en passant le
"source"
(soit une URL ou d'un code HTML brut), et vous en obtiendrez un fichier PDF en format binaire. (Disclaimer: je travaille à PDFShift).Voici un exemple de code en Python:
Et le PDF sera situé à ./wikipedia.pdf
J'ai trouvé Electroshot pour être favorable moderne fonctionnalités CSS, particulièrement mise en page. Ce fut après avoir lutté avec wkhtmltopdf à montrer son âge dans ne supportant pas les choses comme CSS3.
De Electroshot caractéristiques description:
J'ai été en mesure d'utiliser Bootstrap 4 pour la conception d'une page, et ensuite utiliser Electroshot de rendre un PDF très ressemblant étroitement à l'HTML/CSS.
Vous pourriez vouloir vérifier 'Service de Conversion de documents" par Peernet (à http://www.peernet.com/conversion-software/batch-document-converter/). Cela fonctionne comme un service sur un Bureau de Windows ou de Windows Server machine. Il ouvre des documents HTML dans un navigateur web, puis de les imprimer grâce à un pilote d'impression pour créer des documents PDF, ainsi que le document PDF produit est exactement comme si vous aviez imprimé le document HTML à partir du navigateur.