web-dev-qa-db-fra.com

PDF Bibliothèque de génération pour Java

Je sais que cela a déjà été demandé, mais je ne sais toujours pas quel cadre de génération PDF PDF à utiliser pour mon projet actuel.

Mes exigences

  • génération à la volée de PDF (principalement bons de commande, factures)
  • Basé sur Java
  • facile à mettre en page
  • devrait être open source
  • mise en page facile à changer

Beaucoup de gens semblent utiliser iText, mais j'ai quelques inquiétudes (à part la licence modifiée) concernant la séparation des préoccupations: dans un contexte HTML, il y a un bon support MVC, où je m'en tiens habituellement à Spring MVC et FreeMarker pour séparer la logique et la disposition. Je suis un peu inquiet qu'avec iText vous finissiez par mélanger beaucoup le code et la mise en page.

Je suis conscient que Apache FOP pourrait être une solution ici, mais là encore, je trouve que XSLT est fastidieux de travailler avec et j'ai lu que FOP peut être lent en ce qui concerne l'énorme quantité de nombreux documents?

J'ai également considéré JasperReports, mais d'après ce que je comprends, cela convient mieux aux rapports contenant des ensembles de données tabulaires plutôt qu'aux documents uniques tels que les factures qui nécessitent beaucoup de mise en forme?

Des réflexions à ce sujet?

41
Stefan Haberl

Essayez JasperReports. Utilisez iReport pour créer les fichiers .jrxml. JapserReports peut gérer des mises en page complexes. Pour les parties du rapport basées sur différentes requêtes, jetez un œil à l'utilisation des sous-rapports intégrés dans le rapport principal.

Tout comme la solution de @Adrian Smith, cette approche séparera la mise en page du rapport de la source de données.

21
Janek Bogucki

J'ai mis en œuvre une bonne solution où mon logiciel crée un fichier XML "pur" indépendant du format, puis je donne à mon patron le XSD et il le met dans Altova StyleVision où il peut WYSIWYG concevoir des rapports basés sur des données il arrache le XSD. Ce logiciel produit un XSLT. Donc mon programme:

  • Produit le XML "pur" indépendant du format
  • Le transforme avec le XSLT, dont la sortie est XML-FO
  • Utilisez Apache FOP pour convertir le XML-FO en PDF

C'est une très bonne solution, cela signifie que je n'ai plus (en tant que programmeur) à changer mon code chaque fois que mon patron veut changer une couleur dans le rapport, mon travail consiste simplement à produire du XML "pur".

Mise à jour: Je dois également souligner que je donne à mon patron l'accès à notre dépôt SVN avec Tortoise SVN qui est suffisamment facile à utiliser pour pouvoir l'utiliser sans Erreur. Il peut donc vérifier les fichiers XSLT directement dans SVN et exécuter la construction/déploiement sans même avoir à m'interrompre de mon travail. Évidemment, ce flux de travail ne fonctionne qu'avec des personnes suffisamment précises pour ne pas faire d'erreurs, etc., mais cela fonctionne bien pour nous dans ce cas.

9
Adrian Smith

Sur la base de mon expérience, je vous suggère d'envisager de suivre Java PDF Bibliothèques pour créer PDF rapports,

  1. Rapports dynamiques
  2. Apache PDF Boîte
  3. iText PDF
  4. PDF Clown

Pour votre exigence, je pense que DynamicReports serait le bon choix. J'utilise Dynamic Reports depuis 3 ans pour toutes mes PDF exigences de rapport. Avec une quantité de code très inférieure, vous pouvez facilement créer un PDF vraiment dynamique. Dynamicreports est un wrapper autour de Jasper Report Donc, il utilise en interne le rapport Jasper.

5
Prasanna L M

Docmosis vous permet de créer des modèles dans Word ou OpenOffice Writer - séparant bien les problèmes et la mise en page est alors dans les outils les plus familiers.

2
Paul Jowett

Une possibilité est

  • pour créer vos documents au format PostScript puis
  • le convertir en pdf en utilisant ghostscript (ps2pdf)
1
Curd

J'utilise JODConverter depuis un moment et je l'aime vraiment.

Ce que nous faisons, c'est utiliser JODReports pour générer des documents OpenOffice.org dynamiques (qui utilisent en interne FreeMarker). Ensuite, nous convertissons ces documents en documents PDF en utilisant JODConverter.

Cela ressemble à beaucoup de travail, mais ce n'est vraiment pas le cas.

1
Shervin Asgari