前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP替换Word中变量并导出PDF图片的实现方法

PHP替换Word中变量并导出PDF图片的实现方法

作者头像
用户8832503
修改2021-07-14 10:51:52
2.7K0
修改2021-07-14 10:51:52
举报
文章被收录于专栏:php编辑php编辑

在线生成合同信息,一个 word 文件里面有些信息需要通过数据库读取计算出并填写到 word 文档中最终显示在线 pdf 预览功能,接下来我交大家如果实现该需求

2、接下来实现如何替换文档内容

我们新建一个 aa.docx 的文档,里面放了一个变量信息

3、接下来使用 php 来替换这个变量信息 代码如下

...

use PhpOfficePhpWordTemplateProcessor;

...

$path = storage_path('aa.docx');

// 生成world 存放目录

$filePath = storage_path('contract.docx');

// 声明模板象并读取模板内容

$templateProcessor = new TemplateProcessor($path);

// 替换模板内容

$templateProcessor->setValue('contract', '北京乙方'); // 乙方

// 生成新的 world

$templateProcessor->saveAs($filePath);

这样我们就完成了 word 里面模板变量的替换是不是比较简单呢

4、接下来/

【php教程_linux常用命令_网络运维技术】

/我们需要处理 word 文档转为 pdf 我也在网上了查了比较多的资料,什么先转为 html 然后通过 其它包的方式或者扩展来转 pdf 确实都能实现,但是有一点 word 转为 html 的时候格式会丢失这就和我们的需求有点偏离,后面转换了方向,使用工具来把 word 转为 pdf 这里我推荐的工具为 unoconv 安装方式如下

apt-get install unoconv

unoconv -f pdf aa.docx

5、pdf 生成出来中文乱码解决方案,安装一个中文字体

# 把电脑本机的宋体上传到服务器字体目录下 /usr/share/fonts 新建一个目录 win 或者其它,把中文字体上传到该目录下

apt-get install mkfontscale #安装这个工具

# 进入到/usr/share/fonts/win/ 执行命令

mkfontscale && sudo mkfontdir && sudo fc-cache -fv

# 然后重启服务器让字体生效

reboot

# 最后在执行

unoconv -f pdf aa.docx

# 看是不是中文乱码的问题解决了

6、使用 php 的执行 shell 的函数来调用该函数自动生成即可

shell_exec('/usr/binunoconv -f pdf aa.docx')

注:如 php 执行 shell 脚本命令不生效时,此处的问题是用户权限不正确导致不能执行该命令 解决方案如下:

root ALL=(ALL:ALL) ALL

www-data ALL=(ALL) ALL

%www-data ALL=(ALL) NOPASSWD:ALL

zhouyao ALL=(ALL) ALL

zhouyao ALL=(ALL) NOPASSWD:ALL

useradd zhouyao -m # -m 创建家目录

cd /etc/php/7.1/fpm/pool.d

vim www.conf

user = zhouyao

group = zhouyao

重启php-fpm和nginx,此时在浏览器在执行该文件可以看到pdf下载下来了

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档