If you choose to use the report design api to add "Page n of M", the following method will be executed onRender event.
/** * Creates a page footer for this masterpage that specifies Page n of m *
This is an equivalent translation of the following fragement:
<page-footer> <text id="403">
<property name="textAlign">right</property>
<method name="onRender">
this.text = "Page " + pageNumber + " of " + totalPage;
</method>
<property name="contentType">html</property> </text>
</page-footer>*/
public void createPageFooterUsingScripting() throws SemanticException{
SimpleMasterPageHandle masterPageHandle = design.getElementFactory().newSimpleMasterPage(null);
GridHandle footerGrid = design.getElementFactory().newGridItem(null/* name */, 1 /* cols */, 1 /* row */);
ColumnHandle colHandle = (ColumnHandle) footerGrid.getColumns().get(0);
RowHandle row01 = (RowHandle) footerGrid.getRows().get(0);
CellHandle cell1 = (CellHandle) row01.getCells().get(0);
TextItemHandle textItem = design.getElementFactory().newTextItem(null);
textItem.setProperty(DesignChoiceConstants.CHOICE_TEXT_ALIGN, DesignChoiceConstants.TEXT_ALIGN_CENTER);
textItem.setContentType(DesignChoiceConstants.TEXT_CONTENT_TYPE_HTML);
String pageFooterExpression = "this.text = \"Page \" + pageNumber + \" of \" + totalPage ";
textItem.setOnRender(pageFooterExpression);
cell1.getContent().add(textItem);
masterPageHandle.getSlot(ISimpleMasterPageModel.PAGE_FOOTER_SLOT).add(footerGrid);
design.getMasterPages().add(masterPageHandle);
}