PHP使用LibreOffice实现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';

其他:

php运行命令无结果,返回77错误码的解决
http://bbs.bugcode.cn/t/42820

使用docker来实现libreoffice并发转换docx文件为pdf
http://blog.sina.com.cn/s/blog_5921b17e01030oss.html

发表评论

邮箱地址不会被公开。 必填项已用*标注