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

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

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


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

安裝比較簡單,直接下載安裝即可,無需特殊配置,此不贅述。環(huán)境準(zhǔ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í)行這段代碼,會(huì)打印出如下內(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ì)量也很不錯(cuò)。DocumentConverter除了文件方式,也支持文件流的方式。目前還未用到其他的功能,也還未在使用過程遇到什么疑難雜癥,后期有遇到坑時(shí),再來補(bǔ)充吧。