Java
springframework
spring-mvc
JasperReports

SpringMVCとJasperReportsで帳票を印刷してみた 番外編(Variables編)

前回までの記事

ページ数を表示したい

帳票なら絶対ページの下についてる奴がありますね。
ページ数です。

JasperReportはVariablesというシステム変数的なものが用意されていて、
ユーザーはシステムが吐き出す数字を帳票に写すことが出来ます。それではやってみましょう

ページフッダーを表示する

前回まで使っていた帳票です。

image.png

各ページに欲しいので、ページフッダーを表示します。

テキストフィールドを配置する

今回欲しいのは
現在のページ数総ページ数です。

よってテキストフィールドを二つ配置します。

image.png

テキストフィールドにVariablesを設定する。

配置したテキストフィールドにVariablesを設定しましょう

たぶんこんな感じのフッダーが欲しいと思います。

1/2

これを実現しましょう。
左のテキストフィールドのExpressionに

$V{PAGE_NUMBER} + "/"

右のテキストフィールドに

$V{PAGE_NUMBER}

を設定しましょう。

image.png

フォントの設定忘れずに

jrxmlを編集する。

このままでは5ページ印刷されるとしたら
1/1  2/2  3/3  4/4  5/5
と印刷されてしまいます。

同じ変数を指定しているのだから当然ですね。

そうしないために右側のテキストフィールドの設定を変更します。

帳票のSourceを開いてください。

image.png

こんな画面が出てきたと思います。
このxmlファイルがjrxml:帳票ファイルの正体です。

これを今までGUIツールで操作していた訳ですね。

ページの総数を取得するためにソースをいじります。
右側のタグを探してください。

(色をつけるためにわざとxmlって拡張子にしてます。

Blank_A4.xml
            <textField>
                <reportElement x="520" y="35" width="34" height="14" uuid="a26088d6-0466-4753-b5ba-8932673a1ecf"/>
                <textElement>
                    <font fontName="IPAexg"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>

ここのtextFieldタグに属性をつけます。こんな風に編集してください。

Blank_A4.xml
            <textField evaluationTime="Report">>
                <reportElement x="520" y="35" width="34" height="14" uuid="a26088d6-0466-4753-b5ba-8932673a1ecf"/>
                <textElement>
                    <font fontName="IPAexg"/>
                </textElement>
                <textFieldExpression><![CDATA[$V{PAGE_NUMBER}]]></textFieldExpression>
            </textField>

このevaluationTimeは評価タイミングを編集する属性です。
デフォルトはNow、現在のページ数を表示する設定になっています。
これをReportに変更して、レポートのページ総数を取得する設定に変更します。

れっつ実行

設定が終わったら実行してみましょう。

image.png

ページ数がちゃんと印刷されてますね。

参考