web-dev-qa-db-fra.com

Comparez ces produits pour la génération PDF avec Java exigences données à l'intérieur: iText, Apache PDFBox ou FOP?

Il y avait des questions à ce sujet, mais pas récemment et la technologie doit avoir progressé depuis lors.

Exigences:

  • générer des documents pdf basés sur un modèle prédéfini (je peux utiliser des formulaires pdf ou xsl-fo)
  • pouvoir remplir des données textuelles
  • être capable de remplir des données graphiques (codes à barres générés)
  • pouvoir modifier le modèle pdf dans l'environnement de production sans patcher (recompiler)
  • générer un fichier pdf à enregistrer dans la base de données (sous forme de blob) et/ou à imprimer
  • open source/gratuit

Les options supposées sont iText, PDFBox, FOP, autre chose? Quelles sont les recommandations basées sur les exigences ci-dessus?

39
topchef
  1. je Texte; de nos jours iText est une bibliothèque commerciale, la dernière version n'est plus gratuite
  2. DANDY; J'ai beaucoup travaillé avec FOP. C'est assez gourmand en ressources (Java> XML> XSLT> PDF) et les PDF complexes deviennent un cauchemar (peut entraîner des XSLT avec 20k + LoC)
  3. PDFBox; cela semble être la meilleure alternative même si je n'ai pas travaillé avec elle dans de grands projets
  4. N'a pas encore vérifié Flying Saucer

Pour conclure, j'essaierais PDFBox. Selon les exigences de votre code à barres, vous devrez peut-être insérer votre code à barres (police) dans le PDF ou distribuer la police à vos clients - prenez soin de ces problèmes.

30
home

J'ai fait un projet avec Flying Saucer http://code.google.com/p/flying-saucer/ qui est basé sur iText. Il est gratuit, facile à utiliser, a un grand support pour CSS et a une belle source ouverte.

6
Brian Hoover

Je pense que vos critères peuvent être remplis à la fois avec iText et Apahce FOp mais ici vous avez quelques critères supplémentaires:

  • licence: FOP est basé sur la licence Apache et donc "convivial" également pour un usage commercial
  • flexibilité: une API de bas niveau comme iText est plus flexible qu'une FOP de haut niveau
  • Outils visuels: il y a n concepteur pour FOP ici .
  • Modèle de programmation: iText est basé sur l'API de programmation tandis que FOP nécessite un modèle XSLFO et moins de programmation.
  • Propriétaire vs standard. Apache FOP est basé sur un standard et donc indépendant du fournisseur, tandis que iText est une API propriétaire
  • Performace: Il est dit que FOP est plus intensif en informatique. cela dépend bien sûr de votre cible PDF sont. Ce n'était jamais un problème pour moi en utilisant FOP.

Je n'utiliserais pas PDFBox, c'est bon pour lire et modifier un fichier PDF PDF existant mais créer un fichier à partir de zéro en utilisant PDFBox peut être beaucoup de travail).

6
user986280

Je suis un peu biaisé (committer), mais je suggère iText.

générer des documents pdf basés sur un modèle prédéfini (je peux utiliser des formulaires pdf ou xsl-fo)

Formulaires PDF: Vérifier

pouvoir remplir des données textuelles

Formulaires PDF, vérifiez. Vous pouvez également effectuer une mise en page programmatique.

être capable de remplir des données graphiques (codes à barres générés)

Vérifier. Étant donné un emplacement connu (qui pourrait être "l'emplacement de cette annotation particulière"), iText dessinera pour vous un code-barres en fonction d'une symbologie et d'une valeur. Vous pouvez déduire une liste des symbologies prises en charge à partir des constantes répertoriées ici .

Pour ce genre de chose, j'utilise des champs Button avec une apparence "Icon Only". L '"icône" est une instruction arbitraire PDF dessin ou une image. Les trucs de code-barres d'iText créeront un PdfTemplate que vous pourrez insérer dans le bouton sans trop de problèmes.

pouvoir modifier le modèle pdf dans l'environnement de production sans patcher (recompiler)

Si toute votre mise en page est intégrée dans le modèle PDF, et que vos informations "code-barres vont ici" ne sont pas codées en dur dans la source, alors vous êtes en or.

générer un fichier pdf à enregistrer dans la base de données (sous forme de blob) et/ou à imprimer

A PDF est un PDF est un PDF. Heck, avec du travail supplémentaire de votre part, vous pouvez utiliser iText pour créer des fichiers PDF/A. "A "est pour Archive.

open source/gratuit

Open Source: oui. v2.1.7 était la dernière version à utiliser le MPL. Depuis 5.x, toutes les versions d'iText sont sous AGPL. Oui, iText est passé de 2.1.7 à 5.0, afin de synchroniser la numérotation des versions entre iText et iTextSharp.

Pas exactement "little f" gratuit, mais la version 2.1.7 n'est pas si difficile à trouver. OTOH, c'est Orphan-ware, non entretenu. Soyez un consommateur averti.

3
Mark Storer

Cela dépend de la façon exacte dont vous souhaitez créer le PDF également. FOP fonctionne à partir de XML, IText vous permet de créer par programmation à partir de Java.

2
mark stephens

Un autre coup de pouce pour la soucoupe volante. Il fonctionne assez bien et est facile à utiliser si vous êtes familier avec le HTML et le CSS.

Ce qui n'est pas vraiment documenté, c'est comment accéder à la fonctionnalité intégrée de codes-barres iTexts. Cependant, cela peut être facilement accompli. J'ai mis en place un court tutoriel ici: http://andreas.haufler.info/2012/12/generating-barcodes-in-pdfs-with-flying.html

2
Andreas Haufler