Use the
PrintOutputController to
retrieve and instance of the
IPrintOptions object saved with
the report.
PrintOutputController printOutputController = rcd.getPrintOutputController();
IPrintOptions printOptions = printOutputController.getPrintOptions();
Clone the
PrintOptions
object.
IPrintOptions newPrintOptions = (IPrintOptions)printOptions.clone(true);
Retrieve the
PageMargins
object.
IPageMargins newMargins = newPrintOptions.getPageMargins();
Create a new
PageMarginConditionFormulas and
IConditionFormula object.
PageMarginConditionFormulas formulas = new PageMarginConditionFormulas();
IConditionFormula condFormula = new ConditionFormula();
Set the formula syntax and text.
String formulaText = "If Remainder(pagenumber,2) = 0 then 1440 else 2880";
condFormula.setSyntax(FormulaSyntax.crystal);
condFormula.setText(formulaText);
formulas.setFormula(PageMarginConditionFormulaType.left, condFormula);
Set the formulas in the
PageMargins
object and set the new margins in theIPrintOptions object.
newMargins.setPageMarginConditionFormulas(formulas);
newPrintOptions.setPageMargins(newMargins);
Use the
PrintOutputController to modify
the print options of the report.
printOutputController.modifyPrintOptions(newPrintOptions);
Example:
This sample creates a formula that checks whether a
page number is even or odd and sets the margins accordingly: if the page is an
even number, the margin is set to one inch; if the page is an odd number, the
margin is set to two inches. The formula is applied to the left margin of the
report.
void setPageMarginFormula(ReportClientDocument rcd) throws ReportSDKException
{
PrintOutputController printOutputController = rcd.getPrintOutputController();
IPrintOptions printOptions = printOutputController.getPrintOptions();
IPrintOptions newPrintOptions = (IPrintOptions)printOptions.clone(true);
IPageMargins newMargins = newPrintOptions.getPageMargins();
PageMarginConditionFormulas formulas = new PageMarginConditionFormulas();
IConditionFormula condFormula = new ConditionFormula();
String formulaText = "If Remainder(pagenumber, 2) = 0 then 1440 else 2880";
condFormula.setSyntax(FormulaSyntax.crystal);
condFormula.setText(formulaText);
formulas.setFormula(PageMarginConditionFormulaType.left, condFormula);
newMargins.setPageMarginConditionFormulas (formulas);
newPrintOptions.setPageMargins(newMargins);
printOutputController.modifyPrintOptions(newPrintOptions);
}This list includes the classes used by the sample
code:
com.crystaldecisions.sdk.occa.report.application.PrintOutputController
com.crystaldecisions.sdk.occa.report.application.ReportClientDocument
com.crystaldecisions.sdk.occa.report.definition.IConditionFormula
com.crystaldecisions.sdk.occa.report.definition.ConditionFormula
com.crystaldecisions.sdk.occa.report.definition.PageMarginConditionFormulas
com.crystaldecisions.sdk.occa.report.definition.PageMarginConditionFormulaType
com.crystaldecisions.sdk.occa.report.document.IPrintOptions
com.crystaldecisions.sdk.occa.report.lib.ReportSDKException