Crashes on certain docx files

279 views
Skip to first unread message

Richard Grimmett

unread,
Apr 11, 2016, 8:42:03 AM4/11/16
to xdocreport
I am using the sample provided to convert from docx to pdf via iText:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
 
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
 
public class Conv2 {
 
    public static void main(String[] args) {
        createPDF();
        createPDF();
    }
 
    private static void createPDF() {
        try {
            long start = System.currentTimeMillis();
 
            // 1) Load DOCX into XWPFDocument
            InputStream is = new FileInputStream(new File(
                    "c://javamtas//test2.docx"));
            XWPFDocument document = new XWPFDocument(is);
 
            // 2) Prepare Pdf options
            PdfOptions options = PdfOptions.create();
 
            // 3) Convert XWPFDocument to Pdf
            OutputStream out = new FileOutputStream(new File(
                    "c://javamtas//test.pdf"));
            PdfConverter.getInstance().convert(document, out, options);
             
            System.err.println("Generate pdf with "
                    + (System.currentTimeMillis() - start) + "ms");
             
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }
}

This works when given simple docx files.  But when I give it more compelx ones such as that which is attached it crashes with:

org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:59)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:37)
    at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45)
    at com.mtas.alcoa.Conv2.createPDF(Conv2.java:36)
    at com.mtas.alcoa.Conv2.main(Conv2.java:17)
Caused by: java.lang.NullPointerException
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromTableStyleIdRow(AbstractValueProvider.java:153)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromTableStyleId(AbstractValueProvider.java:126)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromStyles(AbstractValueProvider.java:101)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.internalGetValue(AbstractValueProvider.java:61)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValue(AbstractValueProvider.java:41)
    at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.getTableCellVMerge(XWPFStylesDocument.java:1067)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getVMergedCells(XWPFDocumentVisitor.java:1005)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableRow(XWPFDocumentVisitor.java:922)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableBody(XWPFDocumentVisitor.java:848)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:830)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:246)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:194)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:55)
    ... 4 more
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:59)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:37)
    at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45)
    at com.mtas.alcoa.Conv2.createPDF(Conv2.java:36)
    at com.mtas.alcoa.Conv2.main(Conv2.java:18)
Caused by: java.lang.NullPointerException
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromTableStyleIdRow(AbstractValueProvider.java:153)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromTableStyleId(AbstractValueProvider.java:126)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValueFromStyles(AbstractValueProvider.java:101)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.internalGetValue(AbstractValueProvider.java:61)
    at org.apache.poi.xwpf.converter.core.styles.AbstractValueProvider.getValue(AbstractValueProvider.java:41)
    at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.getTableCellVMerge(XWPFStylesDocument.java:1067)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.getVMergedCells(XWPFDocumentVisitor.java:1005)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableRow(XWPFDocumentVisitor.java:922)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTableBody(XWPFDocumentVisitor.java:848)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:830)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:246)
    at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:194)
    at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:55)
    ... 4 more


Any advice please?

Thanks
Richard

test2.docx

Angelo zerr

unread,
Apr 11, 2016, 8:45:08 AM4/11/16
to xdocr...@googlegroups.com
Hi Richard,

Your NPE error can be fixed, but I'm afraid that even with this fix, convertion will not be perfect because our converter must be improved and you docx seems complex.

I have no time today to improve it, so any contribtion are welcome!

Regard's Angelo

--
You received this message because you are subscribed to the Google Groups "xdocreport" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xdocreport+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages