Page 1 of 1

java.io.IOException: Mark has been invalidated.

PostPosted: Tue Jan 10, 2017 3:15 am
by izjumovfs
Tried to open docx document in my android app, and got this exception: Caused by: java.io.IOException: Mark has been invalidated.
Code: Select all
01-09 18:10:31.866 25345-26831/com.fullreader W/System.err: org.docx4j.openpackaging.exceptions.Docx4JException: Error reading from the stream
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:373)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:270)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:250)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at org.docx4j.openpackaging.packages.WordprocessingMLPackage.load(WordprocessingMLPackage.java:168)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at org.docx4j.Docx4J.load(Docx4J.java:236)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:367)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:349)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at android.os.AsyncTask$2.call(AsyncTask.java:295)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at java.util.concurrent.FutureTask.run(FutureTask.java:237)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err:     at java.lang.Thread.run(Thread.java:818)
01-09 18:10:31.870 25345-26831/com.fullreader W/System.err: Caused by: java.io.IOException: Mark has been invalidated.
01-09 18:10:31.871 25345-26831/com.fullreader W/System.err:     at java.io.BufferedInputStream.reset(BufferedInputStream.java:336)
01-09 18:10:31.871 25345-26831/com.fullreader W/System.err:     at org.docx4j.openpackaging.packages.OpcPackage.load(OpcPackage.java:371)
01-09 18:10:31.871 25345-26831/com.fullreader W/System.err:    ... 12 more


I was using this code to open file - https://github.com/plutext/docx4j/blob/ ... tHtml.java

As far as i understand the error is here:
Code: Select all
wordMLPackage = Docx4J.load(new java.io.File(mPath));

Re: duplicate entry exception while building the app

PostPosted: Tue Jan 10, 2017 3:22 am
by izjumovfs
/storage/emulated/0/Docx4j_GettingStarted.docx - this is my path to document. It is correct. may be am am using the wrong code to convert it to html?

Re: duplicate entry exception while building the app

PostPosted: Tue Jan 10, 2017 5:29 pm
by jason
You can avoid that code for now by using directly the code at https://github.com/plutext/docx4j/blob/ ... .java#L460

In other words:

Syntax: [ Download ] [ Hide ]
Using java Syntax Highlighting
                        final ZipPartStore partLoader = new ZipPartStore(is);
                        final Load3 loader = new Load3(partLoader);
                        OpcPackage opcPackage = loader.get();
 
Parsed in 0.015 seconds, using GeSHi 1.0.8.4


But there is other code which uses mark: https://github.com/plutext/docx4j/blob/ ... .java#L879

If that turns out to cause problems, we may need to add an Android specific work around.

Re: duplicate entry exception while building the app

PostPosted: Tue Jan 10, 2017 9:21 pm
by izjumovfs
Thanks) Will try to do thank and then post my results

Re: duplicate entry exception while building the app

PostPosted: Wed Jan 11, 2017 1:09 am
by izjumovfs
Okay, now i am using this code:
Code: Select all
File file = new File(mPath);
            FileInputStream is = new FileInputStream(file);



            final ZipPartStore partLoader = new ZipPartStore(is);
            final Load3 loader = new Load3(partLoader);
            OpcPackage opcPackage = loader.get();
            String title = opcPackage.getTitle();


And on this line String title = opcPackage.getTitle(); i got such exception

Code: Select all
java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                          at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                          at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                          at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                          at java.lang.Thread.run(Thread.java:818)
                                                       Caused by: java.lang.Error: Failed to initialize JAXP 1.3 DatatypeFactory class.
                                                          at com.sun.xml.bind.DatatypeConverterImpl.getDatatypeFactory(DatatypeConverterImpl.java:761)
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:600)
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:576)
                                                          at com.sun.xml.bind.v2.runtime.FilterTransducer.parse(FilterTransducer.java:84)
                                                          at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:245)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:65)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:590)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:338)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:216)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:185)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:122)
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:41)
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getContents(JaxbXmlPart.java:173)
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getJaxbElement(JaxbXmlPart.java:195)
                                                          at org.docx4j.openpackaging.packages.OpcPackage.setTitle(OpcPackage.java:812)
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:369)
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:344)
                                                          at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                          at java.lang.Thread.run(Thread.java:818) 
                                                       Caused by: javax.xml.datatype.DatatypeConfigurationException: Provider org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl not found
                                                          at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:106)
                                                          at com.sun.xml.bind.DatatypeConverterImpl.getDatatypeFactory(DatatypeConverterImpl.java:759)
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:600) 
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:576) 
                                                          at com.sun.xml.bind.v2.runtime.FilterTransducer.parse(FilterTransducer.java:84) 
                                                          at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:245) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:65) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:590) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:338) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:216) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:185) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386) 
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:122) 
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:41) 
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getContents(JaxbXmlPart.java:173) 
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getJaxbElement(JaxbXmlPart.java:195) 
                                                          at org.docx4j.openpackaging.packages.OpcPackage.setTitle(OpcPackage.java:812) 
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:369) 
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:344) 
                                                          at android.os.AsyncTask$2.call(AsyncTask.java:295) 
                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                          at java.lang.Thread.run(Thread.java:818) 
                                                       Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl" on path: DexPathList[[zip file "/data/app/com.fullreader-2/base.apk"],nativeLibraryDirectories=[/data/app/com.fullreader-2/lib/arm, /data/app/com.fullreader-2/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]
                                                          at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                          at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                          at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                          at javax.xml.datatype.FactoryFinder.newInstance(FactoryFinder.java:157)
                                                          at javax.xml.datatype.FactoryFinder.find(FactoryFinder.java:223)
                                                          at javax.xml.datatype.DatatypeFactory.newInstance(DatatypeFactory.java:99)
                                                          at com.sun.xml.bind.DatatypeConverterImpl.getDatatypeFactory(DatatypeConverterImpl.java:759) 
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:600) 
                                                          at com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$13.parse(RuntimeBuiltinLeafInfoImpl.java:576) 
                                                          at com.sun.xml.bind.v2.runtime.FilterTransducer.parse(FilterTransducer.java:84) 
                                                          at com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:245) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:65) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:590) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.processText(StAXStreamConnector.java:338) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleEndElement(StAXStreamConnector.java:216) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:185) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415) 
                                                          at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386) 
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:122) 
                                                          at org.docx4j.openpackaging.parts.DocPropsCorePart.unmarshal(DocPropsCorePart.java:41) 
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getContents(JaxbXmlPart.java:173) 
                                                          at org.docx4j.openpackaging.parts.JaxbXmlPart.getJaxbElement(JaxbXmlPart.java:195) 
                                                          at org.docx4j.openpackaging.packages.OpcPackage.setTitle(OpcPackage.java:812) 
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:369) 
                                                          at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:344) 
                                                          at android.os.AsyncTask$2.call(AsyncTask.java:295) 
                                                          at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                                          at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                          at java.lang.Thread.run(Thread.java:818) 
                                                         Suppressed: java.lang.ClassNotFoundException: org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl
                                                          at java.lang.Class.classForName(Native Method)
                                                          at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                            at java.lang.BootClassLoader.loadClass(Clas

Re: duplicate entry exception while building the app

PostPosted: Wed Jan 11, 2017 3:57 am
by izjumovfs
I added jaxp-datatype.jar to my project, and now i am getting this exception
Code: Select all
java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                      at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                      at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                      at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                      at java.lang.Thread.run(Thread.java:818)
                                                   Caused by: java.lang.IllegalAccessError: Method 'java.lang.Class org.apache.xalan.extensions.ExtensionHandler.getClassForName(java.lang.String)' is inaccessible to class 'org.apache.xalan.extensions.ExtensionHandlerJavaPackage' (declaration of 'org.apache.xalan.extensions.ExtensionHandlerJavaPackage' appears in /data/app/com.fullreader-1/base.apk:classes3.dex)
                                                      at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:315)
                                                      at org.apache.xalan.extensions.ExtensionHandlerJavaPackage.callFunction(ExtensionHandlerJavaPackage.java:440)
                                                      at org.apache.xalan.extensions.ExtensionsTable.extFunction(ExtensionsTable.java:222)
                                                      at org.apache.xalan.transformer.TransformerImpl.extFunction(TransformerImpl.java:419)
                                                      at org.apache.xpath.functions.FuncExtFunction.execute(FuncExtFunction.java:208)
                                                      at org.apache.xpath.XPath.execute(XPath.java:337)
                                                      at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:274)
                                                      at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:245)
                                                      at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:370)
                                                      at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:175)
                                                      at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2225)
                                                      at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2098)
                                                      at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1230)
                                                      at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:616)
                                                      at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1147)
                                                      at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1125)
                                                      at org.docx4j.XmlUtils.transform(XmlUtils.java:1355)
                                                      at org.docx4j.XmlUtils.transform(XmlUtils.java:1180)
                                                      at org.docx4j.convert.out.common.AbstractXsltExporterDelegate.process(AbstractXsltExporterDelegate.java:66)
                                                      at org.docx4j.convert.out.html.HTMLExporterXslt$HTMLExporterXsltDelegate.process(HTMLExporterXslt.java:153)
                                                      at org.docx4j.convert.out.html.HTMLExporterXslt$HTMLExporterXsltDelegate.process(HTMLExporterXslt.java:101)
                                                      at org.docx4j.convert.out.common.AbstractWmlExporter.process(AbstractWmlExporter.java:63)
                                                      at org.docx4j.convert.out.common.AbstractWmlExporter.process(AbstractWmlExporter.java:32)
                                                      at org.docx4j.convert.out.common.AbstractExporter.export(AbstractExporter.java:79)
                                                      at org.docx4j.Docx4J.toHTML(Docx4J.java:673)
                                                      at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:430)
                                                      at com.cvte.lei.doc.AndroidDocxToHtmlActivity$DocXLoaderTask.doInBackground(AndroidDocxToHtmlActivity.java:353)
                                                      at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
                                                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                      at java.lang.Thread.run(Thread.java:818) 


On this line of code Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);

My full code is:

Code: Select all
final ZipPartStore partLoader = new ZipPartStore(new java.io.File(mPath));
            final Load3 loader = new Load3(partLoader);
            WordprocessingMLPackage wordMLPackage = (WordprocessingMLPackage) loader.get();
            //WordprocessingMLPackage wordMLPackage = Docx4J.load(new java.io.File(mPath));

            // HTML exporter setup (required)
            // .. the HTMLSettings object
            HTMLSettings htmlSettings = Docx4J.createHTMLSettings();

            htmlSettings.setImageDirPath(mPath + "_files");
            htmlSettings.setImageTargetUri(mPath.substring(mPath.lastIndexOf("/")+1)
                  + "_files");
            htmlSettings.setWmlPackage(wordMLPackage);


       /* CSS reset, see http://itumbcom.blogspot.com.au/2013/06/css-reset-how-complex-it-should-be.html
        *
        * motivated by vertical space in tables in Firefox and Google Chrome.

           If you have unwanted vertical space, in Chrome this may be coming from -webkit-margin-before and -webkit-margin-after
           (in Firefox, margin-top is set to 1em in html.css)

           Setting margin: 0 on p is enough to fix it.

           See further http://www.css-101.org/articles/base-styles-sheet-for-webkit-based-browsers/
       */
            String userCSS = "html, body, div, span, h1, h2, h3, h4, h5, h6, p, a, img,  ol, ul, li, table, caption, tbody, tfoot, thead, tr, th, td " +
                  "{ margin: 0; padding: 0; border: 0;}" +
                  "body {line-height: 1;} ";
            htmlSettings.setUserCSS(userCSS);


            //Other settings (optional)
       htmlSettings.setUserBodyTop("<H1>TOP!</H1>");
       htmlSettings.setUserBodyTail("<H1>TAIL!</H1>");

            // Sample sdt tag handler (tag handlers insert specific
            // html depending on the contents of an sdt's tag).
            // This will only have an effect if the sdt tag contains
            // the string @class=XXX
         SdtWriter.registerTagHandler("@class", new TagClass() );

      SdtWriter.registerTagHandler(Containerization.TAG_BORDERS, new TagSingleBox() );
      SdtWriter.registerTagHandler(Containerization.TAG_SHADING, new TagSingleBox() );


            // list numbering:  comment out 1 or other of the following, depending on whether
            // you want list numbering hardcoded, or done using <li>.
            SdtWriter.registerTagHandler("HTML_ELEMENT", new SdtToListSdtTagHandler());
//       htmlSettings.getFeatures().remove(ConversionFeatures.PP_HTML_COLLECT_LISTS);

            // output to an OutputStream.
            OutputStream os = new ByteArrayOutputStream();


            // If you want XHTML output
            Docx4jProperties.setProperty("docx4j.Convert.Out.HTML.OutputMethodXML", true);

            //Don't care what type of exporter you use
//      Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_NONE);
            //Prefer the exporter, that uses a xsl transformation
            Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_XSL);
            //Prefer the exporter, that doesn't use a xsl transformation (= uses a visitor)
      //Docx4J.toHTML(htmlSettings, os, Docx4J.FLAG_EXPORT_PREFER_NONXSL);



            // Clean up, so any ObfuscatedFontPart temp files can be deleted
            if (wordMLPackage.getMainDocumentPart().getFontTablePart()!=null) {
               wordMLPackage.getMainDocumentPart().getFontTablePart().deleteEmbeddedFontTempFiles();
            }
            // This would also do it, via finalize() methods
            htmlSettings = null;
            wordMLPackage = null;

            return ((ByteArrayOutputStream)os).toString();

Re: duplicate entry exception while building the app

PostPosted: Tue Oct 16, 2018 4:26 pm
by Shreyansh
i am also getting this issue in android.
Caused by: java.io.IOException: Mark has been invalidated.
on line
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(path);

have you find any solution??

Re: duplicate entry exception while building the app

PostPosted: Thu Dec 13, 2018 10:09 pm
by Shreyansh
Code: Select all
final ZipPartStore partLoader = new ZipPartStore(is);
                        final Load3 loader = new Load3(partLoader);
                        OpcPackage opcPackage = loader.get();


this code cannot be used with new versions(6.0.1) of docx4j. so what is the solution to load file???????

Re: duplicate entry exception while building the app

PostPosted: Mon Dec 31, 2018 10:23 pm
by kinghitesh03
Attempt to invoke virtual method 'javax.xml.bind.Unmarshaller javax.xml.bind.JAXBContext.createUnmarshaller()' on a null object reference
java.lang.NullPointerException: Attempt to invoke virtual method 'javax.xml.bind.Unmarshaller javax.xml.bind.JAXBContext.createUnmarshaller()' on a null object reference

Code: Select all
final ZipPartStore partStore = new ZipPartStore(file);
            final Load3 loader = new Load3(partStore);
            OpcPackage opcPackage = loader.get();

            template = (WordprocessingMLPackage) opcPackage;



Gradle:
implementation 'javax.xml.bind:jaxb-api:2.3.0'
implementation 'javax.xml.stream:stax-api:1.0-2'
implementation 'com.fasterxml:aalto-xml:1.0.0'
implementation files('libs/awt-bastardised-17v8.jar')
implementation files('libs/slf4j-android-1.6.1-RC1.jar')
implementation files('libs/activation.jar')
implementation files('libs/additionnal.jar')
implementation files('libs/jaxb-core-2.3.0-SNAPSHOT-ANDROID.jar')
implementation files('libs/jaxb-runtime-2.3.0-SNAPSHOT-ANDROID.jar')
implementation files('libs/istack-commons-runtime-3.0.4-SNAPSHOT.jar')
implementation files('libs/docx4j-3.3.5-SNAPSHOT2-shaded.jar')

Re: java.io.IOException: Mark has been invalidated.

PostPosted: Sat Jan 12, 2019 10:26 pm
by kinghitesh03
Is anyone here to support..I am unable to load docx file in android lollipop
works well in API >= 23 But unable to read input stream API <= 22

Re: java.io.IOException: Mark has been invalidated.

PostPosted: Sun Jan 13, 2019 6:48 am
by jason
Please post the docx which doesn't work

Re: java.io.IOException: Mark has been invalidated.

PostPosted: Tue Jan 15, 2019 4:01 pm
by kinghitesh03
PFA of docx i am using
i used even empty docx file but not working at all

using dependencies
Code: Select all
implementation 'javax.xml.stream:stax-api:1.0-2'
    implementation 'com.fasterxml:aalto-xml:1.0.0'
    implementation files('libs/awt-bastardised-17v8.jar')
  implementation 'org.docx4j:docx4j:6.1.0'
    implementation 'javax.xml.bind:jaxb-api:2.3.0'
    implementation 'com.sun.xml.bind:jaxb-core:2.3.0'
    implementation 'com.sun.xml.bind:jaxb-impl:2.3.0'
    implementation 'javax.activation:activation:1.1.1'


i used code to load file
Code: Select all
InputStream inputStream = getApplicationContext().getAssets().open(fileName);
            template = WordprocessingMLPackage.load(inputStream);


And also tried
Code: Select all
final ZipPartStore partStore = new ZipPartStore(inputStream);
            final Load3 loader = new Load3(partStore);
            OpcPackage opcPackage = loader.get();

            template = (WordprocessingMLPackage) opcPackage;