POI版本升级4.1.2,word转pdf异常
错误提示:nested exception is java.lang.NoClassDefFoundError: org/apache/poi/POIXMLDocumentPart
错误原因:
1、poi版本升级至4.1.2版本后导致转pdf包中XWPFStylesDocument类找不到POIXMLDocumentPart,POIXMLDocumentPart包的路径发生改变为org.apache.poi.ooxml.POIXMLDocumentPart
2、需要重写XWPFStylesDocument.getFontsDocument()、XWPFStylesDocument.getThemeDocuments()、XWPFStylesDocument.getSettings()方法,获取RelationshipType
3、pdf包org.apache.poi.xwpf.converter.core尚未维护更新,最新版本1.0.6与poi4.1.2版本不匹配
解决方式
1、重写pdf包org.apache.poi.xwpf.converter.core.XWPFStylesDocument类,主要有四个地方需要修改:
- 修改POIXMLDocumentPart包路径
- 重写POIXMLDocumentPart.getFontsDocument()、POIXMLDocumentPart.getThemeDocuments()、POIXMLDocumentPart.getSettings()。
- 注意:重写POIXMLDocumentPart后使用方式有两种:
-
(1)、项目中填加org.apache.poi.xwpf.converter.core.styles包路径
-
-
(2)、编辑XWPFStylesDocument类替换org.apache.poi.xwpf.converter.core-1.0.6.jar包中的文件
-
2、换种方式实行word转pdf,poi版本依旧使用4.1.2版本。具体参照 https://blog.csdn.net/weixin_47179113/article/details/119457586
资源下载
1、XWPFStylesDocument.java源码link
2、重写后的org.apache.poi.xwpf.converter.core-1.0.6.jar包link