php使用libreoffice将office文件转换为pdf文件
2024-04-02 12:09:36
php
下载
到官网下载libreoffice安装包或者使用下面的国内镜像地址下载
// 历史版本地址
downloadarchive.documentfoundation.org/libreoffice/old/
// 最新版本地址
zh-cn.libreoffice.org/download/libreoffice/
// 国内镜像地址
mirrors.cloud.tencent.com/libreoffice/libreoffice/stable/
// 建议使用最新版
安装安装
- windows系统下安装
windows比较简单,一路默认安装即可,如果使用自定目录一定要保证目录名都是英文的
安装成功后,可以配置环境变量,方便程序调用
inux下安装
#将安装包上传到/usr/src/LibreOffice目录然后进入目录
cd /usr/src/LibreOffice/
# 验证之前有没有安装过
libreoffice --version
# 有安装进行卸载,没有直接下一步
yum remove libreoffice-*
# 解压
tar -zxvf LibreOffice_7.6.6_Linux_x86-64_rpm.tar.gz
#进入目录
cd LibreOffice_7.6.6_Linux_x86-64_rpm/RPMS
# 安装*.rpm
yum -y localinstall *.rpm
# 安装libreoffice-headless
yum install -y libreoffice-headless
# 检验是否安装完成
libreoffice7.6 --version
# 测试Word转PDF并安装libreoffice-writer
libreoffice --headless --convert-to pdf test.docx
Error: source file could not be loaded
# 报这个错表示说明缺少writer,安装一下,没报错会输出转换成功的保存路径
yum install libreoffice-writer
# 转换格式说明
libreoffice --headless --convert-to pdf {文档路径} --outdir {导出目录路径}
使用php进行调用
$docxFile = '/home/wwwroot/public/docx.docx';
$xlsxFile ='/home/wwwroot/public/xlsx.xlsx';
$saveDir = '/home/wwwroot/public/';
var_dump(office_to_pdf($docxFile,$saveDir));
/**
* 使用libreoffice将office文件转换为pdf文件[ppt、pptx、doc、docx、xls、xlsx、txt等]
* @param string $wordFile office文件路径
* @param string $pdfSaveFile pdf文件保存路径
* @return array|string|void
*/
function office_to_pdf($wordFile,$pdfSaveFile='',$libreofficeVersion='7.6'){
if (empty($wordFile) || !file_exists($wordFile)){
return false;
}
try {
if(empty($pdfSaveFile)){
$dir = './';
}else{
$dir = dirname($pdfSaveFile);
if(!is_dir($dir)){
mkdir($dir,0777,true);
}
}
//判断php是否禁用了exec函数
if (function_exists('exec')){
//最好加上版本号,防止多个版本的libreoffice冲突引用了默认的版本
$command = "libreoffice{$libreofficeVersion} --headless --convert-to pdf {$wordFile} --outdir {$dir}";
exec($command,$output,$return_var);
return $output;
}
}catch (Exception $e){
return $e->getMessage();
}
}