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参考地址:

经验分享 程序员 微信小程序 职场和发展