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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
php生成zip压缩文件的方法详解
Jun 09 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
Jun 26 PHP
PHP 文件编程综合案例-文件上传的实现
Jul 03 PHP
php抓取并保存网站图片的实现代码
Oct 28 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
Feb 14 PHP
Linux平台php命令行程序处理管道数据的方法
Nov 10 PHP
PHP房贷计算器实例代码,等额本息,等额本金
Apr 01 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
PHP程序员简单的开展服务治理架构操作详解(三)
May 14 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之变量、常量学习笔记
2008/03/27 PHP
PHP STRING 陷阱原理说明
2010/07/24 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
简略的前端架构心得&&基于editor为例子的编码小技巧
2010/11/25 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
浅谈jQuery中setInterval()方法
2015/07/07 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
理解javascript模块化
2016/03/28 Javascript
Boostrap入门准备之border box
2016/05/09 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
MockJs结合json-server模拟后台数据
2020/08/26 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Python基础教程之利用期物处理并发
2018/03/29 Python
Python Numpy库安装与基本操作示例
2019/01/08 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
python中PyQuery库用法分享
2021/01/15 Python
协议书的格式
2014/04/23 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
python 解决微分方程的操作(数值解法)
2021/05/26 Python
Java面试题冲刺第十七天--基础篇3
2021/08/07 面试题
Mysql多层子查询示例代码(收藏夹案例)
2022/03/31 MySQL