Docx4j Enterprise releases:

v 8.4.15  24 Sept 2025 (javax.xml.bind; uses docx4j 8.3.15) 

  Bump deps to work with docx4j 8.3.15 (slf4j-api v2 in particular)
  For ease of installation using Maven, declare v8.3.15 of docx4j as a dependency
  Address security advisories in upstream code

MergeDocx
- setDiagnostics on BlockRange, to show BlockRange start and settings on document surface, and altered sectPr elements 

    
v 8.4.12  26 Nov 2024 (javax.xml.bind; uses docx4j 8.3.12) 

MergeDocx
- ProcessAltChunk: if a docx altChunk is processed, remove the altChunk's source part (AlternativeFormatInputPart)


v 8.4.11  25 April 2024 (javax.xml.bind; requires docx4j 8.3.11) 

  Bump deps to work with docx4j 8.3.11 (slf4j-api v2 in particular)

  For ease of installation using Maven, declare v8.3.11 of docx4j as a dependency
  
  Address security advisories in upstream code, including those fixed in commons-compress 1.26.
    
  Update product manual


v 8.4.0.4  31 Oct 2022 (javax.xml.bind; requires docx4j 8) 
(parity with v 11.4.0.4) 

MergeDocx
- fix issue with hyperlinks in header/footer introduced in v8.4.0.0 (with default com.plutext.merge.BookmarkRenaming=true);
  install this version, or workaround with com.plutext.merge.BookmarkRenaming=false


v 8.4.0.2  4 July 2022 (javax.xml.bind; requires docx4j 8) 

MergeDocx
- support differing pPrDefault/pPr/spacing across input documents


v 8.4.0.1  15 June 2022 (javax.xml.bind; requires docx4j 8) 

Feature parity with v11.4.0.1


v 11.4.0.1 (jakarta.xml.bind; requires docx4j 11.4.5 or later, and Java 11 or greater)

Uses jakarta.xml.bind, rather than javax.xml.bind (hence the 11.4.x numbering); 
if you have an existing project, you will need to switch to docx4j 11.4.5 or later.  
You'll also  need to search/replace  across your code base, replacing javax.xml.bind  with jakarta.xml.bind

Parity with 8.4.0; except Plutext-Enterprise-DigSig omitted awaiting release of Apache Santuario v3 
(which will support jakarta.xml.binding).  DigSig users should remain with the v8.x series for now.￼

MergeDocx
- Clone each input package, ensuring the input is not changed  
- Fix: linkstyles setting affects font size even though the spec says it should be ignored when the template is not available 
- always rename Table Normal (ie in USE_EARLIER case as well)
- altChunk handling better able to mimic Word table handling
- setJobStyleCrumb: Where MergeDocx has had to generate a new style, it has typically used in the style name the string BR 
  followed by the number of the docx being merged.  This setting allows you to alter that string ('style crumb')to something else.  
  A short string is recommended.  Defaults to 'BR'.


v 8.4.0.0  1 March 2022  [naming aligns with forthcoming 11.4.0, which will use Jakarta XML binding]

MergeDocx
- Support docx containing chartex
- property "com.plutext.merge.BookmarkRenaming" true case: update "external" hyperlinks which point to a bookmark in the same 
  source document.  Note that hyperlinks which point to a bookmark in one of the other documents being merged are not updated.
  If you have these, you should set com.plutext.merge.BookmarkRenaming=false, and ensure your bookmarks are unique across
  source documents.
  
  
MergePptx
- New setting ThemeTreatment.RENAME, like existing value RESPECT, except the Theme names in each deck are made unique,
   so user need not do that 
- Fix: if first pkg master or layout uses an image, don't delete that when creating output pkg   


v 8.2.0.2  27 Sept 2021

MergeDocx
- where the last docx being merged ends with a p-level sectPr, MOVE it to body level.
  The old behaviour was to COPY it; there is a flag to enforce the old behaviour in case this is desired for any reason.


v 8.2.0.1  21 August 2021

- bump docx4j dep to current release (v8.3.1)

MergeDocx
- ensure mc:choice namespaces are declared in the merged Main Document part.


v 8.2.0.0  19 May 2021

- bump docx4j dep to current release (v8.2.9)


v 8.1.0.7  2 July 2020

MergeDocx
 - If a docx contains a commentref without a corresponding comment in the comments part, create an empty comment


v 8.1.0.6  13 June 2020

MergeDocx
 - In HfBehaviour.NONE case, where the top margin is small, use a tiny P so it doesn't push the text down
   (since the body text is placed at max(pgMar/@top, header text extent)
 

v 8.1.0.5  27 May 2020

MergeDocx
 - Support SVG images


v 8.1.0.4  21 January 2020

MergeDocx
 - Bug fix: in StyleHandler.RENAME_RETAIN case, force rename of Normal Table the first time it is encountered
 - Bug fix: regression introduced in 8.1.0.3 AltChunkFinder


v 8.1.0.3  7 January 2020

MergeDocx
 - docx altChunks: possibility to preserve margins, using continuous sections
 - Bug fix: avoid NPE where a style has no style name
 - Bug fix: correct CommentReference detection
 
 MergePptx
 - Drop extraneous images from starter package 


v 8.1.0.2  29 June 2019

MergeDocx
 - First page header: retain titlePg in HfBehaviour.DEFAULT case
  


v 8.1.0.1  10 June 2019

MergeDocx
 - Bug fix: Bookmark IDs could be incorrect where a merge result was used as input to a second merge operation.
  


v 8.1.0  22 May 2019  (Best used with docx4j 8.1.0 or later)

Modularised packaging (Maven).

MergeDocx
 - where a table does not specify a table style, make the style explicit (in contrast to v 3.3.0.16)
   If the default was Table Normal, rename it (since Word handles that style differently if it is not marked default).
   See further comments in StyleUtils.
 - when augmenting character style with doc default rPr, overwrite that with default paragraph style rPr (since that
   is used by character style and must take precedence)  
   
MergePptx
 - round trip alternateContent
 - sections: initial support
 


v 8.0.0  [no release]
 

v 6.1.0.0  1 January 2019

MergeDocx
 - OpenDoPE component processing uses "new" docx4j 6.1.0 approach
 
+------------------+-----------------------------------------------------------------------------------------------------------+
|                  |                                                   docx4j                                                  |
+                  +-----------------------------------------------------------------------------------------------------------+
|                  | 6.1                                      | 6.0.1-3.3.4                               | 3.3.3 or earlier   |
+------------------+------------------------------------------+-------------------------------------------+--------------------+
| Enterprise | 6.1 | RECOMMENDED;                             | OpenDoPE component processing             | (Custom Enterprise |
|            |     | uses "new" OpenDoPe component processing | unsupported combination                   |  build required)   |
+            +-----+------------------------------------------+-------------------------------------------+--------------------+
|            | 6.0 | OpenDoPE component processing            | -known mc:choice namespace handling issue | (Custom Enterprise |
|            |     | unsupported combination                  | -Uses "old" OpenDoPE component proc.      |  build required)   |
+------------+-----+------------------------------------------+-------------------------------------------+--------------------+


v 6.0.1.3  5 Dec 2018

MergeDocx
 - When clearing headers/footers, remove titlePg (so subsequent docx don't get an empty first page header if we merge with INHERITS)
   titlePg means the header would be missing from the first page of each merged input


v 6.0.1.2  15 Nov 2018

MergeDocx 
 - In clone via deepCopy, handle mc:choice namespaces  (requires docx4j v6.1.0 to be effective) 

 
v 6.0.1.1  28 August 2018

MergeDocx
 - bugfix TableStyleRespector, in which direct p jc (justification) was being lost 


v 6.0.1.0  19 August 2018 (built against docx4j 6.0.1, requires docx4j v3.3.4 or later)
(Note: v6.x works with Java 6 or later)

MergeDocx
 - bookmarks: new property com.plutext.merge.BookmarkRenaming to control whether bookmarks are renamed; 
   where BookmarkRenaming=true, hyperlink anchors (in the current block range only) are now altered to match


v 3.3.0.18  21 July 2018

MergeDocx
 - ensure w:drawing/wp:anchor|inline/wp:docPr/@id is unique (headers/footers) 
 - When overrideTableStyleFontSizeAndJc==false, only use table style values if they are actually present
   (to do this, where the table style values don't specify Jc and font Sz, we write direct formatting) 
 

 v 3.3.0.17  15 June 2018

MergeDocx
 - create an empty default paragraph style in an input docx, if none exists
 - ensure w:drawing/wp:anchor|inline/wp:docPr/@id is unique (more like to be present with forthcoming docx4j 3.4.0's mc:Choice retention) 


 v 3.3.0.16  25 May 2018

MergeDocx
 - USE_EARLIER now more closely mimics Word's "use destination" which is 
   based on style names, not IDs. Improved merging for documents in different languages.  
 - where a table does not specify a table style, don't assume default table style
 

 v 3.3.0.15  22 March 2018 

MergeDocx
 - avoid multiple styles named Normal (in case where it has different styleIds in input documents)

 v 3.3.0.14  6 March 2018 

MergeDocx
 - Comments: merge these correctly
 - CommentsExtended: add support (requires docx4j 3.3.1)
 - ensure w15:paraIds are unique (most useful for comment replies)
 - altChunk processing (OpenDoPE component processing): update OpenDoPE caches
 
 
 v 3.3.0.12  28 October 2017 
 (built against docx4j 3.3.6; requires v3.3.4 or later, because SdtContent changed to an interface in that version.
  To use with an earlier version, would need to be built against that)

 MergeDocx
 - SourceMover was not compatible with docx4j 3.3.4 or 3.3.5; this fixes that.

 v 3.3.0.11  31 May 2017
 
 MergeDocx
 - Avoid creating extra an extra table style for each document  


 v 3.3.0.10  4 May 2017
 
 MergeDocx
 - DocumentBuilderIncremental: set blockRange.docNumber 


 v 3.3.0.9  21 March 2017
 
 MergeDocx
 - fix for bmp images; fix in binary part fallback 
  
 
 v 3.3.0.8  29 October 2016 

 MergePptx
 - Notes not present in first SlideRange, but present later: add Master to presentation.xml (without this Powerpoint 2013 crashes; doesn't matter to 2010 or 2016)

 v 3.3.0.7  12 August 2016 
 
 OLE
 - support embedding Visio (vsd/vsdx/vsdm) files in docx/pptx/xlsx
 - extend API for embedding/linking Office documents in docx (returns a run)
 - support linking Office documents in pptx
 - update docx and pptx examples
 
 MergeDocx
 - DocumentBuilderIncremental: support the ability for user code to write simple paragraph content to the output document ie between addBlockRange invocations
 

 v 3.3.0.6  24 June 2016
 
 MergeDocx
 - when renaming styles, be sure to do this inside v:textbox (traverse into w:r) 
  

 v 3.3.0.5  3 June 2016 
 
 OLE
 - extend API for embedding in docx, to return a run suitable for insertion anywhere a run is allowed in 
   the Main Document Part 


 v 3.3.0.4  10 May 2016 

 MergeDocx
 - remove any Theme dependency from rFonts definition 
 
 OLE
 - support embedding Microsoft Project (.mpp), OneNote (.one, .onepkg), MindJet Mind Manager (.mmap), and 
   arbitrary binary files in docx/pptx/xlsx

 v 3.3.0.3  5 May 2016 

 MergeDocx
 - Write w:document/@mc:Ignorable, using values from input documents.
   Without this, Word may fail to open the docx where an ignorable
   prefix such as w14 or w15 is present.
   

 v 3.3.0.2  30 April 2016 

 MergeDocx
 - new BlockRange setting setIDAndInsertAsSection.  When a block range is being 
   inserted at a location specified by a content control, this setting will keep 
   the header or page orientation and other SectPr properties of this BlockRange.  
   The sectPr from the docx associated with this BlockRange will be imported and 
   sandwiched inside the sectPr in the output docx (ie the following sectPr will 
   be copied, and inserted before the BlockRange).
   
  
 v 3.3.0.1  22 April 2016 

 MergeDocx
 - OLE objects: ensure shape ID is unique [backported to v3.2.0.11]
 - update PAGEREF field references to bookmarks, made from header/footer parts [backported to v3.2.0.11]
 

 v 3.3.0  20 April 2016  [requires docx4j 3.3.0]
 
 DigSig
 - initial release
 
 MergeDocx
 - writeDocDefaults to styles, so DocDefaults in different documents is accommodated
   [exception: space after P, so for best results this should be the same in each docx, or defined in default paragraph style]
 - output docx sets overrideTableStyleFontSizeAndJc to true (like Word 2010/13/16), and converts input as necessary       

 TOC
 - contributed to docx4j community
 
 

 v 3.2.0.10  28 January 2016
 
 MergeDocx
 - fix TreeCopy so it works properly in complex trees
 

 v 3.2.0.8  31 August 2015
 
 OLE
 - support embedding .wav files in docx/pptx/xlsx


 v 3.2.0.7  27 July 2015 
 
 MergeDocx
 - avoid ClassCastException org.docx4j.wml.SdtBlock cannot be cast to org.docx4j.wml.ContentAccessor
   eg where the unwanted _GoBack bookmark is directly inside an Sdt


 v 3.2.0.6   10 May 2015

 MergePptx
 - where is slide is being re-targeted to an existing layout, re-target the placeholder idx values


 v 3.2.0.5   2 April 2015
 
 MergeDocx
 - support rels (eg images, hyperlinks) in comments, footnotes, endnotes
 
 

 v 3.2.0.4   22 Dec 2014
 
 OLE
 - bugfix embedding Office ppt (Powerpoint binary) in docx/pptx/xlsx
 
 
 v 3.2.0.3   14 Nov

 MergePptx
 - setThemeTreatment(ThemeTreatment.RESPECT) has effect of retaining look/feel of each presentation
   provided they use themes with different names (since the theme name is treated as a namespace)
 - improvements to SlideMaster importing (inc ensure its own theme is imported)


 v 3.2.0.2   20 Oct 
  
 TOC
 - ToC heading switch (\o) trumps outline switch (\u): follow based on for heading styles
 - default ToC style (if not present in styles part) basedOn default P font (whatever it is called - don't assume "Normal")  


 v 3.2.0.1   19 Sept 

 MergePptx
 - support reuse of image in Slide Layout part
 
 
 v 3.2.0  21 August     [requires docx4j 3.2.0]
 
 MergePptx
 - support for comments (ie besides in first document)
 
 TOC
 - numbering: support for tab between number and text
 
 OLE
 - support for embedding Office docx/pptx/xlsx etc in docx/pptx/xlsx
 

 v 3.1.0.5 15 August 2014

 MergeDocx
 - fixed bug in 3.1.0.4's new SectPrFindFirst
  
 TOC
 - TocGenerator API uses an instance (static API deprecated)
 - calculate right aligned tab setting
 - avoid adding an extra paragraph just for the ToC field
 - drop leading/trailing whitespace from each entry 
 - configure ToC style (if not present in styles part)  


 v 3.1.0.4 13 August 2014

 MergeDocx
 - support for keeping signed macros from one of the BlockRanges
 - construct a BlockRange using an XPath expression
 - moved sectPrFinder out of BlockRange, and simplified [but see 3.1.0.5 above]
  
 MergePptx
 - refactoring for memory efficient "incremental" adding of presentations 
 - better handling of slide layouts (triggered where decks use differing languages for common layout names)
 
 TOC
 - update reuses existing ToC heading paragraph(s) (including formatting) 
 - Create content control has "Table of Contents" doc part property, so "update table" interface is available in Word
 - Omit empty TOC entry, unless it is numbered.
 - ToC heading switch (\o) trumps outline switch (\u)
 - ToC styles found irrespective of language used for style ID
 - ToC entry reflects direct rPr formatting

 
 v 3.1.0.3 22 June 2014 
 
 MergeDocx ProcessAltChunk
 - process AltChunk supports StyleHandler.USE_EARLIER (default) or RENAME_RETAIN
 MergeDocx 
 - numbering: improve handling of numPicBullet
 MergePptx
 - handle NPE where notes slide does not point back to its slide 

 v 3.1.0.1  26 April 2014
 
 MergeDocx ProcessAltChunk
 - detect/report broken chunk
 - fix for ArrayIndexOutOfBoundsException locating JAXBElement wrapped object (also fixed in SourceMover)
 

 v 3.1.0  25 April 2014
 
 EventBus, implemented for MergeDocx and MergePPtx components (requires docx4j 3.1.0 and mbassador jar)
 MergeDocx
 - rename rels part (since io3.save uses the actual rels part name, cf SaveToZipFile which computed it from the source part name)
 MergePptx
 - rename rels part belonging to each slide, slide note
 TOC
 - styles basedOn a heading style are treated as a heading style
 - styles basedOn a style explicitly included are also included
 - outline level handled in ad hoc formatting, and higher in style hierarchy
 

 v 3.0.1  13 March 2014

MergeDocx Releases:

 v 1.7.0 20 Nov 2013
 - introduce DocumentBuilderIncremental
 - experimental feature SectionBreakBefore.NONE_MERGE_PARAGRAPH

 v 1.6.6 1 Oct 2013
 - RENAME_RETAIN docx4j 2.8.1 workaround to ensure Normal uses DocDefaults (where styles part updated)

 v 1.6.5 17 August 2013
 - style name allocation: avoid loop
 - copyImages: handle missing image better

 v 1.6.4 9 August 2013
 - only remove doc defaults for StyleHandler.RENAME_RETAIN
 - don't make rPr style explicit

 v 1.6.3 8 August 2013
 - create suitable styles for paragraphs in tables (since table style has priority over doc defaults)
 - remove doc defaults from style part (since they might differ across input docx)
 - handle doc default renaming in style tree fix
 - more reflection to ensure StyleTreeCreator runs against both docx4j 2.8.1 and forthcoming 3.0 (cf 1.4.17)
 
 v 1.6.2 29 July 2013
 - if adding w:bookmarkStart, set w:id correctly (required for docx4j 3.0 XHTML and PDF output)
 - include first GlossaryDocument
 
 v 1.6.1 17 July 2013
 - don't renumber block range if it lacks an NDP 

 v 1.6.0 14 July 2013
 - for logging, use slf4j, not log4j 

 v 1.5.1  24 June 2013 
 - support Merge then immediate OpenDoPE processing workflow (ie without reload)

 v 1.5.0  20 June 2013 [requires docx4j 2.8.1 or later]
 - improved support for merging OpenDoPE XPaths and Conditions parts (non-interactive case)
 
 v 1.4.17 10 June 2013
 - improved support for charts (v:fill)
 - StyleTreeCreator uses reflection to construct StyleTree (for 3.0 compat)

 v 1.4.16 6 June 2013
 - CopyGeneric improvements  
 - support for a:hlinkClick

 v 1.4.15 30 May 2013
 - DocumentBuilder.setRetainMacros to retain the macros from one BlockRange

 v 1.4.14 24 May 2013
 - Mechanisms to ensure Word honours ODD_PAGE, with page number restarts 

 v 1.4.13 8 May 2013
 - Fix for NPE in fixRange code

 v 1.4.12 18 April 2013
 - Support docx4j 3.0 DocPropsCoverPagePart
   (in previous docx4j, that was just a CustomXmlDataStoragePart)
 - jar is compiled with debug="true" debuglevel="source,lines,vars"
 - JAXB annotations on enums
 - handle attempt to use StyleHandler.RENAME_RETAIN on first BlockRange
 - support for OpenDoPE StandardisedAnswersPart

 v 1.4.11 28 March 2013
 - For StyleHandler.RENAME_RETAIN, rename styles in Numbering part
 - fixRange minor improvements
 
 v 1.4.10 16 March 2013
 - fixRange ConcurrentModificationException 
 
 v 1.4.9 13 March 2013
 - handle embedded fonts (in FontTable part)
 - SectionBreakBefore.NONE: ensure value not used in lastDocument

 v 1.4.8 6 March 2013
 - handle w:object/w:control

 v 1.4.7: 2 March 2013
 - bookmark name/ID unique across documents 
 - for SectionBreakBefore.CONTINUOUS, ensure w:pgSz is the same
 - remove _GoBack bookmark
 - bugfix: FootnoteEndnoteRefFinder 

 v 1.4.6: 28 Nov 2012
 - support v:pict/v:rect/v:fill/@r:id where v:imagedata has no @rel
 
 v 1.4.5: 26 Sept 2012
 - RENAME_RETAIN styles of type table
 
 v 1.4.4: 7 Sept 2012
 - preserve external image off MDP; 
   re-use existing external rel.

 v 1.4.3: 5 Sept 2012
 - explicitly set default style
 
 v 1.4.2: 24 July 2012
 - avoid NPE using LibreOffice docx (no nsid)
 - add w:docDefaults and w:latentStyles from
   the first styles part

 v 1.4.1: 3 January 2012
 - Enhance NumUtils to avoid creating
   unnecessary additional numbering.
   Other minor enhancements/fixes to numbering.

 v 1.4.0: 11 December 2011 [requires docx4j 2.7.0 or later]
 - ProcessAltChunk can process docx altChunks
   anywhere in main document part (eg in a tc)
   
 v 1.3.9: 14 October 2011
 - bug fix in TreeCopy for parts used more than once
 - POM uses docx4j 2.7.1 from Maven Central
 
 v 1.3.8: 4 Sept 2011
 - specify Context for DocPropsCustomPart
   (required for docx4j 2.6.0) and ThemePart
 
 v 1.3.7: 8 August 2011
 - support for wordprocessingDrawing.Anchor 
   (w:drawing/wp:anchor/a:graphic ..)
 - support for picture bullet
 - remove temporary trailing paragraph from last BlockRange 
 
 v 1.3.6: 23 June 2011
 - DiagramDrawingPart handling for docx4j 2.7.0
 
 v 1.3.5: 15 May 2011
 - don't have more than one bibliography part
 
 v 1.3.4 beta: 9 May 2011
 - don't duplicate CustomXML where the one docx
   is being merged multiple times (eg altChunks in it)
 - ProcessAltChunk uses BlockRange's 
   setSectionBreakBefore(SectionBreakBefore.CONTINUOUS) 

 v 1.3.3
 - docx4j post 2.6.0 interface compatibility 
   (eg ContentAccessor)
 - image handling bug fixes

 v 1.3.0
 - handling for Cover Page Properties part
 
 v 1.3.0 beta: 24 Feb 2011
 - support for theme part which contains images
 - style and numbering options
 
 v 1.2.0: 21 Feb 2011
 - clone parts, rather than altering source pkg
 - samples for finding nth block by various means
 
 v1.1.5 18 Feb 2011
 - fix: handle null numId
 - options to control header behaviour, and page numbering
 
 v1.1.4 12 Feb 2011
 - CustomXml part GUID mapping for duplicated parts
 - Content controls: generate a new sdt Id if the id is already present
   (otherwise Word 2007 won't honour a bind, and on save,
    will remove the Sdt). Main document part, and in headers/footers.
 - settings.xml attachedTemplate, saveThroughXslt handled (ignored)
 
 v1.1.1 5 Feb 2011
 - setSectionBreakBefore
 
 v1.1  28 January 2011 [requires docx4j 2.6.1 or later]
 - fix: w:bookmarkStart must have @w:name
 - support for w:perm Start|End 
 - fix: set type on external link correctly
 
 v1.0  10 Dec 2010
 - initial release

 MergePptx Releases:

 v 1.0.5 17 July 2013
 - for logging, use slf4j, not log4j 

 v 1.0.4 25 April 2013
 - workaround for Powerpoint 2010 AlternateContent issue,
   where using docx4j nightly prior to 2013 04 25

 v 1.0.3: 19 Feb 2013
 - make compatible with docx4j 3.0.x lazy load approach
