首先安裝Libreoffice這個轉換工具, 這個庫相當的大, 因爲需要安裝大量的Java屎山, 需要等待一段時間。命令如下:
# 如果是centos系列系統 pip install unoconv yum install libreoffice* # 如果是debian/ubuntu系列系統 apt-get install libreoffice apt-get install unoconv
安裝完了之後用這個命令檢查一下是否安裝成功
whereis libreoffice
再測試一手, 隨便找個doc/docx文档, 用這兩個命令來轉一手試試。
libreoffice --headless --convert-to pdf:writer_pdf_Export <word文档地址> --outdir <輸出目錄地址> libreoffice7.0 --invisible --language=zh-CN --convert-to pdf <word文档地址> --outdir <輸出目錄地址>
有的同學搞不清楚路徑是咋回事, 這裡特別說明一下, 比如你想把當前文档夾裡的test.docx輸出到同一文档夾, 那麽命令如下
libreoffice --headless --convert-to pdf:writer_pdf_Export ./test.docx --outdir ./
如果有興趣的同學可以利用php/go來調用命令轉一下, 可以實現在線word轉pdf。
轉碼時間超長, 轉換後的文档全都是亂碼和口口口符號
遇到這個問題就是Linux系統裡沒帶字體的毛病犯了。不相信的話, 你運行一下這個命令試試看, 查查有沒有中文字體
fc-list :lang=zh
打開一看, 一般都是返回空空如也的列表。
解決思路:
先找一台Windows主機, 找到c盤下的windows/fonts目錄, 把裡面所有的.ttf擴展名的文档全部打包, 上傳到Linux主機内的/usr/local/share/fonts裡
如果不喜歡把所有字體都堆放在一起, 可以先在/usr/local/share/fonts目錄下新建一個win目錄, 用以區分字體來源。
建議再帶上微軟雅黑這種通用字體, 文档名爲msyf.ttf, 找找看, 不行就在網上隨便下載一個, 一抓一大把。
接下來用mkfontscale命令編錄一下
如果提示系統找到mkfontscale命令, 那就是沒安裝
# centos系列 yum -y install ttf-mscorefonts-installer # Debian/ubuntu系統 apt-get install ttf-mscorefonts-installer
接下來執行
mkfontscale mkfontdir fc-cache
再列出字體清單看看是不是安裝成功了。
fc-list :lang=zh
正常來說都會安裝成功。安裝不成功請自行debug