RTFテンプレートのPDF分割の実装
この項では、RTFテンプレートから生成されたレポートに対してPDF分割を有効にする方法について説明します。
このセクションには、次のトピックが含まれています:
RTFテンプレートのコマンドの入力
この機能を使用するテンプレートを設計する場合は、これらの問合せを指定するコマンドを追加する必要があります。
-
データ内で繰り返される要素(単純なfor-eachコマンドを使用)
-
各PDFファイルに要素が出現する回数
-
索引ファイルに含める情報(データ要素)
これを実現するには、文書を分割する要素のfor-eachループ内のテンプレートに、次の2つのコマンドを入力する必要があります:
-
<?catalog-index-info:name;element_name?>
where
nameは、各ドキュメントに含まれるレコード:自およびレコード:至を識別するために索引ファイルで使用される、選択した名前です。
element_nameは、上で識別する名前の値を提供する要素のXMLタグ名です。
catalog-index-infoコマンドは、作成される索引ファイルの作成を定義します。
-
<?if:position() mod n = 0?><?document-split:?><?end if?>
where
nは、PDFファイルごとに含めるレコードの数です。
このコマンドは、カウントされる要素のfor-eachループ内に配置する必要があります。 このコマンドは、レコード数がn値と等しい場合に、次の改ページの後にドキュメントを分割するように「パブリッシャ」に指示します。
document-splitが実行されるたびに、catalog-index-infoコマンドで定義された名前と値のペアがインデックス・ファイルに書き込まれます。
例 - 各部門で分割
この例は、ここに示したXMLデータに基づいています。
この例は、次のXMLデータに基づいています:
<DATA_DS>
<G_EMP>
<DEPARTMENT_NAME>Sales</DEPARTMENT_NAME>
<FIRST_NAME>Ellen</FIRST_NAME>
<LAST_NAME>Abel</LAST_NAME>
<HIRE_DATE>1996-05-11T00:00:00.000-07:00</HIRE_DATE>
<SALARY>11000</SALARY>
</G_EMP>
<G_EMP>
<DEPARTMENT_NAME>Sales</DEPARTMENT_NAME>
<FIRST_NAME>Sundar</FIRST_NAME>
<LAST_NAME>Ande</LAST_NAME>
<HIRE_DATE>2000-03-24T00:00:00.000-08:00</HIRE_DATE>
<SALARY>6400</SALARY>
</G_EMP>
<G_EMP>
<DEPARTMENT_NAME>Shipping</DEPARTMENT_NAME>
<FIRST_NAME>Mozhe</FIRST_NAME>
<LAST_NAME>Atkinson</LAST_NAME>
<HIRE_DATE>1997-10-30T00:00:00.000-08:00</HIRE_DATE>
<SALARY>2800</SALARY>
</G_EMP>
<G_EMP>
<DEPARTMENT_NAME>IT</DEPARTMENT_NAME>
<FIRST_NAME>David</FIRST_NAME>
<LAST_NAME>Austin</LAST_NAME>
<HIRE_DATE>1997-06-25T00:00:00.000-07:00</HIRE_DATE>
<SALARY>4800</SALARY>
</G_EMP>
...
</DATA_DS>
この例では、出力PDFレポートに各従業員のドキュメントが含まれています。 部門ごとに新しいPDFファイルを生成します。 PDFファイルに含まれる各レコードのFIRST_NAMEおよびLAST_NAMEを索引にリストします。
この出力を実現するには、テンプレートに次のように入力します:
<?for-each-group:ROW;./DEPARTMENT_NAME?>
<?for-each:current-group()?>
<?catalog-index-info:'First Name';FIRST_NAME?>
<?catalog-index-info:'Last Name';LAST_NAME?>
...
<?end for-each?>
<?document-split:?>
<?end for-each-group?>