docx格式的word文档转换为pdf文件中的POIXMLDocumentPart报错问题解决;
由于早期版本的fr.opensagres.xdocreport与项目中的其他依赖存在版本不兼容,导致运行时出现NoClassDefFoundError。通过将fr.opensagres.poi.xwpf.converter.pdf-gae的版本从2.0.2升级到2.0.3,解决了此异常,表明低版本的库可能无法与高版本的ApachePOI组件协同工作。
下面是pom.xml的配置
<!-- https://mvnrepository.com/artifact/com.deepoove/poi-tl --> <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.11.0</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>5.2.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>5.2.2</version> </dependency> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId> <version>2.0.3</version> </dependency> <!-- https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.pdf --> <dependency> <groupId>fr.opensagres.xdocreport</groupId> <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId> <version>1.0.6</version> </dependency>
下面是转换类代码:
import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.data.PictureType; import com.deepoove.poi.data.Pictures; import com.deepoove.poi.data.Texts; import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter; import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions; import org.apache.poi.xwpf.usermodel.XWPFDocument; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.util.HashMap; class POITest { public static void main(String[] args) throws Exception { InputStream in = new FileInputStream("E:\\output.docx"); XWPFDocument xwpfDocument = new XWPFDocument(in); PdfOptions options = PdfOptions.create(); OutputStream out = new FileOutputStream("E:\\output.pdf"); PdfConverter.getInstance().convert(xwpfDocument, out, options); in.close(); out.close(); System.out.println("POIUtil-->PDF执行完成,文件生成=================="); } }
开发过程中出现的问题:
1,word文档转换为pdf文档过程中,java项目使用的是fr.opensagres.xdocreport的jar的引用,前期使用的是2.0.2版本,如下代码:
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
<version>2.0.2</version>
</dependency>
由于版本过低,导致类文件找不到的异常:
Exception java.lang.NoClassDefFoundError: org/apache/poi/POIXMLDocumentPart
按照网上其他网友提到的解决办法,执行较为复杂,在查找这个jar的版本过程中发现,将2.0.2版本提高的2.0.3版本后,问题解决。应该是低版本不兼容其他jar高版本的原因。
解决办法:将fr.opensagres.poi.xwpf.converter.pdf-gae改为高版本2.0.3版本。
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>fr.opensagres.poi.xwpf.converter.pdf-gae</artifactId>
<version>2.0.3</version>
</dependency>
原文链接:https://blog.csdn.net/yepboy/article/details/130971400

浙公网安备 33010602011771号