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


Posted in PHP onNovember 26, 2020

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

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

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

我们新建一个 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中下载的中文是乱码,请自行安装一个中文字体到服务器字体目录即可

总结

到此这篇关于PHP替换Word中变量并导出PDF图片的实现方法的文章就介绍到这了,更多相关PHP替换Word变量并导出PDF图片内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
php仿ZOL分页类代码
Oct 02 PHP
php adodb介绍
Mar 19 PHP
PHP简洁函数小结
Aug 12 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
解析PHP生成静态html文件的三种方法
Jun 18 PHP
PHP 实现代码复用的一个方法 traits新特性
Feb 22 PHP
PHP加密解密函数详解
Oct 28 PHP
php HTML无刷新提交表单
Apr 05 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 24 PHP
PHP扩展安装方法步骤解析
Nov 24 #PHP
Cookie跨域问题解决方案代码示例
Nov 24 #PHP
PHP执行linux命令6个函数代码实例
Nov 24 #PHP
PHP获取真实IP及IP模拟方法解析
Nov 24 #PHP
Thinkphp极验滑动验证码实现步骤解析
Nov 24 #PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
Nov 23 #PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
Nov 22 #PHP
You might like
dedecms模版制作使用方法
2007/04/03 PHP
php面向对象全攻略 (十) final static const关键字的使用
2009/09/30 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
Joomla简单判断用户是否登录的方法
2016/05/04 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
jquery.validate使用攻略 第五步 正则验证
2010/07/01 Javascript
jquery 表格的增行删行实现思路
2013/03/21 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
javascript实现点击按钮让DIV层弹性移动的方法
2015/02/24 Javascript
js遍历获取表格内数据的方法(必看)
2017/04/06 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
JS正则表达式完美实现身份证校验功能
2017/10/18 Javascript
JavaScript实现随机点名器实例详解
2019/05/07 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
Python实现简单的可逆加密程序实例
2015/03/05 Python
初步解析Python中的yield函数的用法
2015/04/03 Python
在Python的Flask框架中使用模版的入门教程
2015/04/20 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
使用python的pandas库读取csv文件保存至mysql数据库
2018/08/20 Python
Python中is和==的区别详解
2018/11/15 Python
对python的unittest架构公共参数token提取方法详解
2018/12/17 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
简单了解Django ContentType内置组件
2019/07/23 Python
解决python3插入mysql时内容带有引号的问题
2020/03/02 Python
Reformation官网:美国女装品牌
2018/09/14 全球购物
2014银行领导班子群众路线对照检查材料思想汇报
2014/09/17 职场文书
2014年扶贫工作总结
2014/11/18 职场文书
2014小学数学教研组工作总结
2014/12/06 职场文书
三方合作意向书范本
2015/05/09 职场文书
酒会开场白大全
2015/06/01 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
JS不要再到处使用绝对等于运算符了
2021/04/30 Javascript