您现在的位置是:首页 > 经验记录>日常笔记>Laravel 使用 laravel-snappy 包 实现 HTML 转 PDF 和 PNG 网站首页 日常笔记
Laravel 使用 laravel-snappy 包 实现 HTML 转 PDF 和 PNG
Centos7 安装 wkhtmltopdf
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
Centos8 安装 wkhtmltopdf
1、官网地址
https://wkhtmltopdf.org/downloads.html
2、下载
wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox-0.12.5-1.centos8.x86_64.rpm
3、安装
[root@blog source]# rpm -ivh wkhtmltox-0.12.5-1.centos8.x86_64.rpm
error: Failed dependencies:
xorg-x11-fonts-75dpi is needed by wkhtmltox-1:0.12.5-1.centos8.x86_64
xorg-x11-fonts-Type1 is needed by wkhtmltox-1:0.12.5-1.centos8.x86_64
报错了,先把有依赖的两个包安装好
[root@blog source]# dnf install xorg-x11-fonts-75dpi
[root@blog source]# dnf install xorg-x11-fonts-Type1
//若 dnf 安装时最后报错 Error: GPG check FAILED
dnf install xorg-x11-fonts-75dpi --nogpgcheck
dnf install xorg-x11-fonts-Type1 --nogpgcheck
再次安装就 OK 了
[root@blog source]# rpm -ivh wkhtmltox-0.12.5-1.centos8.x86_64.rpm
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:wkhtmltox-1:0.12.5-1.centos8 ################################# [100%]
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::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();
//三、渲染页面,在浏览器中显示,并且保存到本地
$html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>';
return \PDF::loadHTML($html)->save("wkhtmltopdf.pdf")->inline("wkhtmltopdf.pdf");
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();
//三、渲染页面,在浏览器中显示,并且保存到本地
$html = '<html><head><meta charset="utf-8"></head><h1>订单id</h1><h2>12346546</h2></html>';
return \SnappyImage::loadHTML($html)->save("wkhtmltoimage.png")->inline("wkhtmltoimage.png");
更换字体
我们生成的 html 如果要更换字体,首先要保证服务器中有该字体,参照下方的踩坑记录中安装字体一节,然后在 html 中用 css 写入 font-family 样式
font-family 的值就是字体的英文名字
生成 pdf 及 image 时可选的 option 参数
这些参数在网上找不到最全的讲解,但是源码中肯定是最全的,在 knplabs/knp-snappy 包中有 image 和 pdf 更详细的参数讲解
使用 wkhtmltoimage 时,默认生成的图片都很模糊,如何调整图片的清晰度
引用该博文
wkhtmltoimage
--disable-smart-width \
--zoom 3.125 \
--width 3125 \
<input-url> \
<output-file>
踩坑记录
一、当执行生成时若提示 libXrender 或 libssl 库不存在需要安装相对应库
//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
如果报这个错
apt-get install fontconfig
apt-get install libXext*
二、中文显示乱码问题,这个问题需要在 Linux 中安装中文字体即可解决
三、Centos7.6 的安装方式可以直接通过 composer,而 Centos8 需要 0.12.5 版本的 wkhtmltopdf,并且安装方式为 rpm,这个需要注意下
结尾
以上内容是在互联网上各平台汇总之后的内容,下面的是遇到问题解决后的各个链接
这个只能生成 pdf,已经走通
github.com/barryvdh/laravel-dompdf
blog.csdn.net/hwhsong/article/deta...
//pdf 和 image 都能生成,用的 wkhtmltopdf
博客:PDF 扩展包使用
博客:Laravel HTML 导出 PDF 方案 ----- wkhtmltopdf Laravel-snappy
使用 wkhtmltopdf 生成出来乱码,是因为服务器中没装中文字体
www.cnblogs.com/huangyanqi/p/10609...
在公司测试服务器的 lnmp_php 容器中使用 yum install 安装包报错 Error: GPG heck FAILED
blog.csdn.net/qq_41919792/article/...
安装之后,执行操作,若提示 “wkhtmltopdf: cannot connect to X server” 错误
www.023dns.com/server_ECS/2190.html
无法解析 SSLv3_client_method / SSLv3_server_method
问答:Laravel-snappy 在服务器执行的时候报如下错误,本地正常,求解?
github.com/wkhtmltopdf/wkhtmltopdf...
Centos8 使用 wkhtmltopdf
www.cnblogs.com/architectforest/p/...
讨论 dompdf 和 wkhtmltopdf
问答:关于 DomPDF 导出中文乱码问题
————————————————
原文作者:邢闯洋
转自链接:https://learnku.com/articles/50557
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
实践代码:
(Order ) { ()[] [] (){//该处为本地文件夹创建,可自己实现 ((UploadFile())()){} } (())()(()) () () () () () () () (([])) (([]))[]}
随机推荐
- 如何在ubuntu上安装多个版本的php?并顺畅切换使用[其它系统类似原理]
- mqtt服务器(emqx)如何在页面使用webSocket连接?(可带用户名密码认证)
- PHP获取项目所有控制器方法名称
- Git忽略规则和.gitignore规则不生效的解决办法
- ubuntu apache2 ssl配置
- 在 Laravel 中使用 基于Workerman 的Gateway-worker进行 socket 长连接通讯
- ceph-对象存储服务搭建
- 基于laravel6.2+laravel-permission扩展搭建的后台权限系统
- windows phpStudy ThinkPHP 5.1 Workerman 快速上手指南
- 自己的服务器(本地物理或者云服务器),可以搭建哪些方便自己使用、有意思的服务呢?