長いので帳票準備編と出力編に分けます |-`)
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 件のコメント:
コメントを投稿