項目需求,對上傳的文檔進行一些預處理,如果用戶上傳了doc格式的文檔,需要將其處理為docx或者pdf格式,以便后續的流程對文檔內容進行提取。
先是試了一下phpoffice/phpword
這個包,發現其對doc的轉換很不理想,這個包更適合用來根據內容生成文檔,而不是轉換文檔,不是太適合我這種需求。
然后發現了LibreOffice這個開源工具,經過使用,效果很好,分享一下。
服務器是CentOS7,直接使用yum安裝LibreOffice,大概需要600MB+ 的磁盤空間:
# 裝之前可以先刪除一下,防止之前裝過
yum remove libreoffice-*
yum install libreoffice
等待安裝完成后,確認一下版本啥的,雖然官方已經到6.1版本了,yum里面還是5.3.6的包,不過用起來并沒有什么毛病,在這里我還是建議大家使用各自的Linux系統的包管理工具來安裝,這樣可以省去很多麻煩的。
[root@localhost /]# soffice --version
LibreOffice 5.3.6.1 30(Build:1)
不會用的話可以使用soffice --help看一下幫助,非常多的參數和使用案例,轉換格式就很簡單:
soffice --headless --convert-to docx /opt/upload/source/123.doc --outdir /opt/upload/source
以上的命令就是將/opt/upload/source/123.doc
文件轉換成docx格式,輸出到/opt/upload/source
文件夾里。
默認情況下:
- 會使用源文件名+新的擴展名保存輸出文件;
- 會覆蓋outdir里已經有的同名文件;
轉換成功會輸出類似這樣的:
convert /opt/upload/source/123.doc -> /opt/upload/source/123.docx using filter : MS Word 2007 XML
Overwriting: /opt/upload/source/123.docx
LibreOffice會根據文件格式自動匹配格式過濾器(filter),至于它支持哪些格式,可以參考一下官網。
總結
以上所述是小編給大家介紹的CentOS下使用LibreOffice實現文檔格式的轉換方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!