J'ai un document HTML (pas XHTML) qui s'affiche bien dans Firefox 3 et IE 7. Il utilise du CSS assez basique pour le style et s'affiche bien en HTML.
Je cherche maintenant un moyen de le convertir en PDF. J'ai essayé :
- DOMPDF : il a eu d'énormes problèmes avec les tables. J'ai factorisé mes grandes tables imbriquées et ça a aidé (avant, ça consommait jusqu'à 128 Mo de mémoire puis plantait - c'est ma limite de mémoire dans php.ini) mais il fait un vrai gâchis des tables et ne semble pas récupérer les images. Les tables étaient juste des choses basiques avec quelques styles de bordure pour ajouter quelques lignes à divers endroits ;
- HTML2PDF et HTML2PS : j'ai en fait eu plus de chance avec cela. Il a affiché certaines des images (toutes les images sont des URL de Google Chart) et la mise en forme du tableau était bien meilleure mais il semblait avoir un problème de complexité que je n'ai pas encore résolu et plantait avec des erreurs de type de nœud inconnu. Je ne sais pas où aller à partir de là ; et
- Htmldoc : cela semble fonctionner correctement sur du HTML basique mais n'a presque aucun support pour le CSS donc vous devez tout faire en HTML (je n'avais pas réalisé qu'on était toujours en 2001 dans le monde de Htmldoc...) donc c'est inutile pour moi.
J'ai essayé une application Windows appelée Html2Pdf Pilot qui a en fait fait un travail assez décent mais j'ai besoin de quelque chose qui fonctionne au minimum sous Linux et idéalement fonctionne à la demande via PHP sur le serveur Web.
Qu'est-ce que j'ignore, ou comment puis-je résoudre ce problème ?
9 votes
Html2Pdf utilise en fait une instance embarquée d'IE pour rendre la page, puis convertit cela en PDF - probablement via le mécanisme d'impression d'IE.
57 votes
Puisque c'est une question de 2008, dompdf est maintenant bien plus mature. ;-)
5 votes
Dompdf prend désormais en charge CSS 2.1 et peut gérer les règles
@import
,@media
et@screen
, et chargera les feuilles de style externes. Il est également livré avec tout ce qui est nécessaire pour fonctionner, même s'il existe des choses que vous pouvez installer pour obtenir de meilleures performances que les bibliothèques par défaut. code.google.com/p/dompdf0 votes
Je suppose que la bonne chose à faire est de demander aux navigateurs de produire le pdf car ils sont les seuls à faire un rendu correct. voir cette question stackoverflow.com/q/25574082/39998
6 votes
Mise à jour 2015: Après avoir examiné de nombreuses options, nous avons décidé d'utiliser wkhtmltopdf, c'est un outil agréable avec lequel nous avons eu des difficultés avec le CSS car nous avons un fichier CSS externe mais nous avons appliqué l'astuce de mettre un lien factice de CSS sur notre élément HTML que nous voulons convertir et en définissant le bon chemin, cela fonctionne comme par MAGIE !!!
0 votes
Autres suggestions dans ce post SO
0 votes
Il y a deux versions de HTML2PDF. L'ancienne version (2009) est liée ici et la version plus récente en français dont je parle dans ma réponse.
0 votes
Voir aussi stackoverflow.com/q/10641667/287948
0 votes
@HendraUzia Malheureusement, dompdf a toujours de gros problèmes avec le rendu des tableaux. Il ajoute des pages vierges dans le document.
0 votes
Voici un tutoriel sur DOMPDF. advancetechtutorial.blogspot.com/2015/09/…
0 votes
Vous pouvez convertir votre html avec styles en un canvas en utilisant html2canvas, puis convertir le canvas en image en utilisant canvasObj.toDataURL("image/jpeg"), ajouter l'image au DOM et passer cela à votre générateur PHP
0 votes
Que diriez-vous d'utiliser Google Chrome, où vous avez la possibilité de enregistrer en tant que pdf à partir de l'option "Imprimer".
0 votes
Vérifiez cette bibliothèque php5 github.com/KnpLabs/snappy facile à utiliser et qui utilise "wkhtmltopdf"
11 votes
Je crois que bientôt tout le monde trouvera Chrome/Chromium headless
chrome --headless --print-to-pdf="chemin/vers/pdf" https://ton_url
comme l'outil de génération de PDF HTML le plus riche, rapide et le plus facile crbug.com/603559 car il prend en charge la plupart des fonctionnalités HTML sur lesquelles les développeurs se reposent dans le développement web et ne pose pas de problèmes avec des scripts complexes comme le font la plupart des autres bibliothèques et outils.0 votes
Tu as raison, Chrome headless devrait bien se rendre, mais il s'exécuterait sur Node, pas sur PHP.
1 votes
Cette question est hors sujet sur SO, mais pertinente sur softwarerecs.SE. Voir Comment puis-je convertir du HTML avec CSS en PDF ?.
0 votes
Cette question me rappelle mes souvenirs de 2010 avec PHP et DOMPDF. :)
0 votes
Dompdf est une autre option. github.com/dompdf/dompdf
0 votes
@Hendra Uzia Pas assez mature... DOM PDF est absolument le pire... je viens de faire un test ultime rapide - Tableau 100% avec 2 colonnes de 50%... avec une IMG dans chacune avec une largeur de 100%... a échoué complètement... et a produit des images miniatures.
0 votes
Je utilise TCPDF. Il est bon, mais il manque la capacité CSS.
0 votes
C'est 2020 et j'ai vraiment du mal à créer quelque chose avec dompdf. Et je ne parle pas de devoir utiliser CSS2. Des choses basiques comme le rendu des tableaux, les flottants ne fonctionnent pas, c'est tout buggé et on se demande pourquoi les bordures vont trop à gauche, ou pourquoi le premier élément n'a pas de bordure. J'essaye de contourner avec des blocs inline et des tables div pour que ça fonctionne.