当前位置: 首页 > 科技观察

SpringBoot基于Jodconverter实现Office转PDF

时间:2023-03-20 18:30:31 科技观察

每次去易奇奇获取签名连接内嵌页面,都需要等待20s+。这个过程有点受不了。此前,我们的业务已向伊奇奇咨询过原因。他说:您发送的文档是非PDF文档,我们需要将收到的文档转换为PDF,这是一个耗时的过程。好吧,既然你们都这么说了,那我就帮你处理一下再传给你们,让你们无话可说。我们的业务会有docx和xlsx两种文档,分别需要调用易奇签名发起电子合同签署。为了在调用接口之前把文件转成PDF,我也去Github上找了半天。原mirkonasato/jodconverter仓库代码不再更新。有人fork出一个新的分支,并在不断更新和维护它。目前jodconverter支持的转换格式非常丰富。Jodconverter依赖于ApacheOpenOffice或LibreOffice,在使用jodconverter之前需要先安装其中之一。这两个项目都是开源项目。但从Github的活跃度来看,LibreOffice显然更活跃。这里,我选择安装LibreOffice。安装比较简单,直接下载安装即可,不需要特殊配置,这里不再赘述。环境准备好后,我们就开始我们的编程之旅。在pom.xml中引入两个包org.jodconverterjodconverter-local4.4.0org.jodconverterjodconverter-spring-boot-starter4.4.0配置jodconverterjodconverter:local:enabled:trueofficeHome:D:\ProgramFiles\LibreOffice#这里调用jodconverter为LibreOffice的安装目录转换文件@AutowiredprivateDocumentConverterconverter;@TestvoidcontextLoads(){try{Filefile=FileUtil.file("D:/2042202107216014.xlsx");Fileout=FileUtil.file("D:/2042202107216014.pdf");finalDocumentFormattargetFormat=DefaultDocumentFormatRegistry.PDF;converter.convert(file).to(out).as(targetFormat).execute();}catch(OfficeExceptione){}}执行这段代码会打印出如下内容。2022-10-2511:25:30.750信息[jodconverter-offprocmng-0]org.jodconverter.local.office.OfficeConnection:已连接:'socket,host=127.0.0.1,port=2002,tcpNoDelay=1'2022-10-2511:25:30.751INFO[jodconverter-offprocmng-0]org.jodconverter.local.office.LocalOfficeProcessManager:启动进程;pid:29602022-10-2511:25:30.752INFO[jodconverter-poolentry-1]组织。jodconverter.local.task.LocalConversionTask:Executinglocalconversiontask[xlsx->pdf]...总体来说速度还是比较快的,质量也很好。除了文件方式,DocumentConverter还支持文件流方式。其他功能我还没有用过,在使用过程中也没有遇到什么疑难杂症。后面如果遇到坑,欢迎补充。