每次去易企簽獲取簽署連接嵌入頁面時,都需要等待20s+,這個過程讓人有些無法忍受,之前,我方業(yè)務(wù)有咨詢過易企簽原因。他說:你們傳過來的文檔為非PDF文檔,我們這邊需要將接收到的文件轉(zhuǎn)換為PDF,這個過程比較耗時。好吧,既然你們都這么說了,那傳給你之前先幫轉(zhuǎn)好,這樣,你就沒話說了吧。
我們的業(yè)務(wù)會有docx和xlsx兩種文件各種需要調(diào)用易企簽發(fā)起電子合同簽署。為了在調(diào)用接口前先把文件轉(zhuǎn)為PDF,我也去Github找了許久,原來的mirkonasato/jodconverter倉庫代碼已經(jīng)不再更新,有人fork出了新分支并在持續(xù)更新維護中。

目前jodconverter支持的轉(zhuǎn)換格式比較是非常豐富的

jodconverter依賴于Apache OpenOffice或LibreOffice,在使用jodconverter之前需要先安裝二者其一。這兩個項目都為開源項目。


但是從Github的活躍度來看,LibreOffice顯然更活躍一些。這里,我選擇安裝LibreOffice。

安裝比較簡單,直接下載安裝即可,無需特殊配置,此不贅述。環(huán)境準備好后,就開始我們的編程之旅。
<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:
local:
enabled: true
officeHome: D:\Program Files\LibreOffice #此為LibreOffice的安裝目錄
- 調(diào)用jodconverter轉(zhuǎn)換文件
@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) { } }
- 執(zhí)行這段代碼,會打印出如下內(nèi)容。
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'
2022-10-25 11:25:30.751 INFO [jodconverter-offprocmng-0] org.jodconverter.local.office.LocalOfficeProcessManager : Started process; pid: 2960
2022-10-25 11:25:30.752 INFO [jodconverter-poolentry-1] org.jodconverter.local.task.LocalConversionTask : Executing local conversion task [xlsx -> pdf]...
總體來說,速度比較快,質(zhì)量也很不錯。DocumentConverter除了文件方式,也支持文件流的方式。目前還未用到其他的功能,也還未在使用過程遇到什么疑難雜癥,后期有遇到坑時,再來補充吧。