首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Apache poi转换器在转换后不显示表格边框线

Apache poi转换器在转换后不显示表格边框线
EN

Stack Overflow用户
提问于 2018-03-14 19:03:30
回答 1查看 2K关注 0票数 1

我在使用Apache POI创建DOC文件,然后转换为PDF时遇到问题。

使用Apache POI创建DOC文件效果良好,它可以毫无问题地输出包含文本、表格、图像和阴影标题的DOC。如果我使用IText来创建PDF,这也可以。

我试图通过创建一个DOC然后将其转换为PDF来减少开发和更改时间,这样我就没有两个代码库需要管理。

当我使用Apache POI转换器将DOC转换为PDF时,我得到了样式错误。

代码语言:javascript
复制
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.IllegalStateException: Expecting one Styles document part, but found 0

我在代码中添加了样式。但随后会出现以下错误:

我还得到了一个与头相关的空指针异常,错误如下:错误代码

代码语言:javascript
复制
org.apache.poi.xwpf.converter.core.XWPFConverterException: java.lang.NullPointerException
 at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:70) ~[org.apache.poi.xwpf.converter.pdf-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:38) ~[org.apache.poi.xwpf.converter.pdf-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.core.AbstractXWPFConverter.convert(AbstractXWPFConverter.java:45) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at com.imviewer.report.DocxReportBuilder311CUSTOM.ConvertToPDF(DocxReportBuilder311CUSTOM.java:878) [classes/:na]
 at com.imviewer.report.DocxReportBuilder311CUSTOM.doInBackground(DocxReportBuilder311CUSTOM.java:833) [classes/:na]
 at com.imviewer.report.DocxReportBuilder311CUSTOM.doInBackground(DocxReportBuilder311CUSTOM.java:1) [classes/:na]
 at javax.swing.SwingWorker$1.call(Unknown Source) [na:1.8.0_161]
 at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_161]
 at javax.swing.SwingWorker.run(Unknown Source) [na:1.8.0_161]
 at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_161]
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_161]
 at java.lang.Thread.run(Unknown Source) [na:1.8.0_161]
Caused by: java.lang.NullPointerException: null
 at org.apache.poi.xwpf.converter.core.utils.XWPFTableUtil.getGridColList(XWPFTableUtil.java:183) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.core.utils.XWPFTableUtil.computeColWidths(XWPFTableUtil.java:116) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitTable(XWPFDocumentVisitor.java:867) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.visitBodyElements(XWPFDocumentVisitor.java:251) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.start(XWPFDocumentVisitor.java:199) ~[org.apache.poi.xwpf.converter.core-1.0.6.jar:1.0.6]
 at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:56) ~[org.apache.poi.xwpf.converter.pdf-1.0.6.jar:1.0.6]
 ... 11 common frames omitted

然后,我尝试在单独的代码中使用Apache POI手动将DOC转换为PDF,输出文本,表格/图像显示在正确的位置,但没有显示表格线条(尽管间距看起来正确)。但是,如果我打开创建的DOC,删除表格格式,然后重新应用,然后将DOC转换为PDF,则会出现这些行。

由Apache POI创建的DOC中显示的行似乎不会转换或显示在由Apache转换的PDF中-但是,如果我们手动添加表格格式,它确实会显示。

有谁能帮帮忙吗?

代码语言:javascript
复制
public static void ConvertToPDF(File docPath, File pdfPath) {
        try {
            InputStream doc = new FileInputStream(docPath);
            XWPFDocument document = new XWPFDocument(doc);
            PdfOptions options = PdfOptions.create();
            OutputStream out = new FileOutputStream(pdfPath);
            PdfConverter.getInstance().convert(document, out, options);
            System.out.println("Completed");
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }

我使用的库版本是:

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 14:07:42

在文档中添加,document.createStyles();

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49276063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档