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 相关文章推荐
再次研究下cache_lite
Feb 14 PHP
php过滤危险html代码
Aug 18 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
php 发送带附件邮件示例
Jan 23 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
php多任务程序实例解析
Jul 19 PHP
php实现文件下载代码分享
Aug 19 PHP
php简单处理XML数据的方法示例
May 19 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
PHP使用GD库制作验证码的方法(点击验证码或看不清会刷新验证码)
Aug 15 PHP
Yii框架中使用PHPExcel的方法分析
Jul 25 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
Adodb的十个实例(清晰版)
2006/12/31 PHP
浅谈php serialize()与unserialize()的用法
2013/06/05 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
smarty模板引擎中自定义函数的方法
2015/01/22 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
PHP一个简单的无需刷新爬虫
2019/01/05 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
js window.open弹出新的网页窗口
2014/01/16 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
基于ajax实现文件上传并显示进度条
2015/08/03 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
node.js基础知识小结
2018/02/26 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
[37:21]完美世界DOTA2联赛PWL S2 Inki vs Magma 第二场 11.22
2020/11/24 DOTA
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python中方法链的使用方法
2016/02/23 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python读取excel数据绘制简单曲线图的完整步骤记录
2020/10/30 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
关于Python错误重试方法总结
2021/01/03 Python
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
测试工程师岗位职责
2013/11/28 职场文书
感恩教育活动总结
2014/05/05 职场文书
公司离职证明标准格式
2014/11/18 职场文书
2014年平安夜寄语
2014/12/08 职场文书
2015新年寄语(一句话)
2014/12/08 职场文书
股东大会通知
2015/04/24 职场文书
大学考试作弊检讨书
2015/05/06 职场文书
化验室安全管理制度
2015/08/06 职场文书
高中数学教学反思范文
2016/02/18 职场文书
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技