Oracle® Fusion Middleware Oracle Business Intelligence Publisherレポート・デザイナーズ・ガイド 12c (12.2.1.4.0) E96099-04 |
|
前 |
次 |
この項では、PDFレポート出力で静的な繰返しコンテンツを再利用して、全体的なPDFファイルのサイズを削減する方法について説明します。
この項では、次の項目について説明します。
レポートに静的コンテンツがあり、レポート内でのコンテンツの位置も決まっている場合(たとえば、米国W-2フォーム裏面の説明文など)、このBI Publisherの機能を使用して、生成するPDFファイルのサイズを削減できます。
W-2フォームを例にあげると、レポートでは次の図に示されているような出力が期待されます。
各従業員には、固有の内容がレンダリングされますが、それぞれの裏面(または2ページ目)には、同一の説明が記載されています。
この一連の説明は、再利用可能な静的コンテンツとして定義できます。コンテンツを再利用可能な静的コンテンツとして指定すると、BI Publisherによって、その静的コンテンツを含むPDFドキュメントが一度だけ生成され、必要時に他の位置から参照されます。これにより、全体的な出力ファイルのサイズが削減されます。
この機能には次の制約があります。
生成されるレポートで再利用される静的コンテンツは、生成されるPDF出力のページに収まる必要があります。
静的コンテンツよりも前にレンダリングされるレポートの内容は、固定の高さである必要があります。たとえば、W-2フォームでは、静的コンテンツがレンダリングされる前に、一連の固定のフィールドがレンダリングされます。再利用可能な静的コンテンツは、レンダリングごとにページ原点から同じ位置に配置されます。
この機能は、PDF出力を生成するRTFテンプレートにのみ使用可能です。
再利用する静的コンテンツを定義するには、テンプレート内で次のタグを使用してコンテンツを囲みます。
<?reusable-static-content:?>
… ここに静的コンテンツを記述 …
<?end reusable-static-content?>
これらのタグを静的コンテンツの前後に挿入することで、生成するファイルにこのコンテンツを1回のみ記述して、出現箇所ごとに同じ位置から参照するように指定します。
BI PublisherではPDF出力の生成時、出力ファイルのサイズが制限されません。ただし、ファイルのサイズが2GBに近づくと、Adobe Acrobat Readerではファイルを開いたり処理したりできなくなる場合があります。BI Publisherには、大きなPDF出力ファイルを小さく管理しやすいファイルに分割する機能があります。分割後もレポートは1つの論理的なユニットとして整合性が維持されます。
レポートのPDF出力の分割を有効にすると、そのレポートは複数のファイルに分割され1つのZIPファイル内に生成されます。出力タイプはPDFZです。これらのコンポーネント・ファイルに簡単にアクセスできるように、BI Publisherによってインデックス・ファイルも生成され、各コンポーネントのPDFファイルに含まれるジャンプ先およびジャンプ元の要素が指定されます。
レポート設計者は、この機能を有効にするために、この項で説明されている方法でレポートを設定する必要があります。
この機能を使用する前に次のステップを実行し、その機能上の制限に注意してください。
この機能は、RTFテンプレートまたはPDFテンプレートから生成されたPDF出力に対してのみサポートされます。
レポートに入力されるデータセットは、平坦なXMLデータ(ROWSET/ROW)である必要があります。階層化または連結されているデータセットは使用できません。
データセットは、後述の繰り返し要素として指定されている要素でソートする必要があります。
レポート設計者は、レポートの分割を有効化するために、次のステップを決定する必要があります。
カウンタとして機能する繰返し要素を選択します。
1つのPDFファイル当たりの繰返し要素のインスタンス数を決定します。
生成されるインデックス・ファイルに含めるデータ要素を選択します。
この機能を使用するテンプレートを設計する場合は、次の問合せを指定するコマンドを追加する必要があります。
データ内のどの要素が繰り返されるか(単純にfor-eachコマンドを使用します)
各PDFファイルでその要素が何回出現するか
インデックス・ファイルにはどのような情報(データ要素)を含めるか
これを行うには、テンプレート内のドキュメントを分割する要素のfor-eachループ内に次の2つのコマンドを入力する必要があります。
<?catalog-index-info:name;element_name?>
説明
nameは、インデックス・ファイルで各ドキュメントに含まれるジャンプ先およびジャンプ元のレコードを識別するために使用される名前です。
element_nameは、前述の手順で識別された名前の値を提供する要素のXMLタグ名です。
catalog-index-infoコマンドは、作成されるインデックス・ファイルの構造を定義します。
<?if:position() mod n = 0?><?document-split:?><?end if?>
説明
nは、1つのPDFファイルに含めるレコードの数です。
このコマンドは、カウントする要素のfor-eachループ内に配置する必要があります。このコマンドによって、BI Publisherは、nで与えられた値とレコード数が同じ場合、次の改ページの出現後にドキュメントを分割します。
ドキュメントの分割が実行されるたびに、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?>
このセクションでは、出力を複数のPDFファイルに分割するためにPDFテンプレートで必要なコマンドを説明します。
PDFテンプレートでこの機能を有効化するには、テンプレート内の次の表にリストされている3つのフォーム・フィールドに「ツールチップ」フィールドで指定されたコマンドを入力します。
フォーム・フィールド名 | ツールチップのコマンド |
---|---|
REPEAT-ELEMENT |
|
CATALOG-INDEX-INFO |
|
SPLIT-COUNT |
|