JavaでPDFを出力するには? おすすめツールまとめ

こんにちわ。井上です。
 
現在開発しているシステムで、帳票出力が必要となりました。現状はエクセルファイルを出力していますので、同じような見た目でPDFの帳票を出力できるツールを調べてみました。
 
JavaのシステムからPDFを出力する方法としては、下記の2種類があります。

  • 現状出力しているエクセルファイルをPDFファイルに変換して出力するようにする。
  • はじめからPDFファイルを作成して出力するようにする。

 
今回はどちらの案で行くのがベストなのか、それぞれの方法で調べてみました。

現状のエクセルファイルをPDFに変換して出力する、jodcconverter

jodconverter

JODConverter +OpenOffice +Apache POI

 

作成方法

  1. ApachePOIを使ってJavaからエクセルファイルを作成
  2. 作成したエクセルファイルの内容をバッファ内に書き出す
  3. JODConverterを使ってOpenOfficeにデータを渡す。
  4. OpenOfficeの機能を利用してエクセルファイルをPDFへと変換
    (OpenOfficeの代わりに、LibreOfficeを使ってもいいみたいです)

 

メリット

  • エクセルファイルの内容をそのままPDFで出力できるので、テーブルやグラフ等エクセルの機能をフルに生かすことができる。
  • 日本語でも特に問題ない。
  • すべてフリーで利用可能。

デメリット

  • 準備するものが3つも必要。
  • PDFを出力したいのに、一度エクセルファイルを作らないといけない。

はじめからPDFを作成して出力する、iText

iText

iText

メリット

  • 手軽にPDFを出力する事ができる(文字だけであれば……)。
  • テンプレートを利用すれば、複雑な内容の帳票も作成可能。

デメリット

  • iText5からは商用利用の場合ライセンスの購入が必要。
  • テンプレートを利用しない場合、一からレイアウトをJavaで操作する必要がある。
  • 文字を配置する際に、座標で位置を指定するのでわかりにくい。
  • 文字のフォント、色などもJava側で設定が必要。

はじめからPDFを作成して出力する、JasperReports

Jaspersoft

JasperReports

  • jrxmlという拡張子のデータをGUIを使って作成を行う。
  • 帳票のテンプレートを作成し、テンプレート内にパラメータを設定してデータを渡すことで文字を表示させることができる。
  • 出力は「バンド」と呼ばれる区分に分けられて管理されている。
  • パラメータは型を持っているので、数字をカンマ区切りにしたりすることができる。
  • データベースから取得した値、CSV、エンティティデータなどをテーブルに繰り返し表示することができる。

メリット

  • GUIを使ってPDFのレイアウトを決めるため、視覚的にわかりやすい。
  • 日本語に対応している。
  • インターネット上にたくさんの情報がある。
  • フリーで利用可能。

デメリット

  • 複雑なレイアウトはテンプレートの作成が難しい。

まとめ

いろいろと調べた結果、今回はJasperReportsを使いPDFの帳票を作成することになりました。
 
次回はインストールの方法から、実際にデータを表示するところまでをお伝えしたいと思います。

記事をシェア
MOST VIEWED ARTICLES