Page 1 of 1

Macros doesn't work on v3.2.1

PostPosted: Tue Jul 28, 2015 10:54 pm
by sebastianmaz
Hi

I use docx4j to put macros in documents I create in my application. Following code works great with versions 2.8.1 and lower but doesn't work work with newer versions.
What has changed ? I really need to use new version (3.2.1) because of PDF issues but I need my macros too.

What I do now is I take macros from default template and put them in my new documents:

Code: Select all
MainDocumentPart wordDocumentPart = output.getMainDocumentPart();
ContentTypeManager ctm = output.getContentTypeManager();

PartName vbaProjectBinaryPartName = new org.docx4j.openpackaging.parts.WordprocessingML.VbaProjectBinaryPart().getPartName();
PartName vbaDataPartName = new org.docx4j.openpackaging.parts.WordprocessingML.VbaDataPart().getPartName();

VbaProjectBinaryPart vbaProjectBinaryPart = (VbaProjectBinaryPart) template.getParts().get(vbaProjectBinaryPartName);
VbaDataPart vbaDataPart = (VbaDataPart) template.getParts().get(vbaDataPartName);

wordDocumentPart.addObject(vbaProjectBinaryPart);
wordDocumentPart.addObject(vbaDataPart);

wordDocumentPart.setContentType(new ContentType(ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED));
ctm.addOverrideContentType(new java.net.URI("/word/document.xml"), ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED);

output.save(outFile);


And it works great in v2.8.1, when I switch to 3.2.1 it throws exception like:

Code: Select all
WARNING: No PartStore configured for this package
org.docx4j.openpackaging.exceptions.Docx4JException: Failed to add parts from relationships of /
   at org.docx4j.openpackaging.io.SaveToZipFile.addPartsFromRelationships(SaveToZipFile.java:392)
   at org.docx4j.openpackaging.io.SaveToZipFile.save(SaveToZipFile.java:168)
   at org.docx4j.openpackaging.io.SaveToZipFile.save(SaveToZipFile.java:97)
   at pl.com.xxx.wind.client.bs.gui.raport.util.docx.DocxUtilities.saveDocument(DocxUtilities.java:86)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOX(PismaProcesoweDOCXFactory.java:200)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(PismaProcesoweDOCXFactory.java:68)
   at pl.com.xxx.wind.client.bs.LetterDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(LetterDOCXFactory.java:126)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSent(ManageLettersInternalFrame.java:3862)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSentButtonActionPerformed(ManageLettersInternalFrame.java:6714)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.access$4100(ManageLettersInternalFrame.java:72)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame$49.actionPerformed(ManageLettersInternalFrame.java:5397)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6505)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
ERROR 2015-07-28 13:56:06,128 (pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame:6716) Failed to add parts from relationships of /
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Failed to add parts from relationships of /word/document.xml
   at org.docx4j.openpackaging.io.SaveToZipFile.addPartsFromRelationships(SaveToZipFile.java:392)
   at org.docx4j.openpackaging.io.SaveToZipFile.savePart(SaveToZipFile.java:442)
   at org.docx4j.openpackaging.io.SaveToZipFile.addPartsFromRelationships(SaveToZipFile.java:387)
   ... 46 more
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Failed to put binary part
   at org.docx4j.openpackaging.io.SaveToZipFile.saveRawBinaryPart(SaveToZipFile.java:464)
   at org.docx4j.openpackaging.io.SaveToZipFile.savePart(SaveToZipFile.java:420)
   at org.docx4j.openpackaging.io.SaveToZipFile.addPartsFromRelationships(SaveToZipFile.java:387)
   ... 48 more
Caused by: java.lang.NullPointerException
   at org.docx4j.openpackaging.parts.WordprocessingML.BinaryPart.getBytes(BinaryPart.java:202)
   at org.docx4j.openpackaging.io.SaveToZipFile.saveRawBinaryPart(SaveToZipFile.java:458)
   ... 50 more


I really need your help

Re: Macros doesn't work on v3.2.1

PostPosted: Wed Jul 29, 2015 11:29 pm
by jason
I just tested the docx4j sample, and it works.

So your problem is probably lazy read of the binary content. You detach the part from the template by attaching it to your wordDocumentPart, and then when you ask docx4j to save it, it can't read it from the old package (since it is no longer attached).

The solution is to force docx4j to read the content before you detach/attach.

You do that by calling BinaryPart's getBuffer():

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
        /**
         * Get the contents of this part.
         *
         * NB: if you are moving this part from one pkg to another,
         * you'll probably want to invoke this first, since otherwise
         * the content may not be located (lazy loading).
         *
         * @return
         */

        public ByteBuffer getBuffer()
 
Parsed in 0.014 seconds, using GeSHi 1.0.8.4

Re: Macros doesn't work on v3.2.1

PostPosted: Thu Jul 30, 2015 1:14 am
by sebastianmaz
Thank you for your reply but your solution doesn't work for me. My code looks like this now:

Code: Select all
PartName vbaProjectBinaryPartName = new org.docx4j.openpackaging.parts.WordprocessingML.VbaProjectBinaryPart().getPartName();
        PartName vbaDataPartName = new org.docx4j.openpackaging.parts.WordprocessingML.VbaDataPart().getPartName();

        VbaProjectBinaryPart vbaProjectBinaryPart = (VbaProjectBinaryPart) template.getParts().get(vbaProjectBinaryPartName);
        VbaDataPart vbaDataPart = (VbaDataPart) template.getParts().get(vbaDataPartName);

        [b]vbaProjectBinaryPart.getBuffer();[/b]

        if(vbaProjectBinaryPart != null) {
            wordDocumentPart.addTargetPart(vbaProjectBinaryPart);
        }

        if(vbaDataPart != null) {
            wordDocumentPart.addTargetPart(vbaDataPart);
        }

       [b] vbaProjectBinaryPart.getBuffer();[/b]

        wordDocumentPart.setContentType(new ContentType(ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED));

        //ctm.removeContentType(partName);
        ctm.addOverrideContentType(new java.net.URI("/word/document.xml"), ContentTypes.WORDPROCESSINGML_DOCUMENT_MACROENABLED);

       output.save(outFile);


As you can see I have vbaProjectBinaryPart.getBuffer() twice to make sure it works but id doesn't. Now my exception is a little bit different so something has changed:

Code: Select all
org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling JaxbXmlPart /word/vbaData.xml
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:270)
   at org.docx4j.openpackaging.io3.Save.saveRawXmlPart(Save.java:278)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:424)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.save(Save.java:192)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:600)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:546)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:519)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOX(PismaProcesoweDOCXFactory.java:202)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(PismaProcesoweDOCXFactory.java:68)
   at pl.com.xxx.wind.client.bs.LetterDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(LetterDOCXFactory.java:126)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSent(ManageLettersInternalFrame.java:3862)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSentButtonActionPerformed(ManageLettersInternalFrame.java:6714)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.access$4100(ManageLettersInternalFrame.java:72)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame$49.actionPerformed(ManageLettersInternalFrame.java:5397)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6505)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: part store has changed, and sourcePartStore not set
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:242)
   ... 54 more
lip 29, 2015 4:09:47 PM org.docx4j.openpackaging.io3.Save saveRawXmlPart
SEVERE: Error marshalling JaxbXmlPart /word/vbaData.xml
org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling JaxbXmlPart /word/vbaData.xml
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:270)
   at org.docx4j.openpackaging.io3.Save.saveRawXmlPart(Save.java:278)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:424)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   at org.docx4j.openpackaging.io3.Save.save(Save.java:192)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:600)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:546)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:519)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOX(PismaProcesoweDOCXFactory.java:202)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(PismaProcesoweDOCXFactory.java:68)
   at pl.com.xxx.wind.client.bs.LetterDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(LetterDOCXFactory.java:126)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSent(ManageLettersInternalFrame.java:3862)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSentButtonActionPerformed(ManageLettersInternalFrame.java:6714)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.access$4100(ManageLettersInternalFrame.java:72)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame$49.actionPerformed(ManageLettersInternalFrame.java:5397)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6505)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: part store has changed, and sourcePartStore not set
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:242)
   ... 54 more

org.docx4j.openpackaging.exceptions.Docx4JException: Failed to add parts from relationships of /
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:392)
   at org.docx4j.openpackaging.io3.Save.save(Save.java:192)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:600)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:546)
   at org.docx4j.openpackaging.packages.OpcPackage.save(OpcPackage.java:519)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOX(PismaProcesoweDOCXFactory.java:202)
   at pl.com.xxx.wind.client.bs.letter.DOCXFactory.PismaProcesoweDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(PismaProcesoweDOCXFactory.java:68)
   at pl.com.xxx.wind.client.bs.LetterDOCXFactory.createDOCXForIdTypLetterAndIdPaczka(LetterDOCXFactory.java:126)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSent(ManageLettersInternalFrame.java:3862)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.createDOCXLetterSentButtonActionPerformed(ManageLettersInternalFrame.java:6714)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame.access$4100(ManageLettersInternalFrame.java:72)
   at pl.com.xxx.wind.client.bs.gui.ManageLettersInternalFrame$49.actionPerformed(ManageLettersInternalFrame.java:5397)
   at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
   at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
   at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
   at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
   at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
   at java.awt.Component.processMouseEvent(Component.java:6505)
   at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
   at java.awt.Component.processEvent(Component.java:6270)
   at java.awt.Container.processEvent(Container.java:2229)
   at java.awt.Component.dispatchEventImpl(Component.java:4861)
   at java.awt.Container.dispatchEventImpl(Container.java:2287)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
   at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
   at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
   at java.awt.Container.dispatchEventImpl(Container.java:2273)
   at java.awt.Window.dispatchEventImpl(Window.java:2719)
   at java.awt.Component.dispatchEvent(Component.java:4687)
   at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
   at java.awt.EventQueue.access$200(EventQueue.java:103)
   at java.awt.EventQueue$3.run(EventQueue.java:694)
   at java.awt.EventQueue$3.run(EventQueue.java:692)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
   at java.awt.EventQueue$4.run(EventQueue.java:708)
   at java.awt.EventQueue$4.run(EventQueue.java:706)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
   at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
   at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
   at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
   at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Failed to add parts from relationships of /word/document.xml
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:392)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   ... 47 more
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Failed to add parts from relationships of /word/vbaProject.bin
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:392)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:444)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   ... 49 more
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Problem saving part /word/vbaData.xml
   at org.docx4j.openpackaging.io3.Save.saveRawXmlPart(Save.java:307)
   at org.docx4j.openpackaging.io3.Save.savePart(Save.java:424)
   at org.docx4j.openpackaging.io3.Save.addPartsFromRelationships(Save.java:387)
   ... 51 more
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling JaxbXmlPart /word/vbaData.xml
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:270)
   at org.docx4j.openpackaging.io3.Save.saveRawXmlPart(Save.java:278)
   ... 53 more
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: part store has changed, and sourcePartStore not set
   at org.docx4j.openpackaging.io3.stores.ZipPartStore.saveJaxbXmlPart(ZipPartStore.java:242)
   ... 54 more

Re: Macros doesn't work on v3.2.1

PostPosted: Thu Jul 30, 2015 7:15 pm
by jason
If you look at your exception:

Code: Select all
Caused by: org.docx4j.openpackaging.exceptions.Docx4JException: Error marshalling JaxbXmlPart /word/vbaData.xml


you need to do something similar for /word/vbaData.xml (your VbaDataPart). Because that's a JaxbXmlPart, you call getContents() on it (new name for the old getJaxbElement()).

Re: Macros doesn't work on v3.2.1

PostPosted: Thu Jul 30, 2015 9:58 pm
by sebastianmaz
Damn, it was so obvious :-)

Thank you, it works now