Class JRXmlExporter
- java.lang.Object
-
- net.sf.jasperreports.engine.JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
-
- net.sf.jasperreports.engine.export.JRXmlExporter
-
- All Implemented Interfaces:
JRExporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput>,Exporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput>
public class JRXmlExporter extends JRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
Exports a JasperReports document to an XML file that contains the same data as aJasperPrintobject, 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*.jrpxmlextension. Such XML files can be parsed back intoJasperPrintobject using theJRPrintXmlLoaderutility class. Their structure is validated against an internal XSD file calledjasperprint.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 theGraphics2Dexporter 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 aJasperPrintobject 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 theJRPrintXmlLoaderto load the document back into aJasperPrintobject 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
_filessuffix, 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.
isEmbeddingImages()exporter output flag, which expects ajava.lang.Boolean. By default, the images are embedded in the resulting XML.- Author:
- Teodor Danciu (teodord@users.sourceforge.net)
- See Also:
JasperPrint,JRPrintXmlLoader
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classJRXmlExporter.ExporterContext-
Nested classes/interfaces inherited from class net.sf.jasperreports.engine.JRAbstractExporter
JRAbstractExporter.BaseExporterContext, JRAbstractExporter.PageRange
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.StringDEFAULT_OBJECT_TYPEstatic java.lang.StringEXCEPTION_MESSAGE_KEY_EMBEDDING_IMAGE_ERRORstatic java.lang.StringEXCEPTION_MESSAGE_KEY_REPORT_STYLE_NOT_FOUNDprotected static java.lang.StringIMAGE_PREFIXprotected booleanisEmbeddingImagesstatic XmlNamespaceJASPERPRINT_NAMESPACEstatic java.lang.StringPROPERTY_END_PAGE_INDEXstatic java.lang.StringPROPERTY_PAGE_COUNTstatic java.lang.StringPROPERTY_REPLACE_INVALID_CHARSStores the text sequence used to replace invalid XML charactersstatic java.lang.StringPROPERTY_START_PAGE_INDEXprotected RenderersCacherenderersCacheprotected java.util.Map<java.lang.String,java.lang.String>rendererToImagePathMapprotected java.util.Map<java.lang.String,JRStyle>stylesMapprotected java.lang.Stringversionprotected VersionComparatorversionComparatorstatic java.lang.StringXML_EXPORTER_KEYThe exporter key, as used inGenericElementHandlerEnviroment.getElementHandler(JRGenericElementType, String).protected JRXmlWriteHelperxmlWriter-
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_INVALID_IMAGE_NAME, EXCEPTION_MESSAGE_KEY_INVALID_ZOOM_RATIO, EXCEPTION_MESSAGE_KEY_MIXED_CALLS_NOT_ALLOWED, EXCEPTION_MESSAGE_KEY_OUTPUT_WRITER_ERROR, EXCEPTION_MESSAGE_KEY_PAGE_INDEX_OUT_OF_RANGE, EXCEPTION_MESSAGE_KEY_START_PAGE_INDEX_OUT_OF_RANGE, exporterConfiguration, exporterContext, exporterInput, exporterOutput, filter, fontUtil, hyperlinkProducerFactory, itemConfiguration, jasperPrint, jasperReportsContext, noBackcolorSelector, noneSelector, numberFormatCache, parameters, propertiesUtil, PROPERTY_DEFAULT_FILTER_FACTORY, PROPERTY_SUFFIX_DEFAULT_FILTER_FACTORY, rendererUtil, styledTextUtil, textValueClasses
-
-
Constructor Summary
Constructors Constructor Description JRXmlExporter()JRXmlExporter(JasperReportsContext jasperReportsContext)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidensureOutput()protected voidexportBookmark(PrintBookmark bookmark)protected voidexportBookmarks(java.util.List<PrintBookmark> bookmarks)voidexportElement(JRPrintElement element)protected voidexportElements(java.util.Collection<JRPrintElement> elements)protected voidexportEllipse(JRPrintEllipse ellipse)protected voidexportFont(JRFont font)protected voidexportFrame(JRPrintFrame frame)protected voidexportGenericElement(JRGenericPrintElement element)protected voidexportGraphicElement(JRPrintGraphicElement element)protected voidexportHyperlinkParameter(JRPrintHyperlinkParameter parameter)protected voidexportHyperlinkParameters(JRPrintHyperlink hyperlink)voidexportImage(JRPrintImage image)protected voidexportLine(JRPrintLine line)protected voidexportOrigin(JROrigin origin)protected voidexportPage(JRPrintPage page)protected voidexportPart(java.lang.Integer pageIndex, PrintPart part)protected voidexportPen(java.lang.String element, JRPen pen)protected voidexportPen(JRPen pen)protected voidexportProperties(JRPropertiesHolder propertiesHolder)protected voidexportRectangle(JRPrintRectangle rectangle)voidexportReport()Performs the export.protected voidexportReportElement(JRPrintElement element)protected voidexportReportToStream(java.io.Writer writer)protected voidexportStyle(JRStyle style)voidexportTabStop(TabStop tabStop)voidexportText(JRPrintText text)protected java.lang.StringBuilderformatTextLineBreakOffsets(short[] lineBreakOffsets)protected java.lang.Class<ExporterConfiguration>getConfigurationInterface()java.lang.StringgetExporterKey()java.lang.StringgetExporterPropertiesPrefix()Returns the properties prefix for the current exporter.protected java.lang.Class<ReportExportConfiguration>getItemConfigurationInterface()protected XmlNamespacegetNamespace()JRXmlWriteHelpergetXmlWriteHelper()Returns the XML write helper used by this exporter.protected voidinitExport()protected voidinitReport()protected booleanisNewerVersionOrEqual(java.lang.String oldVersion)protected booleanisOlderVersionThan(java.lang.String version)-
Methods inherited from class net.sf.jasperreports.engine.JRAbstractExporter
checkInterrupted, createFilter, defaultParseNumber, ensureInput, ensureJasperReportsContext, getBooleanCellValue, getCurrentConfiguration, getCurrentItemConfiguration, getCurrentJasperPrint, getDateCellValue, getDateFormat, getExporterContext, getExporterInput, getExporterOutput, getHyperlinkProducer, getJasperReportsContext, getLocale, getNumberCellValue, getNumberFormat, getOffsetX, getOffsetY, getPageRange, getParameter, getParameters, getPropertiesUtil, getRendererUtil, getReportContext, getRepository, getStyledText, getStyledText, getTextFormatFactoryClass, getTextLocale, getTextTimeZone, getTextValue, getTextValueString, insideFrame, reset, resetClassLoader, resetExportContext, restoreElementOffsets, setClassLoader, setConfiguration, setConfiguration, setCurrentExporterInputItem, setExporterInput, setExporterOutput, setFrameElementsOffset, setJasperReportsContext, setOffset, setOffset, setParameter, setParameters, setReportContext
-
-
-
-
Field Detail
-
EXCEPTION_MESSAGE_KEY_EMBEDDING_IMAGE_ERROR
public static final java.lang.String EXCEPTION_MESSAGE_KEY_EMBEDDING_IMAGE_ERROR
- See Also:
- Constant Field Values
-
EXCEPTION_MESSAGE_KEY_REPORT_STYLE_NOT_FOUND
public static final java.lang.String EXCEPTION_MESSAGE_KEY_REPORT_STYLE_NOT_FOUND
- See Also:
- Constant Field Values
-
XML_EXPORTER_KEY
public static final java.lang.String XML_EXPORTER_KEY
The exporter key, as used inGenericElementHandlerEnviroment.getElementHandler(JRGenericElementType, String).- See Also:
- Constant Field Values
-
PROPERTY_START_PAGE_INDEX
public static final java.lang.String PROPERTY_START_PAGE_INDEX
- See Also:
- Constant Field Values
-
PROPERTY_END_PAGE_INDEX
public static final java.lang.String PROPERTY_END_PAGE_INDEX
- See Also:
- Constant Field Values
-
PROPERTY_PAGE_COUNT
public static final java.lang.String PROPERTY_PAGE_COUNT
- 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<java.lang.String,java.lang.String> rendererToImagePathMap
-
renderersCache
protected RenderersCache renderersCache
-
stylesMap
protected java.util.Map<java.lang.String,JRStyle> stylesMap
-
isEmbeddingImages
protected boolean isEmbeddingImages
-
-
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:
getConfigurationInterfacein classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
-
getItemConfigurationInterface
protected java.lang.Class<ReportExportConfiguration> getItemConfigurationInterface()
-
ensureOutput
protected void ensureOutput()
- Specified by:
ensureOutputin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
-
exportReport
public void exportReport() throws JRExceptionDescription copied from interface:ExporterPerforms the export.- Specified by:
exportReportin interfaceExporter<ExporterInput,ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput>- Specified by:
exportReportin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>- Throws:
JRException
-
initExport
protected void initExport()
- Overrides:
initExportin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
-
initReport
protected void initReport()
- Overrides:
initReportin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>
-
getNamespace
protected XmlNamespace getNamespace()
-
exportReportToStream
protected void exportReportToStream(java.io.Writer writer) throws JRException, java.io.IOException- Throws:
JRExceptionjava.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
-
exportPart
protected void exportPart(java.lang.Integer pageIndex, PrintPart part) throws JRException, java.io.IOException- Throws:
JRExceptionjava.io.IOException
-
exportPage
protected void exportPage(JRPrintPage page) throws JRException, java.io.IOException
- Throws:
java.io.IOExceptionJRException
-
exportElements
protected void exportElements(java.util.Collection<JRPrintElement> elements) throws java.io.IOException, JRException
- Throws:
java.io.IOExceptionJRException
-
exportElement
public void exportElement(JRPrintElement element) throws java.io.IOException, JRException
- Throws:
java.io.IOExceptionJRException
-
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:
JRExceptionjava.io.IOException
-
exportText
public void exportText(JRPrintText text) throws java.io.IOException
- Throws:
java.io.IOException
-
formatTextLineBreakOffsets
protected java.lang.StringBuilder 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.IOExceptionJRException
-
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:JRAbstractExporterReturns the properties prefix for the current exporter.- Specified by:
getExporterPropertiesPrefixin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,JRXmlExporterContext>- Returns:
- the properties prefix for the current exporter
-
getExporterKey
public java.lang.String getExporterKey()
- Specified by:
getExporterKeyin classJRAbstractExporter<ReportExportConfiguration,ExporterConfiguration,XmlExporterOutput,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)
-
isOlderVersionThan
protected boolean isOlderVersionThan(java.lang.String version)
-
-