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

Prev Next

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 .


Create a template file in JasperSoft

To create a report template file, read Creating and Customizing Templates in the official JasperSoft Studio documentation . 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 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:

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

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


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 and Parameters in the official JasperSoft Studio documentation .

For details about available parameters and fields, read Parameters and fields.

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 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 in the official JasperSoft Studio documentation .


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.


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 .

  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.

Note

Server restart required for changes to take effect.