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

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

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

下面由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.x64位:$ 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 Failedyum install libXrender* --nogpgcheckyum 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

将 simfang.ttf 字体远程复制或者以其他方式放到服务器的字体目录中

//远程复制scp simfang.ttf root@ip:/usr/share/Fonts

然后建立字体索引信息,更新字体缓存

cd /usr/share/Fonts/mkFontscalemkFontdirfc-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全部内容,希望文章能够帮你解决Laravel如何使用laravel-snappy包实现HTML转PDF和PNG所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/1227731.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存