Conversion de fichiers HTML en PDF [fermé]


J'ai besoin de générer automatiquement un fichier PDF à partir d'un document HTML existant (X). Les fichiers d'entrée (rapports) utilisent une mise en page plutôt simple, basée sur une table, donc la prise en charge de choses JavaScript/CSS vraiment fantaisistes n'est probablement pas nécessaire.

Comme je suis habitué à travailler en Java, une solution qui peut facilement être utilisée dans un projet java est préférable. Il ne doit fonctionner que sur les systèmes Windows, cependant.

Une façon de le faire qui est faisable, mais ne produit pas une sortie de bonne qualité (au moins hors du box) utilise CSS2XSLFO , et Apache FOP pour créer les fichiers PDF. Le problème que j'ai rencontré était que si les attributs CSS sont bien convertis, la mise en page du tableau est assez foirée, avec du texte sortant de la cellule du tableau.

J'ai également jeté un coup d'œil à Jrex, une API Java pour utiliser le moteur de rendu Gecko.

Existe-t-il un moyen de récupérer la page rendue à partir du moteur de rendu Internet explorer et de l'envoyer automatiquement à un outil d'imprimante PDF? Je n'ai aucune expérience dans la programmation OLE sous Windows, je n'ai donc aucune idée de ce qui est possible et de ce qui ne l'est pas.

Avez-vous une idée?

EDIT : La chose FlyingSaucer/iText semble très prometteuse. Je vais essayer d'aller avec qui.

Merci pour toutes les réponses

Author: bluish, 2009-03-11

8 answers

 66
Author: Mark, 2011-09-23 14:07:25

Avez-vous essayé WKHTMLTOPDF?

C'est un simple utilitaire shell, une implémentation open source de WebKit. Les deux sont gratuits.

Nous avons établi un petit tutoriel ici

MODIFIER( 2017 ):

Si c'était pour construire quelque chose aujourd'hui, je n'irais plus dans cette voie.
Mais utiliserait http://pdfkit.org / à la place.
Probablement en le dépouillant de toutes ses dépendances nodejs, à exécuter dans le navigateur.

 40
Author: Mic, 2016-12-23 11:06:04

Check out iText ; c'est un toolkit PDF Java pur qui prend en charge la lecture de données à partir de HTML. Je l'ai utilisé récemment dans un projet lorsque je devais extraire du contenu de notre CMS et l'exporter sous forme de fichiers PDF, et tout était plutôt simple. Le support des balises CSS et style est assez limité, mais il rend les tables sans aucun problème (je n'ai jamais réussi à définir la largeur des colonnes).

Créer un PDF à partir de HTML va quelque chose comme ceci:

Document doc = new Document(PageSize.A4);
PdfWriter.getInstance(doc, out);
doc.open();
HTMLWorker hw = new HTMLWorker(doc);
hw.parse(new StringReader(html));
doc.close();
 39
Author: fred-o, 2009-03-11 09:32:24

Si vous avez le financement, rien ne vaut Prince XML comme cette vidéo montre

 3
Author: Ólafur Waage, 2009-03-11 09:17:10

Y a-t-il peut-être un moyen de saisir le page rendue à partir d'internet explorer moteur de rendu et l'envoyer vers un outil d'imprimante PDF automatiquement?

Voici comment ActivePDF fonctionne, ce qui est bon signifie que vous savez ce que vous obtiendrez, et il a en fait un support de style raisonnable.

C'est aussi l'un des rares paquets que j'ai trouvé (en regardant quelques années en arrière) qui prend en charge les différents CSS de saut de page commande.


Malheureusement, le logiciel ActivePDF est très frustrant-car il doit lancer le navigateur IE en arrière-plan pour les conversions, il peut être assez lent, et il n'est pas particulièrement stable non plus.

Il y a une nouvelle version actuellement en bêta qui est censée être bien meilleure, mais je n'ai pas eu la chance de l'essayer, donc je ne sais pas à quel point c'est une amélioration.

 2
Author: Peter Boughton, 2009-03-11 09:47:05

Vous pouvez utiliser un firefox sans tête avec une extension. C'est assez ennuyeux de courir, mais cela produit de bons résultats.

Découvrez cette réponse pour plus d'info.

 1
Author: rojoca, 2017-05-23 11:47:13

Amyuni WebkitPDF peut être utilisé avec JNI pour une solution Windows uniquement. Il s'agit d'une bibliothèque de conversion HTML en PDF/XAML, gratuite pour un usage commercial et non commercial.

Si les fichiers de sortie ne sont pas nécessaires immédiatement, pour une meilleure évolutivité, il peut être préférable d'avoir une file d'attente et quelques processus d'arrière-plan prenant des éléments à partir de là, les convertissant et les stockant ensuite sur la base de données ou le système de fichiers.

la clause de non-responsabilité habituelle s'applique

 0
Author: yms, 2012-09-26 19:08:55

Si vous regardez la barre latérale de votre question, vous verrez beaucoup de questions connexes...

Dans votre contexte, la méthode la plus simple pourrait être d'installer un pilote d'impression PDF comme PDFCreator et d'imprimer simplement la page sur cette sortie.

 -1
Author: PhiLho, 2009-03-11 09:34:18