关于 PDF 的扩展包有很多,此次选择的是 DOMPDF,下面是具体操做。代码可查看 GitHub。php
依然使用 composer 安装,根据文档进行便可html
composer require barryvdh/laravel-dompdf
config/app.php
中添加 Barryvdh\DomPDF\ServiceProvider::class,
,以下config/app.php
中添加 'PDF' => Barryvdh\DomPDF\Facade::class,
,以下config
目录下生成配置文件,执行 php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
,成功后可查看 config/dompdf.php
配置文件。根据本身的需求进行修改,也支持动态修改。定义好路由以后,新建控制器进行测试。根据官方文档,能够使用 App::make('dompdf.wrapper')
或者 PDF
门面进行实例化,效果是同样的,使用门面注意 use PDF
。laravel
使用文档中的第一个示例git
$pdf = App::make('dompdf.wrapper'); $pdf->loadHTML('<h1>Test</h1>');// 根据 HTML 代码生成 PDF return $pdf->stream();
效果以下github
再来试下文档中的第二个示例web
$pdf = PDF::loadView('pdf', ['date' => date('Y-m-d')]);// 根据视图文件生成 PDF return $pdf->download('date.pdf');// 参数为文件名
打开连接后,能够下载名为 date.pdf
的文件,内容以下app
以上使用了 loadHTML()
和 loadView()
两种方法,分别是根据 HTML 代码和视图生成。使用 loadFile()
来试下composer
$file = storage_path('app/public/pdf/name.html'); $pdf = PDF::loadFile($file); return $pdf->stream();
也能够链式调用多个方法,下面的代码是根据视图生成 PDF,而后保存到指定路径,最后在进行展现dom
return PDF::loadView('pdf', ['date' => date('Y-m-d')])->save(storage_path('app/public/pdf/date.pdf'))->stream('date.pdf');
参考资料:DOMPDF。ide