Convertir HTML + CSS en PDF [fermé]

1629

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?

clets
la source
9
Html2Pdf utilise en fait une instance intégrée d'IE pour rendre la page, puis la convertit en PDF - probablement via le mécanisme d'impression d'IE.
Joel Mueller
55
comme c'est une question de 2008, dompdf est beaucoup plus mature maintenant. ;-)
Hendra Uzia
5
dompdf prend désormais en charge CSS 2.1 et peut traiter @import, @mediaet des @screenrè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/dompdf
totallyNotLizards
6
Mise à jour 2015: Après avoir recherché beaucoup d'options, nous avons décidé d'utiliser wkhtmltopdf, c'est un bon utilitaire que nous avons du mal avec CSS parce que nous avons un fichier CSS externe mais nous avons ensuite appliqué l'astuce de mettre un lien factice de CSS sur notre élément HTML que nous voulons convertir et définir le bon chemin, il fonctionne comme MAGIC !!!
Anshul Nigam
10
Je pense que bientôt tout le monde trouve que Chrome / Chromium sans tête est l' chrome --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.
Ebrahim Byagowi

Réponses:

551

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

SchizoDuckie
la source
16
Mon entreprise a écrit un service Web construit autour de Prince. Coûts initiaux nettement moins chers et utilisables sans avoir à installer quoi que ce soit: docraptor.com
Joel Meador
6
J'ai également utilisé DocRaptor. Un moyen génial d'obtenir les avantages de Prince sans avoir à payer pour la licence coûteuse. Félicitations pour un excellent produit, Joel.
Nate365
22
Beaucoup trop cher. WKHTMLTOPDF (voir autre réponse) est gratuit, fait le travail et utilise webkit qui est génial.
thomallen
1
il existe un service Saas de qualité égale ou supérieure pour une fraction du prix - voir htm2pdf.co.uk
user1914292
5
Si vous avez un accès en ligne de commande et que vous ne voulez PAS payer 3500 $, PhantomJS avec ce script: github.com/ariya/phantomjs/blob/master/examples/rasterize.js pourrait être une solution - c'est le moyen gratuit et facile!
chjortlund
666

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.

Mic
la source
10
Celui-ci fonctionne sur le meilleur principe de l'OMI. Boostrap conversion hors d'un rendu existant au lieu d'en écrire un à partir de zéro - pas une tâche triviale. De plus, Webkit est écrit en C ++ et donc beaucoup plus rapide et beaucoup moins gourmand en ressources que l'implémentation basée sur PHP.
Koobz
3
Nous avons eu d'énormes problèmes pour obtenir ceci afin de rendre les polices correctement sur les serveurs CentOS. Après des semaines de déconner, il semble que la seule option soit de ne pas utiliser CentOS.
Abhi Beckert
1
ATTENTION! Si vous utilisez wkhtmltopdf (au moins sur mon système, XAMPP sur Windows 7 64 bits), dans tous les cas, j'ai essayé, les images .gif n'apparaissent pas dans le fichier PDF. J'ai essayé un certain nombre de solutions de contournement suggérées à divers endroits, telles que l'inclusion de "largeur" ​​et "hauteur", et l'écriture des URI selon différentes conventions. Rien de ce que j'ai essayé n'a fait apparaître les .gif (en particulier, pas même la suggestion "largeur" ​​et "hauteur", que j'ai essayée à la fois en utilisant des styles en ligne et en utilisant les attributs HTML archaïques, "largeur" ​​et "hauteur" bruts). Cependant, l'échange des images en .jpg a fonctionné du premier coup.
Dan Nissenbaum
6
Cette abstraction est plutôt sympa mais mikehaertl.github.io/phpwkhtmltopdf
saada
1
Les services commerciaux étaient trop chers pour nous, nous avons donc implémenté WKHTMLTOPDF en tant que service cloud gratuit html2pdfrocket.com pour que quiconque puisse l'utiliser, puis l'avons utilisé nous-mêmes pour nos clients. Nous l'avons fait de cette façon afin que nos clients n'aient pas à installer d'exe sur leurs serveurs, etc. et fonctionnent sur plusieurs plates-formes. J'évalue définitivement WKHTMLTOPDF si vous créez votre propre service.
eagle779
150

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:

  • pcre.backtrack_limit = 2000000; # probablement plus que ce dont j'ai besoin mais c'est OK
  • memory_limit = 1024M; # oui, un gigaoctet ; et
  • max_execution_time = 600; # oui, 10 minutes .

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é.

cletus
la source
1
@cletus pouvez-vous me parler de la version stable de HTML2PDF. L'exemple de lien ci-dessus est obsolète
Ripa Saha
Pour la dernière version, voir github.com/spipu/html2pdf
Luke Wenke
1
Une typographie sinistre devient plus sinistre: le taux d'utilisation de la mémoire est de l'ordre de 10 000 à 1 lol
MickLH
Fonctionne aussi mal que mPDF ... plus rapide, mais pas précis ... et la conversion des polices TTF est incroyablement pénible ... ils ont même une bibliothèque indépendante "tc-lib-pdf-font" juste pour générer des polices
Martin Zvarík
125

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.

Karthick
la source
1
J'ai essayé un tas de ceux suggérés ici. Jusqu'à présent, celui-ci a été téléchargé et travaillé hors de la boîte sans tracas et les documents sont vraiment incroyables par rapport au reste. Les instructions d'utilisation sont clairement écrites.
Smith Smithy
mPDF me donne quelques tracas sérieux lors de la publication de balises html avec un fond d'image ou des balises de la base de données: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
Stefan
La version 6.0 fonctionne comme prévu: incluez-la (ou dans un framework, chargez-la) instanciez, remplissez avec vos trucs, sortez-la d'une manière ou d'une autre ... C'est tout!
toesslab
Eh bien, MPDF fonctionne bien, c'est vrai! Mais le code et la documentation sont incohérents - il est vraiment difficile d'accomplir une tâche plus complexe, par exemple en créant une lettre concernant la norme DIN.
Qullbrune
Affirme qu'il est beaucoup plus lent que html2fpdf. Mais pour le contenu de base, je pensais que c'était très rapide (factures, rapports, etc.). L'énorme avantage de mPDF est qu'il n'y a pratiquement aucune exigence d'extension PHP (fonctionne prêt à l'emploi sur l'hébergement partagé)
Joao
70

1) utilisez MPDF !

a) extraire yourfolder

b) créer file.php dans yourfolderet insert tel code:

<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output();   exit;
 ?>

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):

<?php
$source="example.pdf";
$output_fold="FinalFolder";

    if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>

3) entrez FinalFolder , et il y aura les fichiers convertis (autant de pages que le PDF source avait ..)

tazo todua
la source
J'essaierais GrabzIt, leur API prend en charge CSS, JavaScript et la plupart des autres types de ressources. Il doit simplement être référencé avec des URL absolues, ou être intégré et inclus dans le code HTML envoyé au service. Essayez-le ici: grabz.it/html-to-pdf-image-api.aspx
GrabzIt n'est pas gratuit
Chatoxz
56

Commander TCPDF . Il a quelques fonctionnalités HTML vers PDF qui pourraient être suffisantes pour ce dont vous avez besoin. C'est aussi gratuit!

Darryl Hein
la source
1
son support est pour le rendu html est assez limité, vous voudrez peut-être lire ceci: tcpdf.org/doc/classTCPDF.html#ac3fdf25fcd36f1dce04f92187c621407
Hendra Uzia
1
mais le style css ne fonctionne pas
KBK
32

Juste pour sauter le fil, j'ai essayé DOMPDF et cela a fonctionné parfaitement. J'ai utilisé DIVet 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é.

Filip Dupanović
la source
31

Je suggère DocRaptor (qui utilise PrinceXMLcomme "moteur")

aRahmanS29
la source
Malheureusement impossible à utiliser si vous souhaitez générer de gros fichiers PDF avec beaucoup d'images. Je pense qu'il y a un délai de 60 secondes sur les demandes et si Docraptor a besoin de télécharger beaucoup de fichiers, cela sera dépassé et aucun fichier ne sera créé.
Vilhelm
1
Ce problème mentionné par Vilhelm a été corrigé.
illbzo1
30

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.

Starkers
la source
7
Un PDF d'une liste de lecture. Dieu aide moi.
Henrik Erlandsson
29

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! ^ _ ^

Paulo Coghi - Réintégrer Monica
la source
1
J'ai construit une API HTTP qui utilise Snappy (basée sur wkhtmltopdf). Vous pouvez transmettre une URL et convertir la page Web de HTML en PDF: github.com/Dellos7/dhtml2pdf
David López
26

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

datasn.io
la source
25

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.

Luke Wenke
la source
1
Pourquoi n'est-ce pas au sommet? Il fonctionne sans aucune dépendance supplémentaire et est assez bon pour les applications de la plupart des gens sans avoir à dépenser 3800 $!
dégénéré le
22

J'utilise fpdf pour produire des fichiers PDF en PHP. Jusqu'à présent, cela fonctionne bien pour produire des sorties simples.

stealthyninja
la source
21

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.

yoavf
la source
Oui, mais cela ne convertit pas le HTML ... c'est la génération de PDF brut
Martin Zvarík
16

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!

Arni J
la source
dompdf est vraiment une excellente option. J'en ai utilisé deux fois et c'est très simple. Je recommanderai d'essayer dompdf. Voici le lien pour le dépôt
Rituparna sonowal
16

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/).

arachnide
la source
13

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.

  1. pdflayer.com - Coût: $ - Qualité: ☆☆☆☆
  2. docraptor.com - Coût: $$$ - Qualité: ☆☆☆☆☆
  3. pdfcrowd.com - Coût: $$ - Qualité: ☆☆☆

Qualité:

Ayant le moteur de haute qualité PrinceXMLcomme 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.

Frank
la source
Merci pour les partages. J'ai étudié toutes les options toute la journée et je me suis concentré davantage sur les bibliothèques gratuites ou sur l'achat de la bibliothèque. Votre réponse m'aide à nouveau à thnik. Je pense que pour les petites entreprises, c'est le moyen le plus rentable et le plus simple d'utiliser les services Web. Pour pdflayer.com; moins de 100 $ / an, il faut 20 ou 30 ans pour atteindre le seuil de rentabilité, mais je ne pense pas que nous partirons dans le même monde 20 ans plus tard :)
freewill
12

Si vous avez accès à la ligne de commande, il est possible d'utiliser PhantomJS pour créer le à PDFpartir d'un URL(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.

Hjortlund
la source
mais vous pourriez avoir des problèmes avec les polices (polices Web)
Mihai Crăiță
11

Cette question est déjà assez ancienne, mais je n'ai vu personne mentionner CutyCapt donc je le ferai :)

CutyCapt

CutyCapt est un petit utilitaire de ligne de commande multiplateforme pour capturer le rendu WebKit d'une page Web dans une variété de formats vectoriels et bitmap, y compris SVG, PDF, PS, PNG, JPEG, TIFF, GIF et BMP

Koen.
la source
11

Je recommande TCPDF ou DOMPDF, dans cet ordre.

criss_ae
la source
9

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

Strae
la source
PHP est utile si vous voulez sortir un certain type de documentation officielle comme un reçu pour un utilisateur et vous pouvez utiliser CSS pour le rendre joli.
Luke Wenke
9

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

Giorgio Bozio
la source
8

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.

PhiLho
la source
Oui un point valable mais j'y ai déjà pensé. Il n'y a pas de balises inégalées ou non standard dans mon HTML.
cletus
7

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.

Stephan Eggermont
la source
7

Bien qu'il existe déjà de nombreuses solutions, je recommande les deux suivantes:

  1. HTM2PDF - offre une API pour convertir HTML en PDF et dispose également d'un SDK PHP, ce qui le rend très facile à implémenter en PHP; Il offre un choix d'emplacements de serveurs en Europe, en Asie et aux États-Unis.
  2. PDFmyURL - offre une API qui fait également des URL et du HTML au format PDF, avec à peu près les mêmes fonctionnalités que HTM2PDF, mais fonctionne sur un paysage à charge équilibrée et existe depuis un peu plus longtemps

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.

user1914292
la source
Je ne voudrais pas me fier à un service lorsqu'il sera en vente . Étant donné qu'il n'a pas été vendu lors de cette vente aux enchères, je ne peux que supposer qu'il sera vendu dans un proche avenir?
Robin van Baalen
en fait, mon entreprise l'a acquis quelque temps après la vente aux enchères ....
user1914292
Dans ce cas, je suppose qu'il n'y a rien à craindre.
Robin van Baalen
5

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.

lubosdz
la source
4

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!

trullallero
la source
Zend PDF ne peut pas convertir du HTML
Martin Zvarík
3

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

Superdrac
la source
2

pas PHP , mais une bibliothèque Java , qui fait la chose:

Flying Saucer prend XML ou XHTML et lui applique des feuilles de style conformes à CSS 2.1, afin de les rendre au format PDF

Il est utilisable depuis PHP via system()ou un appel similaire. Bien qu'il nécessite une bonne forme XML de la input.

Ivan Kurmanov
la source