项目使用的 apache的poi。
下面是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>
<!-- 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>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.2</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>