レンダリングパラメータによる帳票定義
帳票のページ構成,フィールドに設定する値,スタイル指定などの情報をレンダリングパラメータと呼ぶ一種のDSL(ドメイン固有言語)で統一的に記述できます。
レンダリングパラメータは,LL言語から利用する場合は辞書(ハッシュ),リスト(配列)などのLL言語ネイティブのデータ構造で作成します。JVM, .Net 上のプログラム言語または外部コマンドから利用する場合はJSON文字列として記述します。
帳票のページ構成
複合帳票
PDFテンプレートを自在に組み合わせて,複合帳票を作成できます。レンダリングパラメータの指定により,PDFテンプレートの組み合わせを動的に変えることが可能です。
PDFテンプレートの用紙サイズや用紙方向が異なっていても問題ありません。
// 複合帳票の記述例(JSON形式)
"template": [
{"header": "./hyousi.pdf"},
{"body": "./mitumori.pdf"}
]
連続帳票
テーブル状の明細項目が1ページに収まらない場合には,自動的に必要なページ数を計算して,連続帳票として出力します。物理的に1ページに収まるテーブルの行数を意識することなく,明細項目データを作成することができます。
ページ中に行数の異なるテーブルが複数存在していても問題ありません。
// 連続帳票の記述例(JSON形式)
"template": [
{"*": {"src": "./mitumori.pdf", "rows": 10}}
]
フィールド設定値
単項目
フィールドに設定する値を辞書(ハッシュ)形式データ構造で記述します。
フィールド名を辞書のキーに,フィールドの値を辞書の値に対応付けます。
// 単項目への値の設定(JSON形式)
"context": {
"date": "平成23年1月22日",
"number": "10R0001",
"to": "△△△惣菜株式会社",
"title": "肉じゃがの材料",
"delivery_date": "平成23年1月22日",
"delivery_place": "貴社指定場所",
"payment_terms": "銀行振込",
"expiration_date": "発行から3ヶ月以内",
}
テーブル項目
フィールド名を「テーブル名.列番号」または「テーブル名.行番号.列番号」の形式とすることで,テーブル形式の項目として認識されます。
テーブル形式の項目に対しては,配列(リスト)形式でデータを列挙します。
// テーブル項目への値の設定(JSON形式)
"context": [
{
"table": [
[1, "N001", "豚肉", "200g", 230, 460],
[2, "G001", "エビ", "16尾", 40, 640],
[3, "Y001", "小松菜", "1束", 120, 120],
[4, "Y002", "ミツバ", "2束", 30, 60],
[5, "Y003", "ショウガ", "1かけ", 30, 30]
]
}
]
スタイル指定
スタイルの動的変更
テキストの表示色・書式,境界線の色・幅・スタイル・マージンなど,様々なフィールドの表示属性を動的に変更することができます。
// フィールド値と同時にstyleも指定(JSON形式)
"context": {
"title": {
"value": "2012.01.01\nあけましておめでとう\nございます",
"color": "Gray",
"line-height": 1.8
}
}
ワイルドカードによる適用範囲の指定
ワイルドカードを用いた記法によりスタイルの適用範囲を柔軟に指定できます。
例えば,「最終ページ以外の『合計』欄を非表示にする」「テーブルの奇数行の背景色を変える」といった指定をプログラムレスで表現できます。
// style要素の記述例(JSON形式)
"style": [
// 最終ページ以外の“total”フィールドを非表示にする
{"[0:-1].total": {"visible": false},
// 奇数行の背景色を灰色にする
{"table.[1::2]": {"background-color": [230, 230, 230]}}
]
書式指定
数値・日付/時刻のデータにおいては書式指定が行えますので,「数値に3桁毎にカンマを挿入する」「日付を和暦で表記する」といった書式指定がプログラム言語の書式指定機能に頼ることなく実現できます。
// 書式指定の記述例(JSON形式)
"style": {
{"total": {"format": "#,#,千円"}},
{"today": {"date": "GGEE年MM月DD日"}}
}
フィールドの動的な追加
PDFテンプレートに配置された既存フィールドの属性を変更するだけでなく,新規にテキスト・画像・矩形・罫線を追加することも可能です。
// 動的にテキストフィールドを追加する例(JSON形式)
"title": {
"new": "Tx",
"value": "タイトル",
"color": "Red",
"rect": [183.553, 797.143, 407.837, 815.705]
}
Field Reports試用版は下記ページよりダウンロードしてください。