热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Laravel使用laravelsnappy包实现HTML转PDF和PNG

前言由于公司要开发一个新的工具叫做云合同,可以预设好几套固定的合同模板(html页面),使用参数填充方式将合同内的数据灵活变化,然后生成PDF和PNG查阅一番我们发现了larave






前言

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


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 = \PDF::loadView('welcome', $data);
return $pdf->download('welcome.pdf');
//二、渲染页面,在浏览器中显示
$html = '

订单id

12346546

';
$pdf = \PDF::loadHTML($html);
return $pdf->inline();
//三、渲染页面,在浏览器中显示,并且保存到本地
$html = '

订单id

12346546

'
;
return \PDF::loadHTML($html)->save("wkhtmltopdf.pdf")->inline("wkhtmltopdf.pdf");

Image

//一、下载
$img = \SnappyImage::loadView('welcome', $data);
return $img->download('welcome.png');
//二、渲染页面,在浏览器中显示
$html = '

订单id

12346546

';
$img = \SnappyImage::loadHTML($html);
return $img->inline();
//三、渲染页面,在浏览器中显示,并且保存到本地
$html = '

订单id

12346546

'
;
return \SnappyImage::loadHTML($html)->save("wkhtmltoimage.png")->inline("wkhtmltoimage.png");

更换字体

我们生成的 html 如果要更换字体,首先要保证服务器中有该字体,参照下方的踩坑记录中安装字体一节,然后在 html 中用 css 写入 font-family 样式


font-family 的值就是字体的英文名字



生成 pdfimage 时可选的 option 参数

这些参数在网上找不到最全的讲解,但是源码中肯定是最全的,在 knplabs/knp-snappy 包中有 imagepdf 更详细的参数讲解
Laravel 使用  laravel-snappy 包 实现 HTML 转 PDF 和 PNG


使用 wkhtmltoimage 时,默认生成的图片都很模糊,如何调整图片的清晰度

引用该博文

wkhtmltoimage
--disable-smart-width \
--zoom 3.125 \
--width 3125 \
<input-url> \
<output-file>

踩坑记录

一、当执行生成时若提示 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

Laravel 使用  laravel-snappy 包 实现 HTML 转 PDF 和 PNG
如果报这个错

apt-get install fontconfig

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

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 导出中文乱码问题




推荐阅读
  • 目录爬虫06scrapy框架1.scrapy概述安装2.基本使用3.全栈数据的爬取4.五大核心组件对象5.适当提升scrapy爬取数据的效率6.请求传参爬虫06scrapy框架1. ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • syncd是一款开源的代码部署工具,它具有简单、高效、易用等特点,可以提高团队的工作效率. ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • HyperledgerComposer环境安装1.安装基本软件包**如果使用Linux安装HyperledgerComposer,请注意以下建议:以 ... [详细]
  • php composer 安装,phpstudy  composer 使用安装
    本人是windows系统phpstudy是最新2018版本以安装laravel框架为例子一如图一,点击phpComposer出现系统指令框,根据指令框路 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 为什么三角形与菜单背景的颜色不同? - Why is the triangle a different colour shade to the menu background?
    Imnotunderstandingastowhythetrianglewhichappearswhenthemousehoversoverthemenuitem, ... [详细]
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
author-avatar
克乄浪木守
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有