SpringBoot集成OpenOffice部署到docker(windows和linux)


目標:最近遇到一個實現文件預覽功能,利用了openoffice把文件轉成html格式返回給前端
openoffice安裝
地址:http://www.openoffice.org/download/index.html(下載偏慢,csdn有幣大佬可以去上面找找資源。很快,很貴)

windows:
1.下載了直接一直下一步安裝就好,推薦默認路徑,否則需要配置(后面會提到)

linux:
1.推薦壓縮包放到/opt目錄下

2.解壓:tar -zxvf Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz

     

3.移動到安裝目錄:cd zh-CN/RPMS
4.安裝:rpm -ivh openoffice4.1.3-redhat-menus-4.1.3-9783.noarch.rpm
5.移動到程序目錄:cd /opt/openoffice4/program
6.啟動服務:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

7.查看啟動狀態:ps -ef|grep soffice

     

 

 

  至此,openoffice我們安裝完成。

 

 SpringBoot開發
 1.添加依賴

    

 

   2.編寫代碼

   

 

 

 

    系統會自動裝配DocumentConverter,我們可以直接使用。convert和to方法支持流也支持文件,兩個as方法是作為該流或文件作為什么類型轉成什么類型。

   

    3.添加配置

   

  前面3個配置項顯而易見也沒什么大問題,后兩個容易出現一些問題:

 

  問題1:拋出異常IllegalStateException:officeHome not set and could not be auto-detected

  第一種情況:office-home其實是可以不填的,系統會默認一些路徑。如果沒有安裝在系統指定路徑並且沒有配置office-home會拋出這個異常。

  默認路徑存儲在jar包中org.jodconverter.office.LocalOfficeUtils文件下,可以自行查閱。如果沒有安裝在這下面像我一樣指定。

  第二種情況:項目本地沒有問題,部署在docker中突然出現這個錯誤。熟悉docker的朋友應該知道程序獲取路徑獲取的其實是docker容器的路徑,

  所以需要在運行docker容器的時候添加掛載目錄。例:docker run ... -v opt/openoffice4:/opt/openoffice4 ... 

 

  問題2:拋出異常IllegalArgumentException: URL seems to be an unsupported

  第一種情況:查看當前文件格式是否被支持。支持類型存儲在org.jodconverter.document.DefaultDocumentFormatRegistry類中,自己去查看是

  否支持自己的類型轉換。

  第二種情況:其實還有一種情況也會拋出這個異常,就是程序在轉換文件類型時會生成中間臨時文件,如果找不到也會出現這個異常。我在配置

  文件中配置的working-dir就是指定中間臨時文件的存儲路徑。默認不填是沒有問題,系統生成然后程序自己去找。而程序部署在docker中就會出現

  系統生成在服務器目錄下,程序在docker容器目錄下找的尷尬問題。因為我們之前上一步啟動docker掛載了opt目錄,所以干脆在opt目錄下新建文

  件夾配置上就ok了。如果不是docker掛載問題也可以考慮是不是其他類似情況。

   

  至此,我們部署在docker的程序已經可以再linux實現文件類型轉換啦。有問題可以下方評論。

   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM