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

posted @ 2025-04-16 17:56  思凡念真  阅读(256)  评论(0)    收藏  举报