Implement PDF Splitting for an RTF Template

This section describes how to enable PDF splitting for reports generated from RTF templates.

This section includes the following topics:

Enter the Commands in an RTF Template

When you design a template to use this feature, you must add commands to specify these queries.

  • What element in the data is repeated (using the simple for-each command)

  • How many occurrences of the element are included in each PDF file

  • What information (data elements) to include in the index file

To achieve this, the following two commands must be entered in the template within the for-each loop of the element by which you want the document to split:

  • <?catalog-index-info:name;element_name?>

    where

    name is the name that you choose that is used in the index file to identify the from and to records included in each document.

    element_name is the XML tag name of the element that provides the value for name that you identify above.

    The catalog-index-info command defines the construction of the index file that is created.

  • <?if:position() mod n = 0?><?document-split:?><?end if?>

    where

    n is the number of records you want included per PDF file.

    This command must be placed within the for-each loop of the element being counted. This command instructs Publisher to split the document after the next page break when the number of records equals the n value.

    Each time the document-split is performed, the name-value pairs defined in the catalog-index-info command are written to the index files.

Example - split by each department

This example is based on the XML data given here.

This example is based on the following XML data:

<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>

In this example, the output PDF report includes a document for each employee. You want a new PDF file generated for each department. You want the index to list the FIRST_NAME and LAST_NAME from each record that is included in the PDF file.

To achieve this output, enter the following in the template:

<?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?>