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 相关文章推荐
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
IStream与TStream之间的相互转换
Aug 01 PHP
PHP curl 并发最佳实践代码分享
Sep 05 PHP
header跳转和include包含问题详解
Sep 08 PHP
php gzip压缩输出的实现方法
Apr 27 PHP
深入解析PHP的引用计数机制
Jun 14 PHP
PHP操作MongoDB GridFS 存储文件的详解
Jun 20 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
May 15 PHP
Smarty变量调节器失效的解决办法
Aug 20 PHP
php强制运行广告的方法
Dec 01 PHP
2款PHP无限级分类实例代码
Nov 11 PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 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
第十四节 命名空间 [14]
2006/10/09 PHP
两种php调用Java对象的方法
2006/10/09 PHP
关于Intype一些小问题的解决办法
2008/03/28 PHP
小谈php正则提取图片地址
2014/03/27 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
2016/04/02 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
Jquery插件之多图片异步上传
2010/10/20 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
js用闭包遍历树状数组的方法
2014/03/19 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
基于JavaScript实现网页倒计时自动跳转代码
2015/12/28 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
Angular 中 select指令用法详解
2016/09/29 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
微信小程序 页面传值详解
2017/03/10 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
jQuery实现简单的回到顶部totop功能示例
2017/10/16 jQuery
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
记录vue做微信自定义分享的一些问题
2019/09/12 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
python中安装Scrapy模块依赖包汇总
2017/07/02 Python
python爬取m3u8连接的视频
2018/02/28 Python
python下PyGame的下载与安装过程及遇到问题
2019/08/04 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
Html5基于canvas实现电子签名并生成PDF文档
2020/12/07 HTML / CSS
Java如何获得ResultSet的总行数
2016/09/03 面试题
纠风工作实施方案
2014/03/15 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
南京南京观后感
2015/06/02 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
初三化学教学反思
2016/02/22 职场文书