这篇文章主要介绍了Laravel使用laravel-snappy包实现HTML转PDF和PNG的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
<强>前言强>
由于公司要开发一个新的工具叫做云合同,可以预设好几套固定的合同模板(HTML页面),使用参数填充方式将合同内的数据灵活变化,然后生成PDF和PNG
查阅一番我们发现了<代码> laravel-snappy 代码>这个包,底层使用的是<代码> wkhtmltopdf 代码>,<代码> wkhtmltopdf> 代码是构建于<代码> QT Webkit 代码>之上,而<代码> QT Webkit> 代码又是基于Webkit <代码> 代码>的,跟我们的浏览器一样的渲染引擎。
<强>安装强>
1,先查看系统是32位的还是64位的
uname -
2,通过作曲家安装wkhtmltopdf
32位: 作曲家美元需要h5cc/wkhtmltopdf-i386 0.12.x 作曲家美元需要h5cc/wkhtmltoimage-i386 0.12.x 64位: 作曲家美元需要h5cc/wkhtmltopdf-amd64 0.12.x 作曲家要求h5cc/wkhtmltoimage-amd64 0.12美元。x
3,接下来将安装好的wkhtmltopdf复制到Linux系统可执行命令的目录中
cp供应商/h5cc wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64/usr/local/bin/cp供应商/h5cc wkhtmltopdf-amd64/bin/wkhtmltopdf-amd64/usr/local/bin///并使其可执行: chmod + x/usr/local/bin/wkhtmltoimage-amd64 chmod + x/usr/local/bin/wkhtmltopdf-amd64
4,安装laravel-snappy包
作曲家需要barryvdh/laravel-snappy
<强>配置强>
1,将ServiceProvider添加到配置/应用程序。php中数的供应商组中
Barryvdh \时髦\ ServiceProvider::类,
2,将立面添加到配置/应用程序。php中的别名数组中
& # 39;pdf # 39;=比;Barryvdh \时髦\外墙\ SnappyPdf::类, & # 39;SnappyImage& # 39;=比;Barryvdh \时髦\外墙\ SnappyImage::类,
3,生成配置文件
php工匠供应商:发布——提供者=癇arryvdh \时髦\ ServiceProvider"
注意:配置文件夹中的时髦。php就是其配置文件、二进制指向的就是上面安装的wkhtml相关路径。
引用><强>使用强>
<强> PDF 强>
//一,下载 $ pdf=\ pdf::未经(& # 39;欢迎# 39;元数据); 返回pdf→美元下载(& # 39;welcome.pdf& # 39;);//二,渲染页面,在浏览器中显示 html=$ & # 39; & lt; html> & lt; head> & lt;元charset=皍tf-8"祝辞& lt;/head> & lt; h2>订单id & lt; h3> 12346546 & lt;/h3> & lt;/html> & # 39;; 美元$ pdf=\ pdf:: loadHTML (html); 返回pdf→美元内联();<强>图片强>
//一,下载 $ img=\ SnappyImage::未经(& # 39;欢迎# 39;元数据); 返回$ img→下载(& # 39;welcome.png& # 39;);//二,渲染页面,在浏览器中显示 html=$ & # 39; & lt; html> & lt; head> & lt;元charset=皍tf-8"祝辞& lt;/head> & lt; h2>订单id & lt; h3> 12346546 & lt;/h3> & lt;/html> & # 39;; 美元$ img=\ SnappyImage:: loadHTML (html); 返回$ img→内联();<强>踩坑记录强>
一,当执行生成时若提示<代码> libXrender 代码>或<代码> libssl> 代码库不存在需要安装相对应库
//apt-get安装方法 apt-get安装libXrender * apt-get安装libssl *//百胜安装方法 yum安装libXrender * yum安装libssl *//若百胜安装时最后报错错误:GPG检查失败 yum安装libXrender *——nogpgcheck yum安装libssl *——nogpgcheck二、中文显示乱码问题,这个问题需要在Linux中安装中文字体即可解决
查看系统字体
在开始安装之前,我们先查看系统中已经安装的字体,要查看系统中已经安装的字体,我们可以使用<代码> fc-list 代码>命令进行查看,如果系统中没有该命令的话,我们需要先安装相关的软件包。
在centos上,使用如下命令进行安装:yum安装- y fontconfig mkfontscale安装完毕后,我们可以来查看系统中已经安装的字体
# fc-list root@8d079be5059a php/usr/share/fonts/urw-base35/NimbusMonoPS-Italic。传递:灵气Mono PS:风格=斜体/usr/share/fonts/urw-base35/D050000L.t1: D050000L:风格=定期 …如果要查看系统中已经安装的中文字体,我们可以使用如下命令
(root@8d079be5059a php) # fc-list: lang=zh型Laravel使用laravel-snappy包实现HTML转PDF和PNG的方法