Package net.sf.jasperreports.export

Provides exporter input, exporter output and exporter configurations

Exporter Input

All the input data the exporter might need is supplied by the so-called exporter input before the exporting process is started. This is because the exporting process is always invoked by calling the exportReport() method of the Exporter interface, and this method does not receive any parameters when called.

The input data for an exporter comes in the form of one or more JasperPrint objects that must be exported to some other document format, along with other optional export settings. These JasperPrint objects may be already in memory, come from the network through an input stream, or reside in files on disk.

An exporter should be able to handle such a wide range of document sources. In fact, all the exporter implementations that are shipped inside the library already do this. They all extend the JRAbstractExporter class, which holds all the logic for dealing with the source documents that need to be exported inside its defined setExporterInput(ExporterInput) method.

As shown in the method signature, all we need is an ExporterInput instance that holds the necessary input data. This object must implement the public List<ExporterInputItem> getItems() method in order to obtain a list of ExporterInputItem objects. Each ExporterInputItem object in the list contains a single JasperPrint object along with its related export configuration settings.

Exporter Output

There are at least three types of exporters, depending on the type of output they produce:
  • Exporters that export to text- or character-based file formats (HTML, RTF, CSV, TXT, XML ... exporters)
  • Exporters that export to binary file formats (PDF, XLS ... exporters)
  • Exporters that export directly to graphic devices (Graphics2D and Java Print Service exporters)
The first two categories of exporters reuse generic exporter settings for configuring their output. A text- or character-oriented exporter first looks into its ExporterOutput setting to see whether it needs to output the text content it produces to:
  • a supplied java.lang.StringBuffer object
  • a supplied java.io.Writer object
  • a supplied java.io.OutputStream object
  • a java.io.File object
  • a file with a given java.lang.String file name
If none of these OUT parameters have been set, then the exporter throws an exception to inform the caller.

A binary exporter uses similar logic to find the output destination for the binary content it produces. It checks generic exporter output settings in this exact order: java.io.OutputStream, java.io.File, or file with a given java.lang.String file name.

Special exporters that do not produce character or binary output but rather render the document directly on a target device have special export settings to configure their output.

Output settings for all built-in exporters can be set using the setExporterOutput(O exporterOutput) method inherited from their JRAbstractExporter parent class. The exporterOutput argument must be an instance of ExporterOutput interface.

Export Configuration Settings

Other export configuration settings can be communicated to exporters using the public void setConfiguration(C configuration) and public void setConfiguration(RC configuration) JRAbstractExporter parent class. The first method accepts an ExporterConfiguration argument and applies settings per exporter. The second one accepts a ReportExportConfiguration and applies settings per each exported report in a batch export.

Below are some examples of report configuration settings available in the ReportExportConfiguration class:

  • the start page index - specifies the 0-based index for the first page in a page range to be exported
  • the end page index - specifies the 0-based index for the last page in a page range to be exported
  • the page index - specifies the 0-based index for a single page to be exported. If present, this setting overrides both the first page index and the end page index
  • the x offset - to move the page content horizontally, when it doesn't always fit with the printer page margins
  • the y offset - to move the page content vertically, when it doesn't always fit with the printer page margins
  • etc

Related Documentation

JasperReports Tutorial
See Also:
JasperPrint, JRAbstractExporter