JFreeReport 0.9 的特性預覽

terryisme發表於2014-04-05

在Pentaho的官方論壇裡,我看到了JFreeReport 0.9的相關資訊。經過將近15個月的調研和計劃,經過1年多的開發(前幾天剛釋出,),JFreeReport 0.9比原來的版本有了巨大的變化。

變化1:全新的架構。與以前版本完全不一樣的架構。

變化2:面向文件(document)的處理方式,替換了原來的以資料為中心的報表方式。

變化3:遵循更嚴格的“內容分離”的設計原則。並分離出很多新的子專案。包括:

[@more@]
  • JCommon-Serializer



    This libraries contains a generic serialization helper framework. It is always an ugly task to deal with unknown, possibly non-serializable objects. This library eases the pain.
  • LibLoader



    LibLoader is a generic content loading and caching framework. Resource-loading is also an ugly, error-prone and hardly performant task. By introducing a central loading and caching layer, this task can be easier, and faster as well.
  • LibFonts



    The JFreeReport font reading library. It grants direct access to font data. This is mandatory for perfect layouting, as most of these fonts contain valuable layouting hints, which get not exposed by the AWT.
  • LibLayout



    LibLayout is JFreeReport's Cascading-StyleSheets based layouting engine. It accepts a DOM stream and produces content based on the style data assigned with the DOM data.


一些新的好用的功能:

  • 子報表SubReports (maybe the most requested feature)
  • 多資料來源Multiple-Datasources
  • Direct support for SQL-DataSources
  • Complex report layouts and rich text support (provided by LibLayout)
  • fully internationalizable reports
  • inline functions (expressions and functions are now directly bound to elements instead of being global. This resolves much of the compexitiy of previous report definitions.)
  • Unmatched flexibility and *total* control over the report process at runtime. Expressions are now able to insert even groups and subreports during the report processing.
  • Namespace support
  • Full support for Cascading StyleSheet (through LibLayout)
  • The 'flow' report xml-format is the new standard report definition format for JFreeReport. By following the new document oriented philosophy, it acts as a markup language to other XML based content description languages. A default base stylesheet for XHTML is included by default, enabling the system to accept and understand HTML layouts.


Before JFreeReport 0.9.0 can be considered finished, there are still some modules to be implemented:

  • Cross-Tab/Pivot-Table report component

    Modelling pivot-tables is an ugly task, which should be automated. The resulting report component automaticly generates the necessary processing steps to print such a table.
  • generic table report component

    Printing tables without having to explicitly declare each of its columns seems to be another highly requested feature. This report component would setup a generic table definition based on the current dataset.
  • precomputed expression values

    .. allow to use the result of a computation before its source rows have been printed. This is what the 'TotalGroupSumExpression' used to do. The resulting component will handle all necessary steps to compute the result. In an ideal world, it would do this in the most performant fashion avoiding multiple iterations.
  • All output targets

    All output targets, which rely on real layouting of content, are currently gone. The last processing step of LibLayout, which performs the computation of layouts is not yet implemented. Once that's done, we can deal with bringing back the pageable- and flow- (former table-) output targets.

    The class of streaming output targets, which does not rely on that layouting step at all, simply needs to be implemented. Streaming output targets are used to create document output, like HTML, RTF or OpenDocumentFormat texts.
  • Out-Of-Order section support

    Out-of-order sections (O3-sections) are sections, which are not part of the normal document flow. Examples for such O3-sections are page-headers and footers or repeating group-headers and footers. Although they are defined inside the document flow, they usually appear on separate page areas and do not appear as part of the normal content.

    O3-sections may not be supported by all output types.

    The actual specification for these sections depends on how flow and pageable output targets handle their pagebreaking. O3-sections make it easy to break functionality or performance up to the point where it gets unusable.

    The final aim is to support everything that is possible with JFreeReport 0.8.7.
  • Swing and SWT GUIs for the output targets

    The GUIs obviously depend on what features and configuration options are provided by the output targets itself. The GUI components include a Print Preview for pageable and flow outputs.
  • XML-Parsers: Compatibility layer for Simple and Ext reports

    Although the overall structure of JFreeReport changed drastically, parsers can be written to transform the old descriptions into the new internal structure.

    During the transition between JFreeReport 0.8.3 and 0.8.4 a similiar approach has been successfully implemented to translate the old report definitions to the new format.

    The resulting parsers must be configurable to accept user-defined function-translations - so that custom function implementations can be translated into the new report structure.
  • XML-Writer

    A writer implementation is needed to create 'flow-XML' report definitions from JFreeReport-Objects.
  • ... and later, after things settled down a bit, we will head on to get a decent Chart-integration into JFreeReport.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/93029/viewspace-1136670/,如需轉載,請註明出處,否則將追究法律責任。

相關文章