首先安装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