laravel6.*实现html转PDF导出下载(barryvdh/laravel-dompdf)
本教程意在解决laravel6以上版本按照laravel-dompdf官方文档无法实现pdf导出成功的问题。
laravel转pdf,laravel实现html转pdf,laravel生成pdf
安装
使用composer进行安装
composer require barryvdh/laravel-dompdf
配置
在config/app.php的providers数组中注册laravel-dompdf的服务提供者
providers => [ .... BarryvdhDomPDFServiceProvider::class, ],
在config/app.php的aliases数组中注册laravel-dompdf的门面
aliases => [ .... PDF => BarryvdhDomPDFFacade::class, ],
关键配置
这一步的配置是区别于laravel5.*的,所以在laravel6以上版本使用laravel-dompdf的要特别注意
在bootstrap/app.php中添加如下代码进行服务绑定
... $app->singleton(BarryvdhDomPDFServiceProvider::class); return $app;
资源发布
使用如下命令发布laravel-dompdf资源,会在config目录下产生一个配置文件如图
php artisan vendor:publish --provider="BarryvdhDomPDFServiceProvider"
使用
注册路由
Route::get(/test_report_download, TestController@reportDownload);
在相应控制器方法中实现转换下载
-
loadView方法与laravel的视图渲染方法完全一致,第一个参数为视图模板,第二个参数为传递到视图中的数据 视图模板中尽量不要使用flex进行布局,否则页面效果可能会没那么好 推荐使用table布局,这样下载下来的报告更加美观,样式直接使用css进行控制就好
<?php use PDF; class TestController{ public function reportDownload () { $testReport = ["one"=>1, "two"=>2]; $pdf = PDF::loadView("fs.test_pdf_report", ["data"=>$testReport]); return $pdf->download("测试报告".date("YmdHis").".pdf"); } }
视图模板resources/fs/test_pdf_report.blade.php
<h3>测试报告</h3> <table> <tr> <td>{ {$data[one]}}</td> <td>{ {$data[two]}}</td> </tr> </table>
中文乱码解决方案
-
解决方案: load_font.php下载地址: 字体下载(宋体):
参考
项目地址:
6.0参考地址: