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下使用iconv需要注意的问题
Nov 20 PHP
php去除重复字的实现代码
Sep 16 PHP
用php简单实现加减乘除计算器
Jan 06 PHP
php实现获取局域网所有用户的电脑IP和主机名、及mac地址完整实例
Jul 18 PHP
PHP调用MySQL存储过程并返回值的方法
Dec 26 PHP
php采集中国代理服务器网的方法
Jun 16 PHP
php metaphone()函数及php localeconv() 函数实例解析
May 15 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP购物车类Cart.class.php定义与用法示例
Jul 20 PHP
Laravel5.7 数据库操作迁移的实现方法
Apr 12 PHP
laravel5.6框架操作数据curd写法(查询构建器)实例分析
Jan 26 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 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实现倒计时功能
2020/11/16 PHP
jQuery Selector选择器小结
2010/05/06 Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
2012/05/11 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
页面图片浮动左右滑动效果的简单实现案例
2014/02/10 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
Web前端新人笔记之jquery入门心得(新手必看)
2016/05/17 Javascript
AngularJS指令详解及示例代码
2016/08/16 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
js实现移动端编辑添加地址【模仿京东】
2017/04/28 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
2018/04/26 Python
详解Python3的TFTP文件传输
2018/06/26 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python while循环使用else语句代码实例
2020/02/07 Python
浅谈python多线程和多线程变量共享问题介绍
2020/04/17 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
Java面试题:Java类的Main方法如果是Private将会怎么样
2016/08/18 面试题
服务承诺书怎么写
2014/05/24 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
MySQL的存储过程和相关函数
2022/04/26 MySQL
Hive常用日期格式转换语法
2022/06/25 数据库