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控制网页过期时间的代码
Sep 28 PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
PHP 验证登陆类分享
Mar 13 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
Jul 18 PHP
Laravel实现自定义错误输出内容的方法
Oct 10 PHP
Yii框架弹出框功能示例
Jan 07 PHP
老生常谈PHP面向对象之命令模式(必看篇)
May 24 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
Yii框架连表查询操作示例
Sep 06 PHP
Laravel中validation验证 返回中文提示 全局设置的方法
Sep 29 PHP
laravel与thinkphp之间的区别与优缺点
Mar 02 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
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
php生成zip压缩文件的方法详解
2013/06/09 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
2016/12/14 PHP
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
js创建jsonArray传输至后台及后台全面解析
2016/04/11 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
bootstrap组件之按钮式下拉菜单小结
2017/01/19 Javascript
JavaScript之filter_动力节点Java学院整理
2017/06/28 Javascript
javascript 初学教程及五子棋小程序的简单实现
2017/07/04 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
react以create-react-app为基础创建项目
2018/03/14 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
Python采集腾讯新闻实例
2014/07/10 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
Django模板Templates使用方法详解
2019/07/19 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python自动发微信监控报警
2019/09/06 Python
django创建超级用户过程解析
2019/09/18 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
《望庐山瀑布》教学反思
2014/04/22 职场文书
学校勤俭节约倡议书
2015/04/29 职场文书
西柏坡观后感
2015/06/08 职场文书