net.sf.jasperreports.engine.export

## Class JRXmlExporter

- java.lang.Object
- - net.sf.jasperreports.engine.JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>
  - - net.sf.jasperreports.engine.export.JRXmlExporter

- All Implemented Interfaces:
    JRExporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput>, Exporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput>
  Direct Known Subclasses:
    JRXml4SwfExporter

      public class JRXmlExporter
      extends JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>

  Exports a JasperReports document to an XML file that contains the same data as a `JasperPrint` object, but in XML format, instead of a serialized class. As report templates are defined using the special XML syntax JRXML, the JasperReports library also has a special XML structure for storing generated documents in XML format. This format is called JRPXML because the files produced by the JRXmlExporter usually have the `*.jrpxml` extension.

  Such XML files can be parsed back into `JasperPrint` object using the `JRPrintXmlLoader` utility class. Their structure is validated against an internal XSD file called `jasperprint.xsd`, that provides the details of the JRPXML structure. Valid JRPXML files should point to the internal XSD file using a public location, as follows:

       <?xml version="1.0" encoding="UTF-8"?>
       <jasperPrint
         xmlns="http://jasperreports.sourceforge.net/jasperreports/print"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/print http://jasperreports.sourceforge.net/xsd/jasperprint.xsd"
         ...>

  The root element of a JRPXML document is `<jasperPrint>`, which contains a list of report custom properties (`<property>` tags), a list of element origins (`<origin>` tags), a list of report style definitions (`<style>` tags) that are reused by report elements throughout the document, and a list of pages (`<page>` tags), each of which contains a nested list of elements like lines, rectangles, ellipses, images, and texts.

  The quality of this exporter is equal to the `Graphics2D` exporter because it preserves 100% of the initial document content and properties. There is no loss in document quality when exporting to XML because the resulting XML content can be loaded back into a `JasperPrint` object that will look the same as the original one.

  The built-in viewers can display documents exported in JRPXML format because they actually rely on the `JRPrintXmlLoader` to load the document back into a `JasperPrint` object before rendering it on the screen.

  ### Embedding Images

  When exporting XML, pay special attention to how images are stored. The two ways are as follows:
  - If the exporter outputs to a file on disk, it stores the images contained by the source document in separate files that accompany the main JRPXML file. The image files are put in a directory that takes its name from the original destination file name plus the `_files` suffix, the same directory as the JRPXML file.
  - The exporter can embed images in the JRPXML file itself by encoding their binary data using a Base64 encoder. This simplifies transfer over the network or by direct output to streams.

  To determine how to handle images, set the `isEmbeddingImages()` exporter output flag, which expects a `java.lang.Boolean`. By default, the images are embedded in the resulting XML.
  Version:
    $Id: JRXmlExporter.java 7065 2014-04-29 12:48:15Z shertage $
  Author:
    Teodor Danciu (teodord@users.sourceforge.net)
  See Also:
    `JasperPrint`, `JRPrintXmlLoader`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected class` | `JRXmlExporter.ExporterContext`

    - ### Nested classes/interfaces inherited from class net.sf.jasperreports.engine.JRAbstractExporter

      `JRAbstractExporter.BaseExporterContext, JRAbstractExporter.PageRange`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static java.lang.String` | `DEFAULT_OBJECT_TYPE`
    `protected java.io.File` | `destFile`
    `protected static java.lang.String` | `IMAGE_PREFIX`
    `protected java.io.File` | `imagesDir`
    `protected boolean` | `isEmbeddingImages`
    `static XmlNamespace` | `JASPERPRINT_NAMESPACE`
    `static java.lang.String` | `PROPERTY_REPLACE_INVALID_CHARS` Stores the text sequence used to replace invalid XML characters
    `protected java.util.Map<Renderable,java.lang.String>` | `rendererToImagePathMap`
    `protected java.util.Map<java.lang.String,JRStyle>` | `stylesMap`
    `protected java.lang.String` | `version`
    `protected VersionComparator` | `versionComparator`
    `static java.lang.String` | `XML_EXPORTER_KEY` The exporter key, as used in `GenericElementHandlerEnviroment.getElementHandler(JRGenericElementType, String)`.
    `protected JRXmlWriteHelper` | `xmlWriter`

    - ### Fields inherited from class net.sf.jasperreports.engine.JRAbstractExporter

      `allSelector, crtCompositeConfiguration, crtCompositeItemConfiguration, crtItem, dateFormatCache, EXCEPTION_MESSAGE_KEY_END_PAGE_INDEX_OUT_OF_RANGE, EXCEPTION_MESSAGE_KEY_PAGE_INDEX_OUT_OF_RANGE, EXCEPTION_MESSAGE_KEY_START_PAGE_INDEX_OUT_OF_RANGE, exporterConfiguration, exporterContext, exporterInput, exporterOutput, filter, itemConfiguration, jasperPrint, jasperReportsContext, noBackcolorSelector, noneSelector, numberFormatCache, parameters, propertiesUtil, PROPERTY_DEFAULT_FILTER_FACTORY, PROPERTY_SUFFIX_DEFAULT_FILTER_FACTORY, styledTextUtil`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `JRXmlExporter()`
    `JRXmlExporter(JasperReportsContext jasperReportsContext)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `ensureOutput()`
    `protected void` | `exportBookmark(PrintBookmark bookmark)`
    `protected void` | `exportBookmarks(java.util.List<PrintBookmark> bookmarks)`
    `void` | `exportElement(JRPrintElement element)`
    `protected void` | `exportElements(java.util.Collection<JRPrintElement> elements)`
    `protected void` | `exportEllipse(JRPrintEllipse ellipse)`
    `protected void` | `exportFont(JRFont font)`
    `protected void` | `exportFrame(JRPrintFrame frame)`
    `protected void` | `exportGenericElement(JRGenericPrintElement element)`
    `protected void` | `exportGraphicElement(JRPrintGraphicElement element)`
    `protected void` | `exportHyperlinkParameter(JRPrintHyperlinkParameter parameter)`
    `protected void` | `exportHyperlinkParameters(JRPrintHyperlink hyperlink)`
    `void` | `exportImage(JRPrintImage image)`
    `protected void` | `exportLine(JRPrintLine line)`
    `protected void` | `exportOrigin(JROrigin origin)`
    `protected void` | `exportPage(JRPrintPage page)`
    `protected void` | `exportPen(JRPen pen)`
    `protected void` | `exportPen(java.lang.String element, JRPen pen)`
    `protected void` | `exportProperties(JRPropertiesHolder propertiesHolder)`
    `protected void` | `exportRectangle(JRPrintRectangle rectangle)`
    `void` | `exportReport()` Performs the export.
    `protected void` | `exportReportElement(JRPrintElement element)`
    `protected void` | `exportReportToStream(java.io.Writer writer)`
    `protected void` | `exportStyle(JRStyle style)`
    `void` | `exportTabStop(TabStop tabStop)`
    `void` | `exportText(JRPrintText text)`
    `protected java.lang.StringBuffer` | `formatTextLineBreakOffsets(short[] lineBreakOffsets)`
    `protected java.lang.Class<ExporterConfiguration>` | `getConfigurationInterface()`
    `java.lang.String` | `getExporterKey()`
    `java.lang.String` | `getExporterPropertiesPrefix()` Returns the properties prefix for the current exporter.
    `protected java.lang.Class<ReportExportConfiguration>` | `getItemConfigurationInterface()`
    `protected XmlNamespace` | `getNamespace()`
    `JRXmlWriteHelper` | `getXmlWriteHelper()` Returns the XML write helper used by this exporter.
    `protected void` | `initExport()`
    `protected void` | `initReport()`
    `protected boolean` | `isNewerVersionOrEqual(java.lang.String oldVersion)`

    - ### Methods inherited from class net.sf.jasperreports.engine.JRAbstractExporter

      `createFilter, defaultParseNumber, ensureInput, ensureJasperReportsContext, getBooleanCellValue, getCurrentConfiguration, getCurrentItemConfiguration, getCurrentJasperPrint, getCustomHandler, getDateCellValue, getDateFormat, getExporterContext, getExporterInput, getExporterOutput, getHyperlinkProducer, getJasperReportsContext, getLocale, getNumberCellValue, getNumberFormat, getOffsetX, getOffsetY, getPageRange, getParameter, getParameters, getPropertiesUtil, getReportContext, getStyledText, getStyledText, getTextFormatFactoryClass, getTextLocale, getTextTimeZone, getTextValue, getTextValueString, reset, resetClassLoader, resetExportContext, restoreElementOffsets, setClassLoader, setConfiguration, setConfiguration, setCurrentExporterInputItem, setExporterInput, setExporterOutput, setFrameElementsOffset, setJasperPrint, setJasperReportsContext, setOffset, setOffset, setParameter, setParameters, setReportContext`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### XML_EXPORTER_KEY

          public static final java.lang.String XML_EXPORTER_KEY

      The exporter key, as used in `GenericElementHandlerEnviroment.getElementHandler(JRGenericElementType, String)`.
      See Also:
        Constant Field Values

    - #### PROPERTY_REPLACE_INVALID_CHARS

          public static final java.lang.String PROPERTY_REPLACE_INVALID_CHARS

      Stores the text sequence used to replace invalid XML characters
      See Also:
        Constant Field Values

    - #### DEFAULT_OBJECT_TYPE

          protected static final java.lang.String DEFAULT_OBJECT_TYPE

      See Also:
        Constant Field Values

    - #### IMAGE_PREFIX

          protected static final java.lang.String IMAGE_PREFIX

      See Also:
        Constant Field Values

    - #### JASPERPRINT_NAMESPACE

          public static final XmlNamespace JASPERPRINT_NAMESPACE

    - #### xmlWriter

          protected JRXmlWriteHelper xmlWriter

    - #### version

          protected java.lang.String version

    - #### versionComparator

          protected VersionComparator versionComparator

    - #### rendererToImagePathMap

          protected java.util.Map<Renderable,java.lang.String> rendererToImagePathMap

    - #### stylesMap

          protected java.util.Map<java.lang.String,JRStyle> stylesMap

    - #### isEmbeddingImages

          protected boolean isEmbeddingImages

    - #### destFile

          protected java.io.File destFile

    - #### imagesDir

          protected java.io.File imagesDir

  - ### Constructor Detail

    - #### JRXmlExporter

          public JRXmlExporter()

      See Also:
        `JRXmlExporter(JasperReportsContext)`

    - #### JRXmlExporter

          public JRXmlExporter(JasperReportsContext jasperReportsContext)

  - ### Method Detail

    - #### getConfigurationInterface

          protected java.lang.Class<ExporterConfiguration> getConfigurationInterface()

      Specified by:
        `getConfigurationInterface` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### getItemConfigurationInterface

          protected java.lang.Class<ReportExportConfiguration> getItemConfigurationInterface()

      Specified by:
        `getItemConfigurationInterface` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### ensureOutput

          protected void ensureOutput()

      Specified by:
        `ensureOutput` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### exportReport

          public void exportReport()
                            throws JRException

      Description copied from interface: `Exporter`
      Performs the export.
      Specified by:
        `exportReport` in interface `Exporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput>`
      Specified by:
        `exportReport` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`
      Throws:
        `JRException`

    - #### initExport

          protected void initExport()

      Overrides:
        `initExport` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### initReport

          protected void initReport()

      Overrides:
        `initReport` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### getNamespace

          protected XmlNamespace getNamespace()

    - #### exportReportToStream

          protected void exportReportToStream(java.io.Writer writer)
                                       throws JRException,
                                              java.io.IOException

      Throws:
        `JRException`
        `java.io.IOException`

    - #### exportProperties

          protected void exportProperties(JRPropertiesHolder propertiesHolder)
                                   throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportStyle

          protected void exportStyle(JRStyle style)
                              throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportOrigin

          protected void exportOrigin(JROrigin origin)
                               throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportBookmarks

          protected void exportBookmarks(java.util.List<PrintBookmark> bookmarks)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportBookmark

          protected void exportBookmark(PrintBookmark bookmark)
                                 throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportPage

          protected void exportPage(JRPrintPage page)
                             throws JRException,
                                    java.io.IOException

      Throws:
        `java.io.IOException`
        `JRException`

    - #### exportElements

          protected void exportElements(java.util.Collection<JRPrintElement> elements)
                                 throws java.io.IOException,
                                        JRException

      Throws:
        `java.io.IOException`
        `JRException`

    - #### exportElement

          public void exportElement(JRPrintElement element)
                             throws java.io.IOException,
                                    JRException

      Throws:
        `java.io.IOException`
        `JRException`

    - #### exportLine

          protected void exportLine(JRPrintLine line)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportReportElement

          protected void exportReportElement(JRPrintElement element)
                                      throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportGraphicElement

          protected void exportGraphicElement(JRPrintGraphicElement element)
                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportPen

          protected void exportPen(JRPen pen)
                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportPen

          protected void exportPen(java.lang.String element,
                       JRPen pen)
                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportRectangle

          protected void exportRectangle(JRPrintRectangle rectangle)
                                  throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportEllipse

          protected void exportEllipse(JRPrintEllipse ellipse)
                                throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportImage

          public void exportImage(JRPrintImage image)
                           throws JRException,
                                  java.io.IOException

      Throws:
        `JRException`
        `java.io.IOException`

    - #### exportText

          public void exportText(JRPrintText text)
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### formatTextLineBreakOffsets

          protected java.lang.StringBuffer formatTextLineBreakOffsets(short[] lineBreakOffsets)

    - #### exportTabStop

          public void exportTabStop(TabStop tabStop)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportFont

          protected void exportFont(JRFont font)
                             throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportFrame

          protected void exportFrame(JRPrintFrame frame)
                              throws java.io.IOException,
                                     JRException

      Throws:
        `java.io.IOException`
        `JRException`

    - #### exportHyperlinkParameters

          protected void exportHyperlinkParameters(JRPrintHyperlink hyperlink)
                                            throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportHyperlinkParameter

          protected void exportHyperlinkParameter(JRPrintHyperlinkParameter parameter)
                                           throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### exportGenericElement

          protected void exportGenericElement(JRGenericPrintElement element)
                                       throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getExporterPropertiesPrefix

          public java.lang.String getExporterPropertiesPrefix()

      Description copied from class: `JRAbstractExporter`
      Returns the properties prefix for the current exporter.
      Specified by:
        `getExporterPropertiesPrefix` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`
      Returns:
        the properties prefix for the current exporter

    - #### getExporterKey

          public java.lang.String getExporterKey()

      Specified by:
        `getExporterKey` in class `JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,WriterExporterOutput,JRXmlExporterContext>`

    - #### getXmlWriteHelper

          public JRXmlWriteHelper getXmlWriteHelper()

      Returns the XML write helper used by this exporter. The helper can be used to output XML elements and attributes.
      Returns:
        the XML write helper used by this exporter

    - #### isNewerVersionOrEqual

          protected boolean isNewerVersionOrEqual(java.lang.String oldVersion)

© 2001-2010 Jaspersoft Corporation www.jaspersoft.com