laravel 使用snappy生成pdf文件或生成图片

时间:2021-12-19 11:52:00

今天就来说说laravel 上如何使用snappy这个扩展包,网上的资料呢,也是不多,laravel框架对于我来说也不熟,入门新手,在使用中也是出错了蛮多的,现在与大家分享一下。

首先我们先去github上下载扩展包 snayyp扩展包https://github.com/barryvdh/laravel-snappy#wkhtmltopdf-installation

因为snappy这个扩展包是需要wkhtmltopdfwkhtmltoimage支持所以我们去下载所依赖的软件,下载地址http://download.gna.org/wkhtmltopdf/obsolete/ 这里有linux和windows系统对应版本的,应该能满足大家的需要。


windows安装wkhtmltopdf/wkhtmltoimage

windows这里可以直接下载安装。 我的安装路径为C:\Program Files\wkhtmltopdf ,供大家参考


linux安装 wkhtmltopdf/wkhtmltoimage

一、安装wkhtmltopdf

1、下载wkhtmltopdf

wget http://download.gna.org/wkhtmltopdf/obsolete/linux/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2   2、解压压缩包
tar jxvf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2
3、重命名文件夹,移动文件夹
mv wkhtmltopdf-amd64 wkhtmltopdf
mv wkhtmltopdf /usr/local/bin 统一移动到这个目录
  4、测试是否安装成功 wkhtmltopdf http://www.baidu.com /home/wwwroot/baidu.pdf
可能到测试这一步相信大家可能遇到错误了,不要着急有解决办法 laravel 使用snappy生成pdf文件或生成图片
解决办法运行命令yum install libXrender libXext fontconfig安装完成后再次进行测试发现不再报错 

二、安装wkhtmltoimage

1、下载wkhtmltoimage

wget http://download.gna.org/wkhtmltopdf/obsolete/linux/wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2 2、解压压缩包
tar jxvf wkhtmltoimage-0.10.0_rc2-static-amd64.tar.bz2
3、重命名文件夹,移动文件夹
mv wkhtmltoimage-amd64 wkhtmltopdf
mv wkhtmltoimage /usr/local/bin/ 统一移动到这个目录
 4、测试是否安装成功wkhtmltoimage http://www.baidu.com /home/wwwroot/baidu.image

下面说回laravel里使用snappy上面做好的准备工作呢还没完,继续我们的snappy扩展包的安装。1.运行命令composer require barryvdh/laravel-snappy进行安装2.找到config/app.php文件
'providers' => [
Barryvdh\Snappy\ServiceProvider::class,
],
'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生成配置文件配置如下:
return array(


'pdf' => array(
'enabled' => true,
'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
//这里作为widows系统snappy所安装的依赖软件wkhtmltopdf路径
//        'binary'  => '/usr/local/bin/wkhtmltopdf',
//这里作为linux系统所安装的依赖软件wkhtmltopdf路径
        'timeout' => false,
'options' => array(),
'env' => array(),
),
'image' => array(
'enabled' => true,
'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage"',
    //这里作为linux系统snappy所安装的依赖软件wkhtmltopdf路径
// 'binary' => '/usr/local/bin/wkhtmltoimage',
    //这里作为linux系统所安装的依赖软件wkhtmltoimage路径
'timeout' => false, 'options' => array(), 'env' => array(), ),);

配置完成后就可以使用我们的snappy了
use PDF;
use SnappyImage;
//html生成pdf文件
$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');
//html生成图片
$pdf = SnappyImage::loadView('pdf.invoice', $data);
return $pdf->download('invoice.image');

导出的中英文乱码,原因是没有字体

找了windows里的宋体,最好不要用微软雅黑

上传到服务器/usr/share/fonts/里



以上就是我在使用中所遇到的问题,希望能帮助各位朋友与大家一起分享!