Laravel9 使用 barryvdh/laravel-dompdf 创建 PDF 文件

作者: 温新

分类: 【Laravel】

阅读: 2654

时间: 2022-09-05 15:22:13

hi,我是温新,一名PHPer

本篇文章将学习怎么在 Laravel9 中使用 barryvdh/laravel-dompdf 来创建 pdf 文件。

第一步:安装 Laravel9 项目

composer create-project laravel/laravel la9study

第二步:配置数据库连接

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=la9study
DB_USERNAME=la9study
DB_PASSWORD=123456

第三步:填充数据

第一步:执行迁移文件

php artisan migrate

第二步:填充数据

php artisan tinker
User::factory()->count(100)->create()

第四步:安装 DomPDF 包

composer require barryvdh/laravel-dompdf

第五步:添加路由

<?php
// routes/web.php
use Illuminate\Support\Facades\Route;

Route::get('pdf', [\App\Http\Controllers\Test\PdfController::class, 'index']);

第六步:编写控制器方法

创建控制器

php artisan make:controller Test/PdfController

编写控制器方法

<?php

namespace App\Http\Controllers\Test;

use App\Http\Controllers\Controller;
use App\Models\User;
use Barryvdh\DomPDF\Facade\Pdf;

class PdfController extends Controller
{
    public function index()
    {
        $users = User::query()->where('id', '<', 10)->get();
        $data = [
            'title' =>  'Laravel9 创建 PDF 文件',
            'date'  =>  date('Y-m-d'),
            'users' =>  $users,
        ];

        // 创建 pdf 模板文件
        $pdf = Pdf::loadView('test.pdf.mypdf', $data);
        // 下载 pdf 文件
        return $pdf->download('users.pdf');
    }
}

第七步:创建模板文件

// views/test/pdf/mypdf.blade.php
<!DOCTYPE html>
<html>
<head>
    <title>Laravel 9 Create PDF File</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-p1KAotb3W9ndluCsqePPYnjRm3c6abdnIjo0tQwYUv83VsbsYd43RuofnFAaDo0E" crossorigin="anonymous">
<body>
    <h1>{{ $title }}</h1>
    <p>{{ $date }}</p>
    <p>Laravel9 Crate PDF FILE</p>

    <table class="table">
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
        </tr>
        @foreach($users as $user)
            <tr>
                <td>{{ $user->id }}</td>
                <td>{{ $user->name }}</td>
                <td>{{ $user->email }}</td>
            </tr>
        @endforeach
    </table>
</body>
</html>

到这里,代码部分的功能就已经完成了,接下来就访问 URL 来下载 pdf 文件吧。

请登录后再评论