最近在使用php想做个word转pdf实现在线预览的功能
LibreOffice是OpenOffice办公套件衍生版, 同样免费开源,并且是跨平台的,支持windows和linux服务器安装。
一、windows下的安装及使用
1.下载并安装《LibreOffice 便携版》
下载地址:https://zh-cn.libreoffice.org/download/libreoffice/
初次下载需安装,安装后,可以将安装后的文件夹直接拷贝到U盘或者直接打个压缩包,其他windows电脑使用只需要解压就可以了,无须再次安装,相当于是绿色版。
2.通过cmd命令实现文档转换
首先打开cmd进入LibreOffice目录,然后运行以下命令:
LibreOfficeWriterPortable --headless --convert-to pdf {文档路径} --outdir {导出目录路径}
例如:
运行后打开pdf导出的目录观察是否有pdf文件产生即可。本身cmd命令运行后没有任何结果和反馈。
3.php调用命令实现文档转换
$retval = 1;
// exec() might be disabled
$cmd = 'D:/soft/LibreOfficePortablePrevious/LibreOfficeWriterPortable.exe --headless --convert-to pdf 1.doc --outdir ./';
if (function_exists('exec')){
@exec($cmd, $output, $retval);
}
// Did it work?
if ($retval > 0){
exit('process_failed');
}
echo 'success';
二、Centos下的安装及使用
1.安装LibreOffice
直接使用yum安装即可:
yum install libreoffice
yum install libreoffice-headless
2、执行命令转换pdf文档
跟windows类似,执行以下命令即可转换文档:
soffice --headless --convert-to pdf {文档路径} --outdir {导出目录路径}
例如:
3、解决中文不显示,变方框的问题
在linux下转换pdf,可能会出现中文字体不被识别,变成小方框的问题,解决步骤:
1.把Windows下的字体C:\Windows\Fonts下的常用字体,即simsun.ttc等复制到usr/share/fonts目录下。
2 修改字体权限
sudo chmod 644 simsun.ttc
3. 更新字体缓存:
sudo fc-cache -fv
4、php调用命令实现文档转换
$retval = 1;
// exec() might be disabled
$cmd = 'export HOME=/tmp/ && /usr/bin/libreoffice --headless --convert-to pdf 1.doc --outdir ./';
if (function_exists('exec')){
@exec($cmd, $output, $retval);
}
// Did it work?
if ($retval > 0){
exit('process_failed');
}
echo 'success';