All Versions
Latest Version
Avg Release Cycle
51 days
Latest Release

Changelog History
Page 5

  • v3.3.7 Changes

    ๐Ÿ›  OpenDoPE: handle w15:databinding; FlatOPC processing fixes; component handling fixes

    0๏ธโƒฃ PDF Converter (commercial, not export-FO) defaults to https (port 443)

    IBM JAXB detection improvements

    ๐Ÿ›  various other fixes

  • v3.3.6 Changes

    @XmlRootElement on webextension and taskpanes

    ๐ŸŽ OpenDoPE performance enhancements: pre-calculate repeat counts and simple conditions for substantial time saving in ODH step

    JAXB representation of c14 ( from odrawxml/chart20070802.xsd

    OpenDoPE: bind date sdt

    JaxbXmlPart new method transform(Templates xslt, Map transformParameters, Result result)



  • v3.3.5 Changes

    ๐Ÿ‘Œ Support w16cid (commentsIds); see โšก๏ธ (without this, document created in Word 2016 with recent updates, then saved by docx4j, couldn't be re-opened in Word)

    ๐Ÿ‘Œ Support w15symex (long hex replacement for symbol char); see

    โ†ช IBM Unmarshaller (usually used in WebSphere v7+) workaround for "errors limit exceeded" (same as Oracle JAXB)

  • v3.3.4 Changes

    BinaryPartAbstractImage: ImageMagick executable name fetched from Docx4jProperties.getProperty("", "imconvert") ๐Ÿ and workaround for file URL issue on Windows

    Parent handling: convenience for user SdtPr set parent (same for SdtContent, now an interface);

    ๐Ÿ›  mc-preprocessor.xslt: more Google Docs fixes

    ๐Ÿšš samples/BookmarksDuplicateCheck: Check also the ends; option to remediate (ie remove broken ones)

    ๐Ÿ›  OpenDoPE fixes/enhancements:

    234 convert #STRING to NodeList

    235 complex XPaths

    count-type conditions in repeats: perform enhancement in non-oda case

    ๐Ÿ›  other bugfixes:

    175 HTML output: conversion to nested or

    164 Reset error counter, this time for IBM's JAXB (in Websphere inc


    ๐Ÿ›  fix to support Apple iCloud Numbers (set reference attribute on cell)

    loading .pptx and .xlsx files from InputStream

  • v3.3.3 Changes

    ๐Ÿ‘€ Minor modifications to support use on Android; see

    ๐Ÿ›  Several bugfixes, including:

    • ๐Ÿ– Handle non-English speaking locales in XmlPart.cachedXPathGetString (used in OpenDoPE content control data binding)
    • Regression in xpathtracker histgram namespace handling (issue #230)


    Convenience method for cell to access its WorksheetPart; WorksheetPart to get WorkbookPart.

    Cell content extraction - formatted (using modified Apache POI code)

  • v3.3.2 Changes

    JAXBXmlPart pipe methods, which enable you to process using StAX or SAX ๐Ÿ‘€ (avoiding JAXB overhead); see VariableReplaceStAX for an example

    ๐ŸŒ JAXB content model for web extensions

    ๐Ÿ›  Various bugfixes, including:

    • ๐Ÿ›  fix for OpenDoPE complex conditions (broken by 3.3.1)
    • ๐Ÿ›  fix for IllegalArgumentException: local part cannot be "null" when creating a QName
  • v3.3.1 Changes

    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:

    ๐ŸŽ 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:

    0๏ธโƒฃ 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: 0๏ธโƒฃ 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)

  • v3.3.0 Changes

    ๐Ÿš€ Release date

    21 April 2016

    ๐Ÿš€ Contributors to this release

    Jason Harrop

    Notable Changes - PDF

    ๐Ÿšš XSL FO based PDF output moved to new/separate project docx4j-export-fo; default PDF converter ๐Ÿ”„ changed from XSL FO + Apache FOP to Plutext's PDF Converter. The instance at 0๏ธโƒฃ is used by default, but you can (and should!) alter it to your own instance, by setting docx4j property, eg:


    ๐Ÿ‘€ See further

    โช If you want to use the existing XSL FO + Apache FOP PDF Conversion, just add docx4j-export-fo (+ deps) to your classpath. These jars are in the zip file, in dir optional/export-fo docx4j will detect that they are present, and revert to the FO based conversion.

    Notable Changes - Other

    Document protection (read only, track revisions etc) for docx/pptx/xlsx, with or without password. ๐Ÿ‘ NB: Digital signature support is in Enterprise Ed. See further and

    โšก๏ธ docx table of contents (TOC) generation and update migrated from Enterpise Ed. See org.docx4j.toc and the Toc* samples. The layout model in Plutext's PDF Converter (see above) will be used to calculate page numbers, unless docx4j-export-fo (+ deps) is on your path

    ๐Ÿš€ Workaround for JAXB behaviour change (for recent releases of JAXB, mcPreprocessor only worked the first 10 times); ๐Ÿ‘€ see/subscribe to

    ๐Ÿ‘€ Xalan <= 2.7.2 can't handle astral characters: see/vote for So: โ†ช (i) workaround this when serializing XML โ†ช (ii) optionally workaround this when we use Xalan for XSLT, controlled by docx4j.xalan.XALANJ-2419.workaround=true|false ๐Ÿš€ [Comment: When will Xalan make a release which fixes this issue? This code will be removed if they do.]

    โš™ RunFontSelector: basic support for Unicode astral characters

    ๐ŸŽ Performance improvement: property* allows us to avoid unmarshalling via DOM

    ๐Ÿ– Handle McIgnorableNamespaces within NamespacePrefixMapper classes

    XJC generated code for word/2010/wordprocessingDrawing

    ๐Ÿ“ฆ Repackage portions of org.apache.poi (mainly poifs) as ๐Ÿšš (and remove dependency on poi-scratchpad; remove Doc import since poi.hwpf dep is now absent)

    ๐Ÿ”’ Repackage santuario c14n ( as ๐Ÿšš [Comment: Useful for c14n, but not essential to docx4j, so may yet be removed. Opinions welcome]

    ๐Ÿ’… Avoid adding virtual styles to docx representing DocDefaults; this is now internal to StyleTree

    Dependency Changes (relative to 3.2.x)

    โœ‚ Removed: jaxb-xmldsig-core, poi-scratchpad, commons-lang

    โž• Added:


    ๐Ÿšš Moved FOP/batik jars to separate project docx4j-export-fo

    โฌ†๏ธ Bumped most deps to most recent available (except MOXy, where bumped to most recent compiled for Java 6)

  • v3.2.2 Changes

    guard against XML Enternal Entity Injection attacks for some additional cases (the main cases were addressed in v3.2.0)

    ๐ŸŒฒ tune down certain logging

    temp embedded font handling improvements (sgrachov, jharrop)

    PDF (FO via XSL): insert blank page to honour sectPr/w:type oddPage|evenPage set on the following section


    • ๐Ÿ‘Œ support w14 checkbox, w15:repeatingSection

    • 0๏ธโƒฃ property docx4j.model.datastorage.BindingHandler.Implementation (which defaults to BindingTraverserXSLT)

    • ๐ŸŽ ODH minor performance optimization

    (X)HTML output: use ul|ol list items, if feature PP_HTML_COLLECT_LISTS is set and SdtToListSdtTagHandler is registered.


    Variable replacement in xlsx4j


    Ensure VML namespace is declared on key parts

  • v3.2.1 Changes

    ๐Ÿ‘ MailMergerWithNext (baudinseb): supports NEXT, useful for mailing labels

    OpenDoPE: bookmark ID management

    pkg Load classes: getSourceRelationships().add(r) for additional source rel

    ๐Ÿ‘Œ Improvements to diffx (still not production ready though)


    ๐Ÿ”ฆ Expose Base.partName, so MergeDocx v1.6.6 can use this docx4j