如何使用PHP用LibreOffice实现word转pdf

最近在使用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';

你可能感兴趣的:(如何使用PHP用LibreOffice实现word转pdf)