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 document, use a URL type that allows encoding the data 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

where data is the base 64 encoded data of the PDF document.

To embed PDFs, use the data protocol syntax in the Location property of the PDFBOX element.

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()