JasperReports 6 で PDF を作り、ブラウザーで表示する (3)

← (2) 帳票レイアウトを作成する

目次

Java プログラムから PDF を出力する

■PDF の出力に必要な JAR ファイルをダウンロード・配置

以下をダウンロードします。

解凍したフォルダー内の、以下の JAR ファイルを、Tomcat プロジェクトの lib フォルダーに配置します。
(本文内のプログラムを動作させるために、最低限必要と思われる JAR ファイルたちです。)
また、一部の JAR ファイルについては、プログラムのビルド時にも参照されるので、Eclipse のビルド・パスに追加します。

JAR ファイル名 ビルド・パスに追加 ファイルの入手元
jasperreports-x.x.x.jar jasperreports-x.x.x-project\dist
jasperreports-fonts-x.x.x.jar
jasperreports-javaflow-x.x.x.jar
commons-beanutils-x.x.x.jar jasperreports-x.x.x-project\lib
commons-collections-x.x.x.jar
commons-digester-x.x.jar
commons-logging-x.x.x.jar
itext-pdfa-x.x.x.jar
itextpdf-x.x.x.jar

lib フォルダーの中身は、こんな感じ。

create-pdf-by-jasperreports6-and-java_xlk5tde3

■プログラムを作る

Tomcat プロジェクトにサーブレット クラスを 1 つ追加します。ここでは、クラス名を「CreatePdfReportServlet」としました。クラスの追加先のパッケージは適当に。

create-pdf-by-jasperreports6-and-java_9irbc5k6

以下のように記述します。

プログラムの内容は意外と簡単です。

  1. 帳票レイアウト ファイルをコンパイルします。その結果は、JasperReport クラスのインスタンスになります。
  2. 帳票に埋め込むパラメーターを作成します。
  3. 帳票に埋め込むデータを取得するためのデータ ソースを作成します。今回の場合、JRCsvDataSource クラスのインスタンスになります。
  4. 1 で作成したコンパイル済み帳票レイアウト、2 で作成したパラメーター、3 で作成したデータ ソースを使って、帳票を作成します。その結果は、JasperPrint クラスのインスタンスになります。
  5. 4 を使って、PDF を出力します。
帳票レイアウト ファイルを動的にコンパイルする方法とは別に、前もってコンパイル済みの帳票レイアウト ファイルを準備しておき、実行時にロードする方法もあるので、ついでに実装してみました。コンパイルが不要な分、パフォーマンス的にはこちらの方が有利です。ただ、この方法で PDF 出力したら、文字の右揃えが適用されなかった…。なして?
JRCsvDataSource クラス以外にも、データベース用のクラスとか、いろいろ用意されています。また、JRDataSource インターフェイスを実装するクラスを実装して、独自のデータ形式を扱えるようにするのも、ちょっと楽しいかも。

JasperReport の API のリファレンスは、こちら。

■出力結果をブラウザーで確認

ブラウザーでサーブレットにアクセスして、PDF の出力結果を確認します。

create-pdf-by-jasperreports6-and-java_u0lfljde

一応出力はされている様子ですが、日本語が表示されていないという残念な結果に。どうやら、日本語のフォントを出力する設定が必要なようです。

ところで、PDF で日本語を表示するには、日本語フォントを埋め込まない方法と、埋め込む方法があります。それぞれメリット、デメリットがありますので、状況に応じて使い分ける必要があります。

(4) 日本語が出力できるようにする ~PDF にフォントを埋め込まない編~ →

KPDN

プログラミングとゲームが好きな、しがないにゃんこ好きです。わんこも同じぐらい好きです。最近、物忘れどんどんが酷くなってきた。

コメントを残す