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 heredoc和phpwind的模板技术使用方法小结
Mar 28 PHP
深入探讨PHP中的内存管理问题
Aug 31 PHP
PHPMYADMIN导入数据最大为2M的解决方法
Apr 23 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
php基于双向循环队列实现历史记录的前进后退等功能
Aug 08 PHP
PHP表单数据写入MySQL数据库的代码
May 31 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
Oct 16 PHP
php-fpm中max_children的配置
Mar 15 PHP
php array_chunk()函数用法与注意事项
Jul 12 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实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
jquery遍历input取得input的name
2009/04/27 Javascript
javascript天然的迭代器
2010/10/29 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
鼠标滚轴控制文本框值的JS代码
2013/11/19 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
jQuery中ajax的post()方法用法实例
2014/12/26 Javascript
JavaScript获取网页中第一个图片id的方法
2015/04/03 Javascript
基于JavaScript实现手机短信按钮倒计时(超简单)
2015/12/30 Javascript
python学习教程之使用py2exe打包
2017/09/24 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
python实现堆和索引堆的代码示例
2018/03/19 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
对Pyhon实现静态变量全局变量的方法详解
2019/01/11 Python
Python中一个for循环循环多个变量的示例
2019/07/16 Python
Python-opencv实现红绿两色识别操作
2020/06/04 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
美国领先的男士和女士内衣购物网站:Freshpair
2019/02/25 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
银行营业厅大堂经理岗位职责
2014/01/06 职场文书
《这儿真好》教学反思
2014/02/22 职场文书
人事经理岗位职责
2014/04/28 职场文书
中等生评语大全
2014/05/04 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
高中学生会竞选演讲稿
2014/08/25 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
庆七一宣传标语
2014/10/08 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
文员岗位职责
2015/02/04 职场文书
创卫工作总结2015
2015/04/22 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书