カスタム検索

2009年4月28日火曜日

Grailsで帳票!JasperReport 帳票準備編

GrailsでJasperReportの帳票を出力する方法
長いので帳票準備編と出力編に分けます |-`)
XMLを使って出す方法です。
レポートからDB経由して直接引っ張り込む方法もありますが、帳票にあまりロジック的なものをいれたくないので・・・

・Jasperのライブラリをプロジェクトに追加する
公式サイトからjasperreports-3.5.0.jarをダウンロードしてきてプロジェクトの lib フォルダへ突っ込む
PDF出力にiTextを使っているので、iTextと、日本語出力用にiTextAsian.jarとiTextAsianCmaps.jarを入れます。

・DomainをXMLで出力出来るようにする
以下のような感じでxmlを返すアクションを作りましょう。
as XMLは import grails.converters.XML をしてやる必要があります。


def xmllist = {
render(text:Book.list() as XML,contentType:"text/xml",encoding:"UTF-8")
}


・XMLのサンプルデータを取得し、iReportへデータソースの定義をする
上記のアクションにアクセスするとブラウザにXMLが表示されます。(またはダウンロード)
このXMLを保存し、iReportから新規データソースを作成で、XML file datasourceを選択します。



適当な名称と、XMLを指定、Create a datasource using this expressionを選択して xpath を指定します。



・レポートへフィールドをセットする
Field項目の追加で、Descriptionにフィールド名(XMLのノード名)を入れます
追加されたフィールドをレポートへドラッグします
(値が日本語の場合はフォントを日本語フォントに変更します)



Preview を選択するとXMLから読み込まれた値が表示されます。
Previewした時点でテンプレートがコンパイルされ、同名の.jasperファイルが作成されます。
(iReport3.5ではコンパイルの方法がPreviewしか見つかりませんでした・・・)

ここでは日本語がサクっと出るのですが、このままだとPDFにした時に日本語が表示されません。
レポートのXMLを見ると(DesignerとPreviewの間にあるXML)fontタグがあるのですが、こいつにPDF出力用の設定をしてやる必要があります。
(iReport3.5ではここはGUIでは編集出来ないっぽいです)

以下平成角ゴの例です。

<font fontName="Hiragino Kaku Gothic Pro" pdfFontName="HeiseiKakuGo-W5" pdfEncoding="UniJIS-UCS2-H" isPdfEmbedded="true"/>


これで帳票の準備は完了です。
次回はこのjasperファイルを使ってプログラムから帳票を出力します

0 件のコメント: