Page 1 of 1

Corruption issue using getDocumentModel().getSections()

PostPosted: Fri Oct 27, 2017 8:26 am
by jallen
Hi Jason,

I am getting corruption issue in the newer releases of docx4j. I am currently running 3.3.3.

Here is my code:
Code: Select all
import java.io.File;
import java.util.List;
import org.docx4j.model.structure.SectionWrapper;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
   
   public void runTest() {

      try {

         File file = new File("c:\\temp\\word1.docx");
         File file2 = new File("c:\\temp\\word2.docx");
         WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(file);
         List<SectionWrapper> sections = wordMLPackage.getDocumentModel().getSections();
         wordMLPackage.save(file2);

      } catch(Exception e) {e.printStackTrace()};

   }
   


My issue appears to be with this line. If I comment it out the there is no corruption.
Code: Select all
List<SectionWrapper> sections = wordMLPackage.getDocumentModel().getSections();


I have narrowed the issue down to the word/document.xml file. It looks like for some reason the process is changing all of the xmnls declarations.

Original
Code: Select all
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se w16cid wp14"><w:body><w:p w:rsidR="00097227" w:rsidRDefault="00486337"><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p><w:sectPr w:rsidR="00097227"><w:pgSz w:w="12240" w:h="15840"/><w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/><w:cols w:space="720"/><w:docGrid w:linePitch="360"/></w:sectPr></w:body></w:document>


After running code
Code: Select all
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:ns9="http://schemas.openxmlformats.org/schemaLibrary/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart" xmlns:ns13="http://schemas.openxmlformats.org/drawingml/2006/chartDrawing" xmlns:dgm="http://schemas.openxmlformats.org/drawingml/2006/diagram" xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture" xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:dsp="http://schemas.microsoft.com/office/drawing/2008/diagram" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:ns20="urn:schemas-microsoft-com:office:excel" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:ns22="urn:schemas-microsoft-com:office:powerpoint" xmlns:ns24="http://schemas.microsoft.com/office/2006/coverPageProps" xmlns:odx="http://opendope.org/xpaths" xmlns:odc="http://opendope.org/conditions" xmlns:odq="http://opendope.org/questions" xmlns:oda="http://opendope.org/answers" xmlns:odi="http://opendope.org/components" xmlns:odgm="http://opendope.org/SmartArt/DataHierarchy" xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography" xmlns:wetp="http://schemas.microsoft.com/office/webextensions/taskpanes/2010/11" xmlns:we="http://schemas.microsoft.com/office/webextensions/webextension/2010/11" xmlns:ns34="http://schemas.openxmlformats.org/drawingml/2006/compatibility" xmlns:ns35="http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" mc:Ignorable="w14 w15 w16se w16cid wp14">
    <w:body>
        <w:p w:rsidR="00097227" w:rsidRDefault="00486337">
            <w:bookmarkStart w:name="_GoBack" w:id="0"/>
            <w:bookmarkEnd w:id="0"/>
        </w:p>
        <w:sectPr w:rsidR="00097227">
            <w:pgSz w:w="12240" w:h="15840"/>
            <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440" w:header="720" w:footer="720" w:gutter="0"/>
            <w:cols w:space="720"/>
            <w:docGrid w:linePitch="360"/>
        </w:sectPr>
    </w:body>
</w:document>


I am including two word documents. Word1.docx is a brand new blank word document. Word2.docx is the corrupted document after running the code on it.

I appreciate your assistance as always.

Thanks,
Jeff

Re: Corruption issue using getDocumentModel().getSections()

PostPosted: Fri Oct 27, 2017 5:39 pm
by jason
Hi Jeff,

In your "after running" XML, w16cid is not declared. Try docx4j 3.3.6, it should fix that.

kind regards .. Jason

Re: Corruption issue using getDocumentModel().getSections()

PostPosted: Sat Oct 28, 2017 1:24 am
by jallen
Hi Jason,

I upgraded this morning and that did the trick. Thank you for the quick reply, as always.

Cheers,
Jeff

Re: Corruption issue using getDocumentModel().getSections()

PostPosted: Sat Oct 28, 2017 6:39 am
by jallen
Hi Jason,

It looks like I am now getting a different error after the upgrade. java.lang.NoSuchMethodError: org/docx4j/wml/SdtBlock.getSdtContent()
It is this line of code:
wordMLPackage = ProcessAltChunk.process(wordMLPackage);

Here is part of the stacktrace:
Code: Select all
Caused by: java.lang.NoSuchMethodError: org/docx4j/wml/SdtBlock.getSdtContent()Lorg/docx4j/wml/ContentAccessor;at com.plutext.merge.altchunk.AltChunkFinder.walkJAXBElements(AltChunkFinder.java:70);at com.plutext.merge.altchunk.AltChunkFinder.walkJAXBElement</values>
      <values>s(AltChunkFinder.java:105);at org.docx4j.TraversalUtil ;init;(TraversalUtil.java:256);at com.plutext.merge.altchunk.ProcessAltChunk.process(ProcessAltChunk.java:200);at com.plutext.merge.altchunk.ProcessAltChunk.process(ProcessAltChunk.java:127);at com.plutext.merge.altchunk.ProcessAltChunk.process(ProcessAltChunk.java:83);at com.computerworks.intertrac.merge.Merge.insertSegments(Merge.java:1656);wordMLPackage = ProcessAltChunk.process(wordMLPackage);


I have double checked that I have all the relevant dependencies.

Re: Corruption issue using getDocumentModel().getSections()

PostPosted: Sun Oct 29, 2017 5:18 am
by jallen
Resolved via email. Needed latest version of Enterprise. Thanks Jason!