将使用poi创建的docx文件转换为pdf时遇到问题.

我使用下一个代码创建文件(只是空文件,但我已尝试填充文本/图像):

private static void createEmpty() throws IOException{

XWPFDocument doc = new XWPFDocument();

FileOutputStream out = new FileOutputStream("empty.docx");

doc.write(out);

out.close();

doc.close();

}

我可以使用Word 2010打开的文件,它看起来很好,但是当我尝试使用POI pdfConverter将其转换为pdf时,我收到一个错误:

org.apache.poi.xwpf.converter.core.XWPFConverterException: org.apache.xmlbeans.XmlException: error: Unexpected end of file after null

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 sbt.oot.metrics.pdf.DocxToPdfConverter.create(DocxToPdfConverter.java:44)

at sbt.oot.metrics.pdf.DocxToPdfConverter.main(DocxToPdfConverter.java:23)

Caused by: org.apache.xmlbeans.XmlException: error: Unexpected end of file after null

at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3471)

at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1270)

at org.apache.xmlbeans.impl.store.Locale.parseToXmlObject(Locale.java:1257)

at org.apache.xmlbeans.impl.schema.SchemaTypeLoaderBase.parse(SchemaTypeLoaderBase.java:345)

at org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument$Factory.parse(Unknown Source)

at org.apache.poi.xwpf.usermodel.XWPFDocument.getStyle(XWPFDocument.java:446)

at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.(XWPFStylesDocument.java:192)

at org.apache.poi.xwpf.converter.core.styles.XWPFStylesDocument.(XWPFStylesDocument.java:186)

at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.createStylesDocument(XWPFDocumentVisitor.java:161)

at org.apache.poi.xwpf.converter.core.XWPFDocumentVisitor.(XWPFDocumentVisitor.java:154)

at org.apache.poi.xwpf.converter.pdf.internal.PdfMapper.(PdfMapper.java:149)

at org.apache.poi.xwpf.converter.pdf.PdfConverter.doConvert(PdfConverter.java:54)

... 4 more

Caused by: org.xml.sax.SAXParseException; systemId: file:; lineNumber: 1; columnNumber: 1; Unexpected end of file after null

at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.reportFatalError(Piccolo.java:1038)

at org.apache.xmlbeans.impl.piccolo.xml.Piccolo.parse(Piccolo.java:723)

at org.apache.xmlbeans.impl.store.Locale$SaxLoader.load(Locale.java:3439)

... 15 more

这里是我如何转换它的代码:

// 1) Load docx with POI XWPFDocument

XWPFDocument document = new XWPFDocument(new FileInputStream(new File(docxFile)));

XWPFDocument template = new XWPFDocument(new FileInputStream(new File("Template.dotx")));

XWPFStyles newStyles = document.createStyles();

newStyles.setStyles(template.getStyle());

// 2) Convert POI XWPFDocument 2 PDF with iText

File outFile = new File(pdfFile);

OutputStream out = new FileOutputStream( outFile );

PdfOptions options = null;

PdfConverter.getInstance().convert( document, out, options );

但是,如果我用word打开文件并再次保存 – 我可以毫无问题地进行转换.

有什么建议?

解决方法:

我在创建docx文件时使用模板修复了这个问题:

XWPFDocument document = new XWPFDocument();

XWPFDocument template = new XWPFDocument(new FileInputStream(new File("Template.dotx")));

XWPFStyles newStyles = document.createStyles();

newStyles.setStyles(template.getStyle());

标签:java,pdf-generation,docx,apache-poi

来源: https://codeday.me/bug/20190706/1399235.html

java流意外结束_java – POI – null之后的文件意外结束相关推荐

  1. java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用

    java流写入数据库 快速流媒体 当Java 8最终问世时,我和一些大学开始了一个开源项目,以利用Java 8的流库使整个Java / DB问题更进一步,以便将数据库表视为纯Java 8流. 速度诞生 ...

  2. java流的应用_Java中I/O流的应用

    Java中I/O流的应用 iLeGeND packagecom.hp.io; /**  I/O流的应用 * 实现目标: *   首先创建一个文件 *   通过键盘向文件添加内容 *   然后把文件的内 ...

  3. java opencv 读取视频_java使用OpenCV从视频文件中获取帧

    本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...

  4. java合并sheet行_java poi Excel循环合并行

    //Java poi 实现循环合并行,还是第一次遇到这种问题 //在网上查了很多资料,都不是自己想要的 //以下为自己研究后,写的一点东西,给大家分享,希望对大家能有思路上的启发,也希望大家能提出宝贵 ...

  5. java导出excel 客户端_Java poi导出Excel下载到客户端

    Java poi 导出Excel并下载到客户端,具体内容如下 Maven配置,包含了其他文件格式的依赖,就全贴出来了 org.apache.poi poi-excelant 3.12 org.apac ...

  6. java 流常用接口_java 8新特性5--使用集合流式API

    PS:向公众号发送关键字可以搜索文章哦! 使用集合的流式API 直接上代码了,常用api都有了,要点都在注释中 苹果类: packagejava8.stream;/***@authorqiang.xi ...

  7. java excel公式计算_java poi读取excel公式,返回计算值(转) | 学步园

    http://blog.csdn.net/CYZERO/article/details/6573015 经测试,确实可以 1 package hrds.zpf.poi; 2 3  import org ...

  8. java流的写法_java IO-过滤流类的写法

    package test2; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputS ...

  9. java 文件提前结束_java – org.xml.sax.SAXParseException:过早结束文件

    我目前有以下 XML文件. 我的XMLParser.java类. package edu.unsw.comp9321.assignment1; import java.io.File; import ...

  10. java流的序列化_Java中的对象流和序列化介绍

    最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class Student{ private int id; ...

最新文章

  1. Eureka深入理解
  2. LiveVideoStackCon2021音视频技术大会北京站开幕在即,精彩抢鲜看
  3. 安卓逆向_21 --- Java层和so层的反调试( IDA 动态调试 JNI_OnLoad、init_array下断)
  4. 平均每个员工2000万!苹果为啥买下这家刚成立3年的AI创业公司?
  5. cts(7)---android 8.1 vts环境和测试
  6. PHP报错:iconv(): Detected an illegal character in input string
  7. uinty 为什么一旋转鼠标镜头就倒了_Unity3D使用鼠标旋转缩放平移视角
  8. SolidWorks 2010 SP0.0 最新下载+序列号 注册机及方法
  9. 千篇一律的秃顶,各有各的顽皮,1组图让你了解程序员的可爱
  10. VUE常用插件库总结
  11. 【深度学习算法原理】Deep Structured Semantic Models(DSSM)
  12. 马科维茨模型的实例验证与思考(含Python代码)
  13. 圆桌对话:机器学习的商业应用,创业公司并非没有机会 | CCF-GAIR 2017
  14. Macbook M1 软件不兼容的解决办法
  15. 清除浮动的几种方式,以及各自的优缺点
  16. BoW(词袋)模型详细介绍
  17. 1023 穷游?“穷”游?
  18. 微信境外支付php_PHP实现 APP端微信支付功能
  19. 人机工程学产品设计案例_极匞丨艺术类专插本【白云学院产品设计】模块分析...
  20. 湖北简智音:带你走进抖音短视频制作全过程

热门文章

  1. Linux基础之vim文本编辑器
  2. Tomcat7.0下配置javabeanservlet路径问题
  3. apache+fastcgi+php
  4. 深入了解 HTML 5
  5. ×××技术详解(二)
  6. 权重尺寸的计算,张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算,以及FC的维度卷积替代方案
  7. python内置类型
  8. python *args 和 **kwargs
  9. 第四季-专题14-串口驱动程序设计
  10. Android应用开发的一些思考