--- title: "Design PDF proposal templates" slug: "generating-reports" description: "Learn about the parameters, methods and expressions to generate PDF and Excel reports in Zilliant CPQ." updated: 2026-07-22T14:07:30Z published: 2026-07-22T14:07:30Z canonical: "docs.zilliant.com/generating-reports" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.zilliant.com/llms.txt > Use this file to discover all available pages before exploring further. # Design PDF proposal templates A proposal report template controls how your PDF proposals look and what data they display. JasperSoft Studio lets you design these templates visually, while still allowing you to include dynamic data such as quote or agreement details, pricing, and product information. Learn how to design a PDF proposal report template: 1. Complete the prerequisites. 2. Create a template file in JasperSoft. 3. Add content elements. 4. Add parameters and fields. 5. Add utility methods. 6. (Optional.) Use custom fonts in reports. 7. (Optional.) Add report translations. --- ## Prerequisites To create a PDF proposal template, download and install [JasperSoft Studio](https://community.jaspersoft.com/download-jaspersoft/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). --- ## Create a template file in JasperSoft To create a report template file, read [Creating and Customizing Templates](https://community.jaspersoft.com/documentation/jaspersoft%C2%AE-studio/tibco-jaspersoft-studio-user-guide/v900/jss-user-_-templates-creating/#jss-user-templates_1224922613_1025721) in the official [JasperSoft Studio documentation](https://community.jaspersoft.com/documentation/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). It walks you through creating a JRXML file, placing elements, and previewing data. When you create a template, you get a blank report with default bands (sections of the report). ### Understand report bands Bands are containers that define where content appears in the PDF. Templates consist of the following default bands: - **Title**—Report’s first page. It can include a cover title or an intro. - **Page Header**—Top of every page. It can include logos, report title, or column labels. - **Column Header**—Labels for data columns. - **Detail**—Displays the main report content. It repeats for each sales item included in the report and can show values such as attributes, price items, or sales item details. Detail bands are often used to create table-like structures, for example, to represent the bill of materials in a quote or an agreement. - **Column Footer**—Bottom of each column. - **Page Footer**—Bottom of every page. It can include page numbers or disclaimers. - **Summary**—Last page. It can include totals, signatures, or closing text. Think of bands like a PowerPoint master layout. Instead of designing every page, you define content once in the right band, and Jasper handles the repetition. --- ## Add content elements Elements are the building blocks inside bands. Drag them from the Palette in JasperSoft Studio. Then, fill them in with [parameters and fields](/main/docs/generating-reports#add-parameters-and-fields) to dynamically pass values from CPQ to the report. The most commonly used content elements are: - **Text Field**—Displays values like quote name, account, or payment terms. Example expression: ```bash $P{Quote}.getAttributeValue("objectName")bas ``` - **Image**—Displays logos or product images. For the list of expressions to use to add images, read [SECTION]. Example expression: ```bash $P{CMIS} + "/logos/companyLogo.png" ``` - **Rectangle/Line**—Add visual separators or create borders. - **Break**—Forces content to continue on a new page. - **Table**—Best way to show structured data like a bill of materials (BOM). - **List**—Displays repeating values outside a strict table, useful for partner functions. For more details about content elements and how to work with them, read the official [JasperSoft Studio documentation](https://community.jaspersoft.com/documentation/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). --- ## Add parameters and fields Use parameters and fields to pass values from CPQ to the report. For details about parameters and fields in JasperSoft Studio and adding them to the template, read [Fields](https://community.jaspersoft.com/documentation/jaspersoft%C2%AE-studio/tibco-jaspersoft-studio-user-guide/v900/jss-user-_-fields-_-fields-intro/#jss-user-fields_3661870058_1023586) and [Parameters](https://community.jaspersoft.com/documentation/jaspersoft%C2%AE-studio/tibco-jaspersoft-studio-user-guide/v900/jss-user-_-parameters-_-parameters-intro/#jss-user-parameters_221620694_1024620) in the official [JasperSoft Studio documentation](https://community.jaspersoft.com/documentation/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). For details about available parameters and fields, read [Parameters and fields](/main/docs/generating-reports#parameters-and-fields). > [!WARNING] > Note > > When you add a subreport component into a band, always map the parent’s `REPORT_PARAMETERS_MAP` into the subreport so it can see Quote, CMIS, and your bundles. ### Example of building a line item table Most quotes and agreements include a bill of materials (BOM), which lists products, quantities, and prices. Use a Table element to display this data. 1. Drag a **Table** element into the **Detail** band. 2. Link it to the SalesItem dataset. It represents all line items in the quote or agreement. 3. Add columns and enter [parameters and fields](/main/docs/generating-reports#add-parameters-and-fields) to dynamically pass values from CPQ to the report. For example: - Position—`$F{SalesItem}.getAttributeValue("salesItemPosition")` - Description—`$F{SalesItem}.getAttributeValue("objectName")` - Quantity—`$F{SalesItem}.getAttributeValue("includesItemHeaderPriceItem","itemHeaderQuantity")` - Unit of measurement—`$F{SalesItem}.getAttributeValue("hasUnitofMeasure","objectName")` - Price—`$F{SalesItem}.getAttributeValue("includesItemHeaderPriceItem","itemHeaderTotalPrice")` 4. Format the table: - Set column widths evenly. - Add borders for readability. - Use a currency formatter for pricing. For more details about formatting tables, read [Working with tables](https://community.jaspersoft.com/documentation/jaspersoft%C2%AE-studio/tibco-jaspersoft-studio-user-guide/v900/jss-user-_-tables-intro/#jss-user_tables_938618886_1023927) in the official [JasperSoft Studio documentation](https://community.jaspersoft.com/documentation/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). --- ## Add utility methods CPQ offers built-in utility methods that let you quickly access quote or agreement information (`Quote`) and sales item information (`SalesItem`). For details on supported utility methods, read [Utility methods to get information for reports](/main/docs/generating-reports#utility-methods-to-get-information-for-reports). --- ## Use custom fonts in reports You can use custom fonts in the PDF reports. Follow these steps: 1. Package selected fonts into the `jasper-fonts.jar` file. For details on creating the file, read these [instructions](https://community.jaspersoft.com/knowledgebase/best-practices/custom-font-font-extension/) ![](https://cdn.document360.io/24f960e8-3c1c-4c18-a2c6-83b6ae4aab84/Images/Documentation/external-link-svgrepo-com.svg?sv=2026-02-06&spr=https&st=2026-11-10T17%3A05%3A09Z&se=2026-11-10T18%3A05%3A09Z&sr=c&sp=r&sig=aDnJykXVHl4TM8rSUwAVwSHQnQvCIC0QlIEqZmmLDxk%3D). 2. In CPQ, from the application left navigation area: - In the classic view, select **Administration**. - In the new UI, select **Settings** > **Administration**. 3. From the top navigation area, select **Content Management**, then select **fonts**. 4. Upload the `.jar` file. --- ## Add report translations You can configure a PDF report to print in multiple languages. Follow these steps: 1. From the application left navigation area: - In the classic view, select **Administration**. - In the new UI, select **Settings** > **Administration**. 2. From the top navigation panel, select **Content Management**. 3. Select **localization**, then select **report-customization**. Each **message.properties** file defines one language. > [!WARNING] > Note > > Server restart required for changes to take effect.