Spring Boot 基于jodconverter实现Office转PDF
每次去易企签获取签署连接嵌入页面时,都需要等待20s+,这个过程让人有些无法忍受,之前,我方业务有咨询过易企签原因。他说:你们传过来的文档为非PDF文档,我们这边需要将接收到的文件转换为PDF,这个过程比较耗时
。好吧,既然你们都这么说了,那传给你之前先帮转好,这样,你就没话说了吧。
我们的业务会有docx
和xlsx
两种文件各种需要调用易企签发起电子合同签署。为了在调用接口前先把文件转为PDF
,我也去Github
找了许久,原来的mirkonasato/jodconverter
仓库代码已经不再更新,有人fork出了新分支并在持续更新维护中
目前jodconverter
支持的转换格式比较是非常丰富的
jodconverter
依赖于Apache OpenOffice
或LibreOffice
,在使用jodconverter
之前需要先安装二者其一。这两个项目都为开源项目,
但是从Github
的活跃度来看,LibreOffice
显然更活跃一些。这里,我选择安装LibreOffice
.
安装比较简单,直接下载安装即可,无需特殊配置,此不赘述。环境准备好后,就开始我们的编程之旅。
在
pom.xml
中引入两个包1
2
3
4
5
6
7
8
9
10<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-local</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.jodconverter</groupId>
<artifactId>jodconverter-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>配置
jodconverter
1 | jodconverter: |
- 调用
jodconverter
转换文件1
2
3
4
5
6
7
8
9
10
11
12
13@Autowired private DocumentConverter converter;
@Test
void contextLoads(){
try {
File file = FileUtil.file("D:/2042202107216014.xlsx");
File out = FileUtil.file("D:/2042202107216014.pdf");
final DocumentFormat targetFormat =
DefaultDocumentFormatRegistry.PDF;
converter.convert(file).to(out).as(targetFormat).execute();
} catch (OfficeException e) {
}
}
执行这段代码,会打印出如下内容
1 | 2022-10-25 11:25:30.750 INFO [jodconverter-offprocmng-0] org.jodconverter.local.office.OfficeConnection : Connected: 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1' |
总体来说,速度比较快,质量也很不错。DocumentConverter
除了文件方式,也支持文件流的方式。目前还未用到其他的功能,也还未在使用过程遇到什么疑难杂症,后期有遇到坑时,再来补充吧。
Spring Boot 基于jodconverter实现Office转PDF