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文件上传实例详解!!!
Jan 02 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
PHP 分页类(模仿google)-面试题目解答
Sep 13 PHP
PHP中spl_autoload_register函数的用法总结
Nov 07 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
getJSON跨域SyntaxError问题分析
Aug 07 PHP
Yii2单元测试用法示例
Nov 12 PHP
老生常谈PHP面向对象之注册表模式
May 26 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
PHP实现统计代码行数小工具
Sep 19 PHP
PHP代码覆盖率统计详解
Jul 22 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
提问的智慧(2)
2006/10/09 PHP
PHP 简单数组排序实现代码
2009/08/05 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php中OR与|| AND与&&的区别总结
2013/10/26 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
php实现微信公众平台账号自定义菜单类
2014/12/02 PHP
php+ajax实时刷新简单实例
2015/02/25 PHP
PHP大神的十大优良习惯
2016/09/14 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
如何让页面在打开时自动刷新一次让图片全部显示
2012/12/17 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
2016/08/15 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
nodejs+express实现文件上传下载管理网站
2017/03/15 NodeJs
基于jQuery封装的分页组件
2017/06/26 jQuery
精读《Vue3.0 Function API》
2020/05/20 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
2020/10/29 Javascript
[52:37]完美世界DOTA2联赛循环赛 Forest vs DM BO2第一场 10.29
2020/10/29 DOTA
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
用python求一个数组的和与平均值的实现方法
2019/06/29 Python
Django实现celery定时任务过程解析
2020/04/21 Python
Python gevent协程切换实现详解
2020/09/14 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
Cult Gaia官网:美国生活方式品牌
2019/08/16 全球购物
平面设计师的工作职责
2013/11/21 职场文书
2014年母亲节演讲稿范文
2014/05/07 职场文书
纪念九一八事变演讲稿:牢记九一八,屈辱怎能忘
2014/09/14 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
银行资信证明
2015/06/17 职场文书
2015年卫生局工作总结
2015/07/24 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python