web-dev-qa-db-ja.com

PDF生成とJava内部の要件:iText、Apache PDFBoxまたはFOP?

それについては質問がありましたが、最近ではなく、それ以来テクノロジーが進歩しているに違いありません。

要件:

  • 事前定義されたテンプレートに基づいてpdfドキュメントを生成します(pdfフォームまたはxsl-foを使用できます)
  • テキストデータを入力できる
  • グラフィカルデータ(生成されたバーコード)を入力できる
  • 本番環境でパッチを適用せずにPDFテンプレートを変更できる(再コンパイル)
  • データベースに保存する(blobとして)および/または印刷するpdfファイルを生成する
  • オープンソース/無料

想定されるオプションは、iText、PDFBox、FOP、その他ですか?上記の要件に基づいた推奨事項は何ですか?

39
topchef
  1. iText;現在、iTextは商用ライブラリです。最新バージョンは無料ではありません。
  2. FOP;私はFOPでたくさん働きました。かなりリソースを消費し(Java> XML> XSLT> PDF)、複雑なPDFは悪夢になります(20k + LoCのXSLTになる可能性があります)
  3. PDFBox;大規模なプロジェクトでは使用していませんが、最良の選択肢のようです
  4. フライングソーサーはまだチェックしていません

最後に、PDFBoxを試してみます。バーコードの要件に応じて、バーコード(フォント)をPDFにインライン化するか、クライアントにフォントを配布する必要があります。これらの問題に注意してください。

30
home

Flying Saucer http://code.google.com/p/flying-saucer/ でプロジェクトを作成しました。これはiTextに基づいています。無料で使いやすく、CSSを強力にサポートし、Niceのオープンソースを備えています。

6
Brian Hoover

あなたの基準はiTextとApahce FOpの両方で満たすことができると思いますが、ここに追加の基準があります:

  • ライセンス:FOPはApacheライセンスに基づいているため、商用利用にも「使いやすい」
  • 柔軟性:iTextのような低レベルAPIは、高レベルFOPよりも柔軟性があります
  • ビジュアルツール: FOPの1人のデザイナー があります。
  • プログラミングモデル:iTextはプログラミングAPIに基づいていますが、FOPはXSLFOテンプレートを必要とし、プログラミングはあまり必要ありません。
  • 独自仕様と標準仕様。 Apache FOPは標準に基づいているため、ベンダーに依存しませんが、iTextは独自のAPIです
  • パフォーマンス:FOPの方が計算負荷が高いと言われています。もちろん、ターゲットPDFファイルが何であるかによって異なります。FOPを使用することは決して問題ではありませんでした。

私はPDFBoxを使用しません。既存のPDFファイルの読み取りと変更には適していますが、PDFBoxを使用してファイルを最初から作成するのは大変な作業です。

6
user986280

私は少し偏っています(コミッター)が、iTextをお勧めします。

定義済みのテンプレートに基づいてpdfドキュメントを生成します(pdfフォームまたはxsl-foを使用できます)

PDFフォーム:チェック

テキストデータを入力できる

PDFフォーム、チェック。プログラムによるレイアウトも実行できます。

グラフィカルデータ(生成されたバーコード)を入力できること

チェック。既知の場所(「この特定の注釈の場所」である可能性があります)が与えられると、iTextはシンボルと値を指定してバーコードを描画します。 ここにリストされている定数 から、サポートされているシンボルのリストを推測できます。

この種のことのために、「アイコンのみ」の外観を持つボタンフィールドを使用します。 「アイコン」は、任意のPDF描画命令、または画像です。iTextのバーコードは、面倒なことなくボタンに挿入できるPdfTemplateを作成します。

本番環境でpdfテンプレートを修正なしで修正(再コンパイル)できる

すべてのレイアウトがPDFテンプレートに焼き付けられており、「バーコードがここにある」情報がソースにハードコーディングされていない場合、黄金色になります。

データベースに保存する(blobとして)および/または印刷するpdfファイルを生成する

A PDFはa PDFはPDFです。ヘック、一部の追加作業により、iTextを使用してPDF/Aファイルを作成できます。 "A 「はアーカイブ用です。

オープンソース/無料

オープンソース:はい。 v2.1.7は、MPLを使用する最後のバージョンでした。 5.x以降、すべてのiTextリリースはAGPLに基づいています。はい、iTextとiTextSharpの間でバージョン番号を同期するために、iTextは2.1.7から5.0にスキップしました。

厳密には「小さなf」ではありませんが、2.1.7バージョンはそれほど難しくありません。 OTOH、それは孤立した孤立したウェアで、メンテナンスされていません。情報に基づいた消費者になる。

3
Mark Storer

PDFも同様に作成します。FOPはXMLから機能します。ITextを使用すると、Javaからプログラムで作成できます。

2
mark stephens

もう1人は空飛ぶ円盤に賛成です。これは非常にうまく機能し、htmlとcssに精通していれば使いやすいです。

実際に文書化されていないのは、iTextsの組み込みバーコード機能にアクセスする方法です。ただし、これは簡単に実現できます。ここに短いチュートリアルを作成しました: http://andreas.haufler.info/2012/12/generated-barcodes-in-pdfs-with-flying.html

2
Andreas Haufler