您现在的位置是:网站首页 > PHP

wamp环境使用laravel-snappy自动生成PDF文件

卖时光的老头2019-05-30694人围观

因项目需求,研究了一下Laravel框架自动生成,用的是laravel-snappy,觉得方便好用,所以发个博客做备忘;


1、laravel-snappy扩展包需要Wkhtmltopdff的支持,所以先安装Wkhtmltopdf ; 

      wkhtmltopdf 下载地址: http://www.softpedia.com/get/Office-tools/PDF/wkhtmltopdf.shtml

      百度网盘:https://pan.baidu.com/s/1vIu34896OkwrKU0ByPjRjA      提取码: eje5 

      下载完直接安装,注意安装到你知道的地方,这个路径后面有用。


2、安装laravel-snappy扩展包

composer require barryvdh/laravel-snappy


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

Barryvdh\Snappy\ServiceProvider::class,


4、添加facade到config / app.php中的aliases数组中 

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


5、生成配置文件 

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

此命令会在config/snappy.php生成配置文件,具体配置如下:

return array(

'pdf' => array(
'enabled' => true,

        //windows路径一定要加双引号,部署服务器会出错

'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf"',
'timeout' => false,
'options' => array(),
'env' => array(),
),
'image' => array(
'enabled' => true,

        //windows路径一定要加双引号,部署服务器会出错

'binary' => '"C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage"',
'timeout' => false,
'options' => array(),
'env' => array(),
),

);


 5、使用 

use PDF;
use SnappyImage;

可以使用门面(facade)加载HTML字符串、文件或者视图,然后使用stream()方法显示在浏览器中、save()方法保存到文件或者download()方法下载。 

$pdf = PDF::loadView('pdf.invoice', $data);
return $pdf->download('invoice.pdf');

也可以链式操作 

return PDF::loadFile(public_path().'/myfile.html')
                                ->save('/path-to/my_stored_file.pdf')
                                ->stream('download.pdf');

可以更改方向(landscape将方向设为横向,一般使用的都是竖向的,使用时注意一下)和纸张大小,并隐藏或显示错误(默认情况下,调试打开时显示错误) 

PDF::loadHTML($html)
                ->setPaper('a4', 'landscape')
                ->setWarnings(false)
                ->save('myfile.pdf')
生成图片
$pdf = SnappyImage::loadView('pdf.invoice', $data);
return $pdf->download('invoice.image');


声明: 本文为原创文章,转载请注明出处!

感谢支持