Page 1 of 1

docx4j 3.3.1 released

PostPosted: Tue Aug 16, 2016 5:28 pm
by jason
Version 3.3.1 is now released.

This is a minor release; please see below for notable changes.

It is in Maven Central:

Alternatively, you can get it at ...

As previously, the zip file contains three optional components:

- export-fo (if you prefer that to Plutext's commercial PDF Converter)

- ImportXHTML, for importing XHTML to docx

- MOXy, to use EclipseLink MOXy as your JAXB implementation, instead of the Sun/Oracle reference implementation (or the variant they ship in Java)

There are artifacts in Maven Central corresponding to each of these (see the link above).

Source code is available at or in a jar from Maven Central

Enjoy the new release!

cheers .. Jason

Notable Changes in Version 3.3.1

Contents lists are now of type ArrayListWml, in which parent is automatically set correctly

org.docx4j.anon: new package which converts a docx to lorem ipsum latin, and removes
other sensitive info, so the docx can safely be shared eg for tech support.
For this to work, you'll need to add a new dependency: ... C2.0%7Cjar

OpenDoPE: Two separate performance optimizations which substantially speed up large XML binding jobs. By traversing the XML data, manually calculate and cache XPaths (tested with 500,000 entries). Our strategy is to try the cache first (if enabled), then if there is a cache miss, use org.apache.xpath.CachedXPathAPI (the second optimization - CachedXPathAPI is quicker than default javax.xml.xpath.XPath implementations)

Dedicated parts for w15 CommentsExtended and People

Support anchor attributes wp14:anchorId and wp14:editId; children wp14:sizeRelH, wp14:sizeRelV

Support w:bdo and w:dir from ECMA 376 4ed

workaround for MOXy issue triggering pre-processing from binder: ... not-binder

JAXB event handler: make shouldContinue false by default, mc Content pre-processing works in MOXy (for unmarshalling anyway, as distinct from binder)

unmarshall input stream: do mc pre-processing if necessary

New property docx4j.jaxb.marshal.canonicalize:
Whether to canonicalize during marshalling (defaults to false);
this is for aesthetic purposes: the Sun/Oracle JAXB reference implementation
writes a lot of unnecessary namespaces (each one in the JAXB context?).

Dependency Changes

Added com.thedeanda:lorem:jar:2.0; only required if you want to use org.docx4j.anon (see above)