您正在使用IPV4(44.192.247.184)访问本站 您本次共访问本站 1 次
 用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]文明驾车我带头,文明行路我带头,礼貌让座我带头      

【腾讯云】云服务器等爆品抢先购,低至4.2元/月      
[公益] 节省一分零钱 献出一份爱心 温暖世间真情      
2023年 元宵节 4
2023年 情人节 13
2024年 元 旦 334
2024年 春 节 374
 
您现在的位置:首页 >> PHP >> 内容
本类新增
本类热门文章
PHP替换Word中变量并导出PDF图片的实现方法
内容摘要: 在线生成合同信息,一个word文件里面有些信息需要通过数据库读取计算出并填写到word文档中最终显示在线pdf预览功能,接下来我交大家如果实现该需求2、接下来实现如何替换文档内容我们新建一个aa.docx的文档,里面放了一个变量信息3、接下来使用php来替换这个变量信息代码如下...usePhpOffice\PhpWord\TemplateProcessor......
在线生成合同信息,一个word文件里面有些信息需要通过数据库读取计算出并填写到word文档中最终显示在线pdf预览功能,接下来我交大家如果实现该需求

2、接下来实现如何替换文档内容

我们新建一个aa.docx的文档,里面放了一个变量信息

3、接下来使用php来替换这个变量信息代码如下

...

usePhpOffice\PhpWord\TemplateProcessor;

...

$path=storage_path('aa.docx');

//生成world存放目录

$filePath=storage_path('contract.docx');

//声明模板象并读取模板内容

$templateProcessor=newTemplateProcessor($path);

//替换模板内容

$templateProcessor->setValue('contract','北京乙方');//乙方

//生成新的world

$templateProcessor->saveAs($filePath);

...

usePhpOffice\PhpWord\TemplateProcessor;

...

$path=storage_path('aa.docx');

//生成world存放目录

$filePath=storage_path('contract.docx');

//声明模板象并读取模板内容

$templateProcessor=newTemplateProcessor($path);

//替换模板内容

$templateProcessor->setValue('contract','北京乙方');//乙方

//生成新的world

$templateProcessor->saveAs($filePath);

这样我们就完成了word里面模板变量的替换是不是比较简单呢

4、接下来我们需要处理word文档转为pdf我也在网上了查了比较多的资料,什么先转为html然后通过其它包的方式或者扩展来转pdf确实都能实现,但是有一点word转为html的时候格式会丢失这就和我们的需求有点偏离,后面转换了方向,使用工具来把word转为pdf这里我推荐的工具为unoconv安装方式如下

apt-getinstallunoconv

#如果报错请求服务器语言设置为LANG=”en_US.UTF-8″

#使用命令把word转为pdf

unoconv-fpdfaa.docx

#这个时候在当前目录下就会有一个aa.pdf的文件出来

#但是会发现如果是中文的情况下转出来的pdf是乱码该如何解决

5、pdf生成出来中文乱码解决方案,安装一个中文字体

#把电脑本机的宋体上传到服务器字体目录下/usr/share/fonts新建一个目录win或者其它,把中文字体上传到该目录下

apt-getinstallmkfontscale#安装这个工具

#进入到/usr/share/fonts/win/执行命令

mkfontscale&&sudomkfontdir&&sudofc-cache-fv

#然后重启服务器让字体生效

reboot

#最后在执行

unoconv-fpdfaa.docx

#看是不是中文乱码的问题解决了

6、使用php的执行shell的函数来调用该函数自动生成即可

shell_exec('/usr/binunoconv-fpdfaa.docx')

注:如php执行shell脚本命令不生效时,此处的问题是用户权限不正确导致不能执行该命令解决方案如下:

#编辑vim/etc/sudoers文件

rootALL=(ALL:ALL)ALL

www-dataALL=(ALL)ALL

%www-dataALL=(ALL)NOPASSWD:ALL

zhouyaoALL=(ALL)ALL

zhouyaoALL=(ALL)NOPASSWD:ALL

#增加用户zhouyao忽略执行命令需要密码

#增加用户组和用户zhouyao

useraddzhouyao-m#-m创建家目录

#更改php-fpm的用户和用户组

cd/etc/php/7.1/fpm/pool.d

vimwww.conf

user=zhouyao

group=zhouyao

#退出保存

重启php-fpm和nginx,此时在浏览器在执行该文件可以看到pdf下载下来了

#如pdf中下载的中文是乱码,请自行安装一个中文字体到服务器字体目录即可

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:一个简单的php图形验证码生成程序 下一篇:PHP生成饼图的示例代码
发布日期:2023/1/6
手机扫二维码直达本页
发布时间:19:19:37
点  击:29
录  入:齐天大圣
相关文章
Baidu

YiJiaCMS 6.3.5.220928(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,百度云加速提供加速防护
Copyright©2000-2023