XMLMill - convert xml to pdf with java. Generate PDF from xml/xsl.

High volume xml-xsl to PDF Generation

This page as PDFPrinter friendly pageEmail this page to a friendSubscribe to our mailing list

Release notes

XMLMill 2.00 (December 1st, 2004)

Major upgrade with several improvements (see below).

Read the full release notes (Java) (184 kb) (This document has been completely generated using XMLMill 2.00).

All new Products Features are eligible for XMLMill for Java and XMLMill for Domino.

  • Download a trial version in our download section

New functionalities

XMLMill 2.0 is based on a new version of the XMLMill kernel, with many new features and performance improvements. The most important new features are:

General:

The result tree structure has been extensively modified to add a lot of new functionalities and to move the ml: namespace more into the direction of the fo: namespace standard (although the ml: namespace is kept), facilitating the transformation from the fo: namespace to the ml: namespace (for those clients willing to use the 'high volume xml/xsl to PDF generation capability of XMLMill).


Select to enlarge

Following changes were done to extend the functionality and are fo: compliant:

  • The tag regarding the Pagination and Layout Formatting (ml:page-template) has been replaced with a far more sophisticated element model (ml:layout-master-set and its descendants).
  • The ml:header and ml:footer tags are replaced by <static-content> tags allowing to define any content in the headers or footer (and no longer only text or an image).
  • The <ml:content> tag has been replaced by one or more <page-sequence> tags. Each <page-sequence> has a master-reference attribute referring to a <ml:simple-page-master> or ml:page-sequence-master element, allowing to apply different layouts for different pages.
  • A page is divided into five different regions: <ml:region-before>, <ml:region-body>, <ml:region-start>, <ml:region-end> and <ml:region-after>.
  • The <ml:static-content> defines the content to be repeated on each page in a region (which region is defined by the master-reference attribute).
  • The <ml:flow attributes contains the elements to be used to generate the actual content of a page.
  • The <ml:table-and-contents> is a wrapper around the <ml:table> element, allowing to define a caption for a table.
  • The <table> element has been extensively modified (new tag children) in order to provide more functionality (running headers and footers).
  • The <image> element has been replaced with the <external-graphic> element.
  • The <line> element has been replaced with the <ml:leader> attribute.
  • The <box> attribute has been suppressed. As of now a box can be defined as an empty <textbox>.
  • The <newpage> attribute has been suppressed. As of now a new page is generated based on the break-before or break-after attributes of some elements.

New Functionalities:

Support for multiple-page templates:

  • Define multiple page-templates in a document (allowing to have different headers and footers in one document).
  • Apply conditionally page-templates.
  • Page templates can be combined so different page-templates can be applied on different pages (for example odd-pages-, even-pages).
  • Add markers in headers or footers to produce running headers and footers.
  • Page headers and footers can contain different elements like table(s), textbox(es), paragraphs, images, horizontal lines, ...

Extended <table> support:


Select to enlarge

  • All tags have been renamed in order to move more to the fo: specification (allowing also to extend the table functionality dramatically).
  • Define a (repeatable) table-footer.
  • Define running headers and footers.
  • Define a caption (table-and-caption).
  • Define a barcode in a table-cell.

Other:

  • Rotate textboxes, barcodes 90, 180 or 270 degrees.
  • The Code128 barcode has been added as barcode specification.
  • Performance increase between 10% and 30% (size and elapsed time).

Performance increase:

XMLMill version 2.00 is between 16% and 25% faster than the previous version, depending on the content of the generated pdf document:

Volume test (56000 records) Elapsed time (milliseconds)
1.60 version
Elapsed time (milliseconds)
2.00 version
Performance gain (%)
paragraph 143205 106564 -25.50 %
textbox 204654 159600 -22.00 %
table 203653 169974 -16.50 %

Volume tests executed on following environment:

  • Windows XP Professional Service Pack 2 Version 2002PC (Pentium Iv 1.7 Mhz) with 1024 MB memory.
  • Personal Computer Intel(R) Pentium(R)4 Mobile CPU 1.7 GHz.
  • 1024 MB memory.
  • java version "1.3.1_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1 Java HotSpot(TM) Client VM (build 1.3.1_06-b01, mixed mode).
  • Free system memory: 1576448 bytes, Free JVM memory: 2031616 bytes (at start of volume test).

Document size decrease:

The generated .pdf documents have a decrease in size between 6% and 17%, depending on the content of the generated pdf document:

Volume test (56000 records) Document size (bytes)
1.60 version
Document size (bytes)
2.00 version
Performance gain (%)
paragraph 8427881 7001469 -16.90 %
textbox 9531872 7784239 -18.33 %
table 8506169 8019626 -6.00 %

Volume tests executed on following environment:

  • Windows XP Professional Service Pack 2 Version 2002PC (Pentium Iv 1.7 Mhz) with 1024 MB memory.
  • Personal Computer Intel(R) Pentium(R)4 Mobile CPU 1.7 GHz.
  • 1024 MB memory.
  • java version "1.3.1_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1 Java HotSpot(TM) Client VM (build 1.3.1_06-b01, mixed mode).
  • Free system memory: 1576448 bytes, Free JVM memory: 2031616 bytes (at start of volume test).

Some Examples


Select to enlarge

Above example shows that:

  • A document can contain different headers and footers
  • A header or footer can contain images, tables, barcode, ...


Select to enlarge

Above example shows that a table:

  • Can contain a table-caption.
  • Can contains a table-header or table-footer containing more than one row.
  • A table-header or table-footer can be changed during table generation (so on the next page the modified table-header is displayed).


Select to enlarge

Above example shows that:

  • A textbox can be rotated 90°, 180° or 270°.
Copyright © 2001 - 2012. All rights reserved. XMLMill and XMLMill logo are trademarks of Pecunia Data Systems, bvba.
Powered by Apache CocoonPowered by XMLMill