J'ai un document HTML (pas XHTML) qui s'affiche correctement dans Firefox 3 et IE 7. Il utilise un CSS assez basique pour le styliser et s'affiche correctement en HTML.
Je cherche maintenant un moyen de le convertir en PDF. J'ai essayé:
- DOMPDF : il y avait d'énormes problèmes avec les tables. J'ai pris en compte mes grandes tables imbriquées et cela a aidé (avant de consommer jusqu'à 128 Mo de mémoire, puis de mourir - c'est ma limite de mémoire dans php.ini), mais cela crée un désordre complet des tables et ne semble pas images. Les tableaux n'étaient que des éléments de base avec quelques styles de bordure pour ajouter des lignes à différents points;
- HTML2PDF et HTML2PS : En fait, j'ai eu plus de chance avec ça. Il a rendu certaines des images (toutes les images sont des URL de graphiques Google) 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 a continué à mourir avec des erreurs node_type () inconnues. Je ne sais pas où aller d'ici; et
- Htmldoc : cela semble bien fonctionner sur le HTML de base mais n'a pratiquement aucun support pour CSS, donc vous devez tout faire en HTML (je ne savais pas que c'était encore 2001 en Htmldoc-land ...) donc ça ne me sert à rien.
J'ai essayé une application Windows appelée Html2Pdf Pilot qui a fait un travail assez décent, mais j'ai besoin de quelque chose qui fonctionne au minimum sur Linux et fonctionne idéalement à la demande via PHP sur le serveur Web.
Qu'est-ce qui me manque ou comment puis-je résoudre ce problème?
@import
,@media
et des@screen
règles, et charge feuilles de style externes. Il est également livré avec tout ce qui est nécessaire pour qu'il fonctionne, bien qu'il y ait des choses que vous pouvez installer pour obtenir de meilleures performances que les bibliothèques par défaut. code.google.com/p/dompdfchrome --headless --print-to-pdf="path/to/pdf" https://your_url
outil de génération html en pdf le plus riche, le plus rapide et le plus simple, crbug.com/603559, car il prend en charge la plupart des fonctionnalités html, les développeurs s'appuient sur le développement Web et ne craignent pas les scripts complexes comme la plupart des autres les bibliothèques et les outils le font.Réponses:
Important: veuillez noter que cette réponse a été écrite en 2009 et qu'elle n'est peut-être pas la solution la plus rentable aujourd'hui en 2019. Les alternatives en ligne sont meilleures aujourd'hui qu'elles ne l'étaient à l'époque.
Voici quelques services en ligne que vous pouvez utiliser:
Jetez un œil à PrinceXML .
C'est certainement le meilleur convertisseur HTML / CSS en PDF, bien qu'il ne soit pas gratuit (mais bon, votre programmation peut ne pas être gratuite non plus, donc si cela vous fait gagner 10 heures de travail, vous êtes à la maison gratuitement (car vous devez également tenir compte du fait que les solutions alternatives vous obligeront à configurer un serveur dédié avec le bon logiciel)
Oh oui, ai-je mentionné qu'il s'agit de la première (et probablement la seule) solution HTML2PDF qui utilise ACID2 complet ?
Échantillons PrinceXML
la source
Jetez un oeil à
wkhtmltopdf
. Il est open source, basé sur webkit et gratuit.Nous avons écrit un petit tutoriel ici .
EDIT (2017):
Si c'était pour construire quelque chose aujourd'hui, je n'irais plus dans cette voie.
Mais utiliserait plutôt http://pdfkit.org/ .
Probablement le dépouillant de toutes ses dépendances nodejs, pour s'exécuter dans le navigateur.
la source
Après quelques recherches et une épilation générale, la solution semble être HTML2PDF . DOMPDF a fait un travail terrible avec des tableaux, des bordures et même une mise en page moyennement complexe et htmldoc semble raisonnablement robuste mais est presque complètement ignorant du CSS et je ne veux pas revenir à la mise en page HTML sans CSS juste pour ce programme.
HTML2PDF a semblé le plus prometteur mais j'ai continué à avoir cette erreur étrange au sujet des arguments de référence null à node_type. J'ai finalement trouvé la solution à cela. Fondamentalement, PHP 5.1.x a bien fonctionné avec des remplacements regex (preg_replace_ *) sur des chaînes de toute taille. PHP 5.2.1 a introduit une directive de configuration php.ini appelée pcre.backtrack_limit . Ce que ce paramètre de configuration fait limite la longueur de chaîne pour laquelle la correspondance est effectuée. Pourquoi cela a été introduit, je ne sais pas. La valeur par défaut a été choisie comme 100 000. Pourquoi une valeur si basse? Encore une fois, aucune idée.
Un bug a été soulevé contre PHP 5.2.1 pour cela , qui est toujours ouvert près de deux ans plus tard .
Ce qui est horrible à ce sujet, c'est que lorsque la limite est dépassée, le remplacement échoue silencieusement . Au moins, si une erreur avait été signalée et enregistrée, vous auriez une indication de ce qui s'est passé, pourquoi et quoi changer pour y remédier. Mais non.
J'ai donc un fichier HTML de 70k à transformer en PDF. Il nécessite les paramètres php.ini suivants:
Maintenant, le lecteur astucieux a peut-être remarqué que mon fichier HTML est plus petit que 100 Ko. La seule raison pour laquelle je peux deviner pourquoi j'ai rencontré ce problème est que html2pdf effectue une conversion en xhtml dans le cadre du processus. Peut-être que cela m'a pris le dessus (bien que près de 50% de ballonnement semble étrange). Quoi qu'il en soit, ce qui précède a fonctionné.
Maintenant, html2pdf est un porc de ressources. Mon fichier de 70k prend environ 5 minutes et au moins 500-600M de RAM pour créer un fichier PDF de 35 pages. Pas assez rapide (de loin) pour un téléchargement en temps réel, malheureusement, et l'utilisation de la mémoire met le rapport d'utilisation de la mémoire dans l'ordre de 1000 à 1 (600 Mo de RAM pour un fichier de 70 Ko), ce qui est tout à fait ridicule.
Malheureusement, c'est le meilleur que j'ai trouvé.
la source
Pourquoi n'essayez-vous pas la version 2.0 de mPDF ? Je l'ai utilisé pour créer un document PDF. Ça fonctionne bien.
Pendant ce temps, mPDF est à la version 5.7 et il est activement maintenu, contrairement à HTML2PS / HTML2PDF
Mais gardez à l'esprit que la documentation peut être vraiment difficile à gérer. Par exemple, jetez un œil à cette page: https://mpdf.github.io/ .
Des tâches très basiques autour de html en pdf peuvent être effectuées avec cette bibliothèque, mais des tâches plus complexes prendront un certain temps à lire et à "comprendre" la documentation.
la source
mPDF error: IMAGE Error (http://www.example.com/folder/image.jpg): Error parsing image file - image type not recognised, and not supported by GD imagecreate
1) utilisez MPDF !
a) extraire
yourfolder
b) créer file.php dans
yourfolder
et insert tel code:c) ouvrez file.php depuis votre navigateur
2) Utilisez pdfToHtml !
1) extrayez pdftohtml.exe dans votre dossier racine:
2) à l'intérieur de ce dossier, dans le fichier anyfile.php , mettez ce code (en supposant qu'il existe également une source example.pdf):
3) entrez FinalFolder , et il y aura les fichiers convertis (autant de pages que le PDF source avait ..)
la source
Commander TCPDF . Il a quelques fonctionnalités HTML vers PDF qui pourraient être suffisantes pour ce dont vous avez besoin. C'est aussi gratuit!
la source
Juste pour sauter le fil, j'ai essayé DOMPDF et cela a fonctionné parfaitement. J'ai utilisé
DIV
et d'autres éléments de niveau bloc pour tout positionner, je l'ai gardé strictement CSS 2.1 et il a très bien joué.la source
Je suggère DocRaptor (qui utilise
PrinceXML
comme "moteur")la source
Il a déjà été mentionné, mais je voudrais simplement confirmer que mpdf est le convertisseur HTML vers pdf le plus simple, le plus puissant et le plus gratuit du marché. Le ciel est vraiment la limite. Vous pouvez même générer un fichier PDF de données dynamiques générées par l'utilisateur.
Par exemple, un client voulait un système CMS pour pouvoir mettre à jour la tracklist de la musique qu'il jouait dans son club. Ce n'était pas un problème, mais il voulait également que les utilisateurs puissent télécharger un .pdf de la liste de lecture, et donc ce pdf téléchargeable devait également être mis à jour par les cms. Grâce à mpdf, avec quelques boucles simples et des variables intercalées, je pouvais faire exactement cela. Quelque chose que je pensais me prendre des semaines me prenait littéralement des minutes.
Excellent article qui m'a aidé à démarrer.
la source
Bonnes nouvelles! Snappy !!
Snappy est une bibliothèque PHP5 open source très simple , permettant la génération de vignettes, instantanés ou PDF à partir d'une URL ou d'une page HTML. Et ... il utilise l' excellent wkhtmltopdf basé sur le webkit
Prendre plaisir! ^ _ ^
la source
Eh bien, si vous voulez trouver une bibliothèque de conversion XHTML + CSS en PDF parfaite, oubliez-la. C'est loin d'être possible. Parce que c'est comme trouver un navigateur parfait (moteur de rendu XHTML + CSS). En avons-nous un? IE ou FF?
J'ai eu un certain succès avec DOMPDF. Le fait est que vous devez modifier votre code HTML + CSS pour suivre le fonctionnement de la bibliothèque. A part ça, j'ai de très bons résultats.
Voir ci-dessous:
HTML d'origine
Conversion de HTML en PDF
la source
Le HTML2PDF et HTML2PS qui était à l'origine mentionné dans le message d'ouverture parlait d'un package 2009 avec ce lien
Mais il y a un meilleur HTML2PDF
Il est basé sur TCPDF bien qu'il soit en partie en français.
Vous pouvez avoir des en-têtes de tableau ou des pieds de page qui se répètent sur les pages et avoir des numéros de page et un total de pages. Voir ses exemples . Je l'utilise depuis plus de trois ans et le recommande.
la source
J'utilise fpdf pour produire des fichiers PDF en PHP. Jusqu'à présent, cela fonctionne bien pour produire des sorties simples.
la source
Il y a un tutoriel sur le devzone de Zend sur la génération de pdf à partir de php ( partie 1 , partie 2 ) sans bibliothèques externes. Je n'ai jamais implémenté ce type de solution, mais comme tout est php, vous pourriez le trouver plus flexible à implémenter et à déboguer.
la source
Essayez de saisir la dernière version de dompdf en soirée - J'utilisais une ancienne version qui était un terrible porc de ressources et qui prenait une éternité pour rendre mon pdf. Après avoir attrapé une nuit d' ici .
Il n'a fallu que quelques secondes pour générer le PDF - ET il était tout aussi bien rendu qu'avec PrinceXML / Docraptor . On dirait qu'ils ont sérieusement optimisé le code dompdf depuis ma dernière utilisation!
la source
La mention ci-dessus de TCPDF par Darryl Hein est probablement une excellente idée. Le code de Nicola Asuni est assez pratique et puissant. Le seul tueur est que si vous prévoyez de fusionner des fichiers PDF avec votre PDF généré, il n'a pas ces fonctionnalités. Vous devrez créer le PDF, puis le fusionner en utilisant quelque chose comme PDFTK par Sid Steward (www.pdflabs.com/tools/pdftk-the-pdf-toolkit/).
la source
En termes de coût, l'utilisation d'un service Web (API) peut dans de nombreux cas être l'approche la plus judicieuse. De plus, en externalisant ce processus, vous déchargez votre propre infrastructure / backend et - à condition d'utiliser un service de bonne réputation - garantissez la compatibilité avec l'ajustement des normes Web, la disponibilité, les temps de traitement courts et la livraison rapide de contenu.
J'ai fait quelques recherches sur la plupart des services Web actuellement sur le marché, veuillez trouver ci-dessous les API qui, selon moi, méritent d'être mentionnées sur ce fil, dans un ordre basé sur le rapport prix / valeur. Tous proposent des classes et des packages PHP pré-composés.
Qualité:
Ayant le moteur de haute qualité
PrinceXML
comme colonne vertébrale, DocRaptor offre clairement la meilleure qualité PDF, renvoyant des documents PDF hautement polis et bien convertis. Cependant, le service API pdflayer se rapproche assez ici. Pdfcrowd ne pas nécessairement avec la qualité, mais avec la vitesse de traitement.Coût:
pdflayer.com - Comme indiqué ci-dessus, l'option la plus rentable ici est pdflayer.com, offrant un plan d'abonnement entièrement gratuit pour 100 PDF mensuels et des abonnements premium variant entre 9,99 $ et 119,99 $. Le prix de 10 000 documents PDF mensuels est de 39,99 $.
docraptor.com - Offrant une période d'essai gratuite de 7 jours. Les plans d'abonnement Premium varient de 15 $ à 2250 $. Le prix de 10 000 documents PDF mensuels est de ~ 300,00 $.
pdfcrowd.com - Offrant 100 PDFs une fois gratuitement. Les plans d'abonnement Premium varient de 9 $ à 89 $. Le prix de 10 000 documents PDF mensuels est de ~ 49,00 $.
Je les ai utilisés tous les trois et ce texte est censé aider quiconque à décider sans avoir à payer pour tous. Ce texte n'a pas été écrit pour approuver un seul produit et je n'ai aucune affiliation avec aucun des produits.
la source
Si vous avez accès à la ligne de commande, il est possible d'utiliser PhantomJS pour créer le à
PDF
partir d'unURL
(distant ou local).Cela fonctionne très bien et c'est une solution gratuite.
Jetez un œil à cet exemple de script conçu pour ce problème précis.
la source
Cette question est déjà assez ancienne, mais je n'ai vu personne mentionner CutyCapt donc je le ferai :)
CutyCapt
la source
Je recommande TCPDF ou DOMPDF, dans cet ordre.
la source
Je ne pense pas qu'une classe php sera la meilleure pour rendre une page xHtml avec css.
Que se passe-t-il lorsqu'une nouvelle règle CSS sort? (bientôt css 3.0 ...)
La meilleure façon de rendre une page html est, bien entendu, un navigateur. Firefox 3.0 peut nativement «imprimer» au format pdf, torisugary a développé une extension (impression en ligne de commande) pour l'utiliser.Vous le trouverez ici.
Quoi qu'il en soit, il existe encore de nombreux problèmes runninr firefox juste comme un convertisseur pdf ...
Pour le moment, je pense que wkhtmltopdf est le meilleur (c'est celui utilisé par le navigateur safari), rapide, rapide, génial. Oui, opensource aussi ... Donnez-lui un coup d'oeil
la source
J'ai développé une API publique pour créer des fichiers PDF à partir de pages Web. Il a une belle classe client PHP qui le rend super facile à utiliser. Il utilise wkhtmltopdf pour rendre le PDF dans le cloud.
Pas besoin de quelque chose de spécial dans le HTML. Pas besoin d'URL absolus dans les liens images / css / js. Fonctionne également sur localhost (machine de développement).
Actuellement, le service possède des points de terminaison dans 4 régions Azure: États-Unis de l'Est, États-Unis de l'Ouest, UE du Nord et Asie du Sud-Est.
C'est rapide car il utilise un protocole propriétaire pour envoyer le contenu de la page Web à l'API pour la conversion au format PDF.
Il est fiable car tous les points de terminaison sont à charge équilibrée.
Compte gratuit disponible pour les tests ou une faible utilisation. Détails sur le site web:
https://rotativahq.com
la source
Vous pourriez peut-être essayer d'utiliser Tidy avant de remettre le fichier au convertisseur. Si l'un des moteurs de rendu s'étouffe sur un problème HTML (comme une balise non fermée), cela pourrait l'aider.
la source
Un rendu fin ne veut rien dire. Valide-t-il?
Tous les navigateurs font de leur mieux pour afficher simplement quelque chose à l'écran, quelle que soit la gravité de l'entrée. Et bien sûr, ils ne font pas la même chose. Si vous voulez le même rendu que FireFox, vous pouvez utiliser son moteur de rendu. Il existe des générateurs pdf pour cela. Cependant, c'est énormément de travail.
la source
Bien qu'il existe déjà de nombreuses solutions, je recommande les deux suivantes:
La différence entre ces deux API et toutes les solutions mentionnées précédemment est que, outre la conversion de HTML en PDF avec CSS et JavaScript, elle offre également la gestion des droits PDF, le filigrane et le chiffrement. C'est donc une solution tout-en-un pour ceux qui veulent se lancer.
Avertissement: je travaille pour Kaiomi, une entreprise qui exploite ces deux sites Web.
la source
La conversion HTML en PDF doit-elle vraiment se produire côté serveur en utilisant PHP?
Je viens de découvrir jsPDF , une solution côté client utilisant HTML5 / JavaScript. Le code sous licence MIT est également disponible sur GitHub .
la source
TCPDF fonctionne bien, sans dépendances, est gratuit et constamment corrigé. Il a une vitesse raisonnable si le contenu HTML / CSS fourni est bien formaté. Je génère normalement de 50 à 300 Ko d'entrées HTML (y compris CSS) et j'obtiens une sortie PDF en 1 à 3 secondes avec 10 à 15 pages PDF.
Je recommande fortement d'utiliser la bibliothèque bien rangée comme formateur HTML joli avant d'envoyer quoi que ce soit à TCPDF.
la source
J'ai essayé beaucoup de bibliothèques différentes pour PHP. Toutes les listes que j'ai essayées. À mon avis, la bibliothèque TCPDF est le meilleur compromis performances / convivialité. C'est très simple à installer et à utiliser, également de bonnes performances dans les petites applications moyennes. Si vous avez besoin d'un document PDF très performant et très volumineux, utilisez le module Zend_PDF , mais préparez-vous à coder dur!
la source
API Web
S'il y a des gens qui recherchent toujours ce genre de choses, il y a un site Web gratuit qui vous permet de convertir le code html et les pages en pdf. Il y a aussi une (très petite) api qui vous permet d'obtenir le fichier pdf depuis l'url.
Vérifiez-le ici
la source
pas PHP , mais une bibliothèque Java , qui fait la chose:
Il est utilisable depuis PHP via
system()
ou un appel similaire. Bien qu'il nécessite une bonne forme XML de lainput
.la source