Apache POI - 将DOCX转换为PDF

3

我正在尝试使用POI将docx文件转换为pdf文件,但出现以下错误。使用poi-3.17版本。

  import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    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 WordToPDF {
    
        public static void main(String[] args) {
            WordToPDF cwoWord = new WordToPDF();
            System.out.println("Start");
            cwoWord.ConvertToPDF("D:\\2067536.docx", "D:\\2067536.pdf");
        }
    
        public void ConvertToPDF(String docPath, String pdfPath) {
            try {
                InputStream doc = new FileInputStream(new File(docPath));
                XWPFDocument document = new XWPFDocument(doc);
                document.createStyles();
                PdfOptions options = PdfOptions.create();
                OutputStream out = new FileOutputStream(new File(pdfPath));
                PdfConverter.getInstance().convert(document, out, options);
                System.out.println("Done");
            } catch (FileNotFoundException ex) {
                System.out.println(ex.getMessage());
            } catch (IOException ex) {
    
                System.out.println(ex.getMessage());
            }
        }
    
    }

这里是发生错误的地方。
Exception in thread "main" org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
        at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:70)
        at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:38)
        at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45)
        at WordToPDF.ConvertToPDF(WordToPDF.java:27)
        at WordToPDF.main(WordToPDF.java:17)
Caused by: java.lang.NullPointerException
        at org.apache.poi.xwpf.converter.pdf.internal.PdfMapper.visitHeader(PdfMapper.java:178)
        at org.apache.poi.xwpf.converter.pdf.internal.PdfMapper.visitHeader(PdfMapper.java:111)
        at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitHeaderRef(XWPFDocumentVisitor.java:1142)
        at org.apache.poi.xwpf.converter.core.MasterPageManager.visitHeadersFooters(MasterPageManager.java:213)
        at org.apache.poi.xwpf.converter.core.MasterPageManager.addSection(MasterPageManager.java:180)
        at org.apache.poi.xwpf.converter.core.MasterPageManager.compute(MasterPageManager.java:127)
        at org.apache.poi.xwpf.converter.core.MasterPageManager.initialize(MasterPageManager.java:90)
        at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:232)
        at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:199)
        at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:56)
        ... 4 more

由于这是一个空指针错误,我无法理解问题的确切原因,任何帮助将不胜感激。谢谢。

1
你能展示一下你代码的相关部分吗?(话虽如此,猜测你正在使用一个不再维护的第三方转换器,该转换器反过来使用了Apache POI和其他库。) - andrewJames
1
看起来从包名来看你在使用旧版本的转换器,当你升级到最新的fr.opensagres版本时会发生什么? - Gagravarr
已添加代码 - exceed007
这个问题的答案可能会提供一些帮助,同时也可以参考Gagravarr的评论。 - andrewJames
1个回答

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接