PHP替换Word中变量并导出PDF图片的实现方法
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-01 09:35:18 浏览: 评论:0
这篇文章主要给大家介绍了关于PHP替换Word中变量并导出PDF图片的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
在线生成合同信息,一个 word 文件里面有些信息需要通过数据库读取计算出并填写到 word 文档中最终显示在线 pdf 预览功能,接下来我交大家如果实现该需求
2、接下来实现如何替换文档内容
我们新建一个 aa.docx 的文档,里面放了一个变量信息
3、接下来使用 php 来替换这个变量信息 代码如下:
- ...
- use PhpOffice\PhpWord\TemplateProcessor;
- ...
- $path = storage_path('aa.docx');
- // 生成world 存放目录
- $filePath = storage_path('contract.docx');
- // 声明模板象并读取模板内容
- $templateProcessor = new TemplateProcessor($path);
- // 替换模板内容
- $templateProcessor->setValue('contract', '北京乙方'); // 乙方
- // 生成新的 world
- $templateProcessor->saveAs($filePath);
这样我们就完成了 word 里面模板变量的替换是不是比较简单呢
4、接下来我们需要处理 word 文档转为 pdf 我也在网上了查了比较多的资料,什么先转为 html 然后通过 其它包的方式或者扩展来转 pdf 确实都能实现,但是有一点 word 转为 html 的时候格式会丢失这就和我们的需求有点偏离,后面转换了方向,使用工具来把 word 转为 pdf 这里我推荐的工具为 unoconv 安装方式如下:
- apt-get install unoconv
- #如果报错请求服务器语言设置为 LANG=”en_US.UTF-8″
- #使用命令把 word 转为 pdf
- unoconv -f pdf aa.docx
- #这个时候在当前目录下就会有一个 aa.pdf 的文件出来
- #但是会发现如果是中文的情况下转出来的 pdf 是乱码该如何解决
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 脚本命令不生效时,此处的问题是用户权限不正确导致不能执行该命令 解决方案如下:
- # 编辑 vim /etc/sudoers文件
- 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
- # 增加用户zhouyao 忽略执行命令需要密码
- # 增加用户组和用户zhouyao
- useradd zhouyao -m # -m 创建家目录
- # 更改php-fpm的用户和用户组
- cd /etc/php/7.1/fpm/pool.d
- vim www.conf
- user = zhouyao
- group = zhouyao
- # 退出保存
重启php-fpm和nginx,此时在浏览器在执行该文件可以看到pdf下载下来了。
# 如pdf中下载的中文是乱码,请自行安装一个中文字体到服务器字体目录即可。
Tags: PHP导出PDF图片
- 上一篇:php操作redis命令及代码实例大全
- 下一篇:最后一页
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)