Windows 系统使用 LibreOffice 办公套件,PHP实现Word转PDF,PDF转图片的操作

1. 下载 LibreOffice 办公套件,安装

下载地址:https://zh-cn.libreoffice.org/download/libreoffice/
在这里插入图片描述

2. 配置环境变量

软件安装目录 /program,加入到环境变量中,配置后,在 cmd 命令行执行:

soffice --version

看到版本号,说明安装成功
在这里插入图片描述

3. php.ini 配置,修改后重启 nginx 或其他 web 服务器

  • 关闭安全模式:safe_mede = Off
  • 启用函数 exec:disable_functions 中去掉 exec 函数

4. CMD 命令行执行转换命令

  • 转换 PDF 的命令格式
soffice --headless --convert-to pdf:writer_pdf_Export {文档路径} --outdir {导出目录路径}
  • 执行命令示例
soffice --headless --invisible --convert-to pdf:writer_pdf_Export "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/172103002785404.docx" --outdir "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/"
  1. 第一个双引号字符串:Word 的完整地址
  2. 第二个双引号字符串:转换后 PDF 的路径
  3. 注:转换后的 PDF 文件名和转换前的 Word 文件名一致

5. 使用 PHP 代码执行转换命令

5.1 Word 转 PDF

//构建转换命令
$sCmd = 'soffice --headless --invisible --convert-to pdf:writer_pdf_Export "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/172103002785404.docx" --outdir "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/"'; 
//exec执行命令,
exec($sCmd, $out, $return);
//成功后return = 0
echo $return;

5.2 PDF 转图片

//构建转换命令 
$sCmd = 'soffice --headless --invisible  --convert-to  jpg "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/172103002785404.pdf" --outdir  "E:\phpstudy_pro\WWW\ranqi_renzheng\Uploads\output\20240715/"';
//exec执行命令
exec($sCmd,$out, $return);
//成功后return 返回0
echo $return;

6. 如果遇到 cmd 命令行可以执行成功,PHP 代码执行失败,请继续往下看

6.1 cmd 命令行,添加当前 windows 系统账户权限
在这里插入图片描述
6.2 LibreOffice/program 目录下的进程文件加上权限

  • soffice.bin 和 soffice.com、soffice.exe,和 6.1 cmd 同样的配方
Node.js 是一种在服务器端运行的 JavaScript 运行环境,可以用于实现各种各样的应用程序。而 LibreOffice 是一款免费、开源的办公软件套件,其中包括了 Writer、Calc、Impress 等应用程序,支持多种文档格式。下面是一个基于 Node.js 和 LibreOffice实现 Word PDF 的简单方法: 1.安装 LibreOffice:首先需要在服务器上安装 LibreOffice,可以通过命令行或者图形界面进行安装。 2.使用 Node.js 的 child_process 模块:在 Node.js 中可以通过 child_process 模块来执行系统命令,在本例中可以使用该模块执行 LibreOffice 的命令行工具来进行 Word PDF操作。 3.编写 Node.js 代码:可以通过 Node.js 编写一个简单的脚本来实现 Word PDF。以下是一个简单的示例代码: ```javascript const { spawn } = require('child_process'); const inputFilePath = '/path/to/input.docx'; const outputFilePath = '/path/to/output.pdf'; const libreoffice = spawn('libreoffice', [ '--headless', '--convert-to', 'pdf', inputFilePath, '--outdir', outputFilePath, ]); libreoffice.stdout.on('data', (data) => { console.log(`stdout: ${data}`); }); libreoffice.stderr.on('data', (data) => { console.error(`stderr: ${data}`); }); libreoffice.on('close', (code) => { console.log(`child process exited with code ${code}`); }); ``` 以上代码中,spawn 方法会启动一个新的进程来执行 LibreOffice 命令行工具。'--headless' 参数表示以无头模式运行,'--convert-to pdf' 参数表示换成 PDF 格式,inputFilePath 参数表示输入文件的路径,'--outdir' 参数表示输出文件的路径。 4.运行 Node.js 代码:在终端中运行 Node.js 脚本即可进行 Word PDF操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值