Laravel如何使用laravel-snappy包实现HTML转PDF和PNG

互联网 20-10-14

下面由Laravel教程栏目给大家Laravel使用laravel-snappy包实现HTML转PDF和PNG ,希望对需要的朋友有所帮助!

前言

由于公司要开发一个新的工具叫做云合同,可以预设好几套固定的合同模板(html页面),使用参数填充方式将合同内的数据灵活变化,然后生成 PDF 和 PNG查阅一番我们发现了 laravel-snappy 这个包,底层使用的是 wkhtmltopdfwkhtmltopdf 是构建于 QT Webkit 之上,而 QT Webkit 又是基于 Webkit 的,跟我们的浏览器一样的渲染引擎。

安装

1、先查看系统是 32 位的还是 64 位的

uname -a

2、通过 composer 安装 wkhtmltopdf

32位: $ composer require h4cc / wkhtmltopdf-i386 0.12.x $ composer require h4cc / wkhtmltoimage-i386 0.12.x 64位: $ composer require h4cc/wkhtmltopdf-amd64 0.12.x $ composer require h4cc/wkhtmltoimage-amd64 0.12.x

3、接下来将安装好的 wkhtmltopdf 复制到 Linux 系统可执行命令的目录中

cp vendor/h4cc/wkhtmltoimage-amd64/bin/wkhtmltoimage-amd64 /usr/local/bin/ cp vendor/h4cc/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 包

composer require barryvdh/laravel-snappy

配置

1、将 ServiceProvider 添加到 config/app.php 中的 providers 数组中

Barryvdh\Snappy\ServiceProvider::class,

2、将 Facades 添加到 config/app.php 中的 aliases 数组中

'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class, 'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,

3、生成配置文件

php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"

注意:config 文件夹中的 snappy.php 就是其配置文件,binary 指向的就是上面安装的 wkhtml 相关路径.

使用

PDF

//一、下载 $pdf = \PDF::loadView('welcome', $data); return $pdf->download('welcome.pdf');  //二、渲染页面,在浏览器中显示 $html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; $pdf = \PDF::loadHTML($html); return $pdf->inline();

Image

//一、下载 $img = \SnappyImage::loadView('welcome', $data); return $img->download('welcome.png');  //二、渲染页面,在浏览器中显示 $html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>'; $img = \SnappyImage::loadHTML($html); return $img->inline();

踩坑记录

一、当执行生成时若提示 libXrenderlibssl 库不存在需要安装相对应库

//apt-get 安装方法 apt-get install libXrender* apt-get install libssl*  //yum 安装方法 yum install libXrender* yum install libssl*  //若 yum 安装时最后报错 Error: GPG check FAILED yum install libXrender* --nogpgcheck yum install libssl* --nogpgcheck

二、中文显示乱码问题,这个问题需要在 Linux 中安装中文字体即可解决

查看系统字体在开始安装之前,我们先查看系统中已经安装的字体,要查看系统中已经安装的字体,我们可以使用 fc-list 命令进行查看,如果系统中没有该命令的话,我们需要先安装相关的软件包。在 centos 上,使用如下命令进行安装:

yum install -y fontconfig mkfontscale

安装完毕后,我们可以来查看系统中已经安装的字体

[root@8d079be5059a php]# fc-list /usr/share/fonts/urw-base35/NimbusMonoPS-Italic.otf: Nimbus Mono PS:style=Italic /usr/share/fonts/urw-base35/D050000L.t1: D050000L:style=Regular ...

如果要查看系统中已经安装的中文字体,我们可以使用如下命令

[root@8d079be5059a php]# fc-list :lang=zh

通过上图我们可以看到系统中是没有中文字体的

我们进入 Windows 的 字体目录

C:\Windows\Fonts
//远程复制 scp simfang.ttf root@ip:/usr/share/fonts
cd /usr/share/fonts/mkfontscale mkfontdir fc-cache

至此,字体已经安装完毕。现在我们再来查看中文字体,是否安装成功

[root@8d079be5059a php]# fc-list :lang=zh /usr/share/fonts/simfang.ttf: FangSong,仿宋:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta

以上就是Laravel如何使用laravel-snappy包实现HTML转PDF和PNG的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: laravel
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Sight!一个杀手级提升Laravel开发速度的组件现在开源了!

相关资讯