J'ai besoin de générer automatiquement un fichier PDF) à partir d'un document HTML (X) existant. Les fichiers d'entrée (rapports) utilisent une mise en page plutôt simple, basée sur des tableaux. Les trucs CSS ne sont probablement pas nécessaires.
Comme je suis habitué à travailler en Java, une solution facilement utilisable dans un projet Java est préférable. Cela ne doit cependant fonctionner que sur les systèmes Windows.
Une façon de le faire qui est réalisable, mais ne produit pas une sortie de bonne qualité (au moins prête à l'emploi) utilise CSS2XSLFO , et Apache FOP pour créer le PDF = fichiers. Le problème que j'ai rencontré était que, bien que les attributs CSS soient bien convertis, la présentation du tableau est assez fouillée, avec du texte sortant de la cellule du tableau.
J’ai également jeté un coup d’œil à Jrex, une API Java permettant d’utiliser le moteur de rendu Gecko.
Existe-t-il un moyen de récupérer la page rendue dans le moteur de rendu d'Internet Explorer et de l'envoyer automatiquement à un outil PDF-Printer? Je n'ai aucune expérience de la programmation OLE dans Windows), je n'ai donc aucune idée de ce qui est possible ou non.
Avez-vous une idée?
[~ # ~] éditer [~ # ~] : La chose FlyingSaucer/iText semble très prometteuse. Je vais essayer d'aller avec ça.
Merci pour toutes les réponses
Le projet de rendu Flying Saucer XHTML prend en charge la sortie de XHTML au format PDF. Regardez un exemple ici .
Avez-vous essayé WKHTMLTOPDF ?
C'est un simple utilitaire Shell, une implémentation open source de WebKit. Les deux sont gratuits.
Nous avons défini 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/ .
Le dépouillant probablement de toutes ses dépendances nodejs pour s'exécuter dans le navigateur.
Départ iText ; c'est un outil pur Java PDF qui supporte la lecture de données à partir de HTML. Je l'ai utilisé récemment dans un projet lorsque j'avais besoin d'extraire du contenu de notre CMS) et exporter en tant que PDF fichiers, et c'était assez simple. Le support pour les balises CSS et style est assez limité, mais il rend les tableaux sans aucun problème (je n'ai jamais réussi à définir la largeur de colonne ).
Créer un PDF à partir de HTML ressemble à 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();
Si vous avez le financement, rien ne vaut Prince XML comme cette vidéo montre
Existe-t-il un moyen de récupérer la page rendue dans le moteur de rendu d'Internet Explorer et de l'envoyer automatiquement à un outil PDF-Printer?
Voici comment ActivePDF fonctionne, ce qui signifie que vous savez ce que vous obtiendrez, et que son style est raisonnable soutien.
C’est également l’un des rares packages que j’ai trouvé (il ya quelques années) qui prend en charge les différentes commandes CSS de saut de page.
Malheureusement, le logiciel ActivePDF est très frustrant - puisqu'il doit lancer le navigateur IE en arrière-plan pour les conversions, il peut être assez lent et n'est pas particulièrement stable non plus.
Il existe actuellement une version bêta d'une nouvelle version censée être bien meilleure, mais je n'ai pas encore eu l'occasion de l'essayer, alors je ne sais pas à quel point c'est une amélioration.
Vous pouvez utiliser un firefox sans tête avec une extension. C'est assez ennuyant de courir mais ça donne de bons résultats.
Départ cette réponse pour plus d'informations.
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.
Amyuni WebkitPDF peut être utilisé avec JNI pour une solution uniquement Windows. Ceci est une bibliothèque de conversion HTML vers PDF/XAML, gratuite pour une utilisation commerciale ou non-commerciale.
Si les fichiers de sortie ne sont pas nécessaires immédiatement, pour une meilleure évolutivité, il peut être préférable de disposer d’une file d’attente et de quelques processus en arrière-plan prenant les éléments à partir de là, les convertissant et les stockant ensuite dans la base de données ou le système de fichiers.
les mentions légales habituelles s'appliquent