環(huán)境
- Ubuntu 12.04.5 LTS
- LibreOffice 3.5
解決方案
安裝
- 安裝libreoffice
sudo apt-get install libreoffice-common
- 安裝unoconv 以及支持文件
apt-get install unoconv libreoffice-core libreoffice-writer libreoffice-calc openoffice.org-java-common
轉(zhuǎn)換方式
- libreoffice自帶方式
注意:在GUI下使用廓块,如果已經(jīng)開啟了桌面環(huán)境的Libreoffice,命令行無法生效
libreoffice --headless --convert-to pdf *.doc
或者
soffice --headless --convert-to pdf *.doc
- unoconv 方式
unoconv -f pdf *.doc
問題及解決
問題:
轉(zhuǎn)換后的中文文檔內(nèi)容中的中文都成了方框
解決:
- locale 修改(/etc/default/locale)
LANG="zh_CN.UTF-8"
LANGUAGE="zh_CN:en_US:en"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
- locale修改后需重新登錄生效
- 將win7下的字體放在 /usr/share/fonts/win 下
其他參考資料里,還需要使之生效的命令尼酿,我自己實現(xiàn)時,在字體放過去后频蛔,轉(zhuǎn)換文件就正常顯示了。
問題:
在公司的服務器上部署的時候,unoconv在 php中無法執(zhí)行
在自己的VPS上部署時沒有這問題
解決:
公司電腦上開啟一個監(jiān)聽的守護進程來處理unoconv調(diào)用soffice中的庫文件的請求:
/usr/bin/soffice --headless --nofirststartwizard --nologo --norestore --nodefault --invisible "--accept=socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" &
我也不知道為什么就解決了饼记。。慰枕【咴颍可能大概和公司的電腦部署了桌面環(huán)境有關(guān)