【要件定義】
・1つのボディページにて複数の繰り返しページを出力
・ダイナミックサブフォームの高さを動的に表示
・ページフッダ部、ダイナミックサブフォームの枠線固定表示(ダイナミックサブフォームデータオーバーフローする時の第②ページ以降も)
・社員番号毎に、出力総ページ数(AllPage)、現在のページ番号(CurrentPage)を表示
【作成手順】
1.トランザクションコード:SFPを使用してタスクを開始する
2.ボディページを作成
Page1 (dynamicForm)
∟page_header
∟meisai_header
∟meisai_data
∟meisai_item (dynamicForm)
∟field1…
3.マスタページ1を作成
MasterPage1
∟page_footer
∟pageAll
∟pageCur
∟Line1~n(ダイナミックサブフォームの枠線)
4.マスタページ2を作成
MasterPage2
∟page_footer
∟pageAll
∟pageCur
∟Line1~n(ダイナミックサブフォームの枠線)
※データオーバフローする時、適用されます。
5.各配置について
① ページを繰り返し表示する為、ボディページ全体を繰り返しフォームを設定します。
② 次の社員番号を自動改ページする為、page_headerの「ページ番号」→「配置」に「ページ”MasterPage1”上」を設定します。
※また、下記の方法でも実現できます。
Page1の「ページ番号」→「条件付き改行」→「編集」をクリックするで、条件付き改行の編集ポップアップが表示されます。ポップアップで改行条件を選択することができます。ここで、社員番号を選択して、再開位置にて「ページ”MasterPage1”の先頭」を選択します。
③ データオーバーフローする時、残りデータはマスタページMasterPage2にて表示する為、meisai_dataの「ページ番号」→「オーバーフロー」に「ページ”MasterPage2”へジャンプ」を設定します。
④ 社員番号内改ページする時、meisai_headerを付く為、meisai_itemの「ページ番号」→「オーバーフローリーダー」に「meisai_header」を設定します。
⑤ ダイナミックフォームmeisai_itemの高さは項目field1の内容に応じて、動的に表示する為、
・field1の「フィールド」→複数行をcheck on
・field1の「レイアウト」→高さ「拡大して合わせる」をcheck on
・meisai_itemの「レイアウト」→高さ「自動調整」をcheck on
6.Javascriptで総ページ数及び現在ページ番号の計算
例: rootNode(PDF_DATA)::ready:layout
var pageCur = 0;
var pageAll = 0;
function footerNode(ipageAll, ipageCur) {
this.pageAll = ipageAll;
this.pageCur = ipageCur;
}
function setFooterNode( ) {
var page1FooterArr = new Array();
var page2FooterArr = new Array();
var pageSize = PDF_DATA.Page1.all.length;
for (var i = 0; i <pageSize; i++ ) {
var bodyPage1 = xfa.resolveNode("PDF_DATA.Page1[" + i + "]");
var ppageAll = xfa.layout.absPageSpan(bodyPage1);
var footerNode1 = new footerNode(ppageAll, 1);
page1FooterArr.push(footerNode1);
for (var j = 2; j <= ppageAll; j++) {
var footerNode2 = new footerNode(ppageAll, j);
page2FooterArr.push(footerNode2);
}
}
pageSize = PDF_DATA.pageSet.MasterPage1.all.length;
for (i = 0; i< pageSize; i++) {
var masterPage1 = xfa.resolveNode("PDF_DATA.pageSet.MasterPage1["+ i +"]");
masterPage1.resolveNode("page_footer.PageAll").rawValue = page1FooterArr[i].pageAll;
masterPage1.resolveNode("page_footer.PageCur").rawValue = page1FooterArr[i].pageCur;
}
if ( PDF_DATA.pageSet.MasterPage2 != null ) {
pageSize = PDF_DATA.pageSet.MasterPage2.all.length;
for (i = 0; i< pageSize; i++) {
var masterPage2 = xfa.resolveNode("PDF_DATA.pageSet.MasterPage2["+ i +"]");
masterPage2.resolveNode("page_footer.PageAll").rawValue = page2FooterArr[i].pageAll;
masterPage2.resolveNode("page_footer.PageCur").rawValue = page2FooterArr[i].pageCur;
}
}
}