PDF Box

A PDF Box displays one or more pages from a PDF document in the report.

PDF Box (PDFBox type) is a layout container, found in the Drawables group in the Tool Box view. The PDF Box propagates if the PDF has more than one page.

Properties

Select the object on the Report Design page to display its properties in the Properties View.

The Location property specifies the file name and path of the PDF document.

The Password property is used for password-protected documents.

The Page Ranges property specifies the pages to include.

The cropRightWidth, cropBottomWidth, cropLeftWidth, and cropTopWidth properties specify the amount to be cropped from the margins.

Embedding PDFs

To embed a resource, use the "data" URL type, which allows the data to be encoded in the body of the URL text. The full syntax of data URLs is:

data:[<MIME-type>][;charset=<encoding>][;base64],<data>

See data URI scheme (Wikipedia link) for a complete description of the concept and the syntax.

For our purposes, it is sufficient to support a simplified subset that omits the charset and assumes that characters are encoded in UTF-8. Image data is always encoded in base64 (Wikipedia link) while other data such as HTML content is typically “Percent encoded” (Wikipedia link).

For PDF content, a URL has the form “data:application/pdf;base64,<data>. To embed PDFs, use the data protocol syntax in the Location property of the PDFBOX element:
data:application/pdf;base64, followed by the base 64 encoded data of the pdf document

To automatically construct this URL, click the ... button for the Location property. Choose the file and select the Embed in document check box.

Figure: Embed in document checkbox


The figure is a screenshot showing the Embed in document checkbox, which allows you to embed a PDF document in a report.

Displaying PDFs depending on a variable

In this example, all PDFs are stored in the directory C:/My Docs/pdfs/, and the PDF name is determined by the field orderline.product.pdf. Enter the following in the Expression Editor for the Location property:

"file:///C:/My Docs/pdfs/"+orderline.product.pdf.trim()