1、yum安装unoconv
sudo yum -y install unoconv
2、查看unoconv版本
unoconv --version
3、转换
##word转pdf unoconv -f pdf test.docx
转换成功
4、中文乱码问题
将中文字体复制到/usr/share/fonts目录下即可
5、php项目中使用
exec("unoconv -f pdf /www/path/test.docx")
此时发现无法转换成功,网上找解决方案,有说unoconv要使用绝对路径,尝试一下
exec("/usr/bin/unoconv -f pdf /www/path/test.docx")
发现还是不行。
继续网上找解决方案,了解到exec有3个参数,第一个是要执行的命令,第二个是参数是一个数组,数组的值是由第一个命令执行后生成的,第三个参数执行的状态,0表示成功,其他都表示失败。尝试加入exec第二和第三个参数输出结果
$result = exec("/usr/bin/unoconv -f pdf /www/path/test.docx"); var_dump($result); echo '<br>'; var_dump($output); echo '<br>'; var_dump($return_var);
输出的结果:
发现第三个参数输出的结果为1,即为失败,但第二个参数没有任何错误内容。
网上继续找解决方案,了解到exec在执行命令时,可以在命令后面使用 2>&1, 命令就会输出shell执行时的错误到$output变量, 输出该变量即可分析。然后继续尝试:
$result = exec("/usr/bin/unoconv -f pdf /www/path/test.docx 2>&1"); var_dump($result); echo '<br>'; var_dump($output); echo '<br>'; var_dump($return_var);
输出的结果:
错误信息出来了,当根据这个错误信息无法清除错误原因,唯有继续网上找解决方案
参考:
https://installati.one/centos/7/unoconv/
https://blog.csdn.net/weixin_39638012/article/details/115647567
本帖已被设为精华帖!