编程

[Laravel 扩展包]在 Laravel 中使用 Blade 视图生成 PDF

796 2024-02-02 00:59:00

由 Spatie 提供的 Laravel PDF 包,提供了一个在 Laravel 中创建 PDF 的简单方式。它使用 Blade 视图渲染 HTML 并且使用 Browsershot 从视图中创建 PDF。这使其可以使用现代 CSS 工具(如 Grid、Flexbox)、现代 CSS 框架(如 Tailwind),甚至可以使用 JavaScript 代码(比如渲染图表)

以下是创建 PDF 的基础示例并从控制器返回该 PDF,它传递变量给模板使之可以动态渲染 PDF 数据:

use Spatie\LaravelPdf\Facades\Pdf;
 
class DownloadInvoiceController
{
    public function __invoke(Invoice $invoice)
    {
        return Pdf::view('pdfs.invoice', ['invoice' => $invoice])
            ->format('a4')
            ->name('your-invoice.pdf');
    }
}

发布时,该 Laravel PDF 包支持以下特性:

  • 使用 Blade 模板或者 HTML 字符串渲染 PDF
  • 将生成的 PDF 保存到 Laravel 磁盘中
  • 在生成 PDF 时运行 JavaScript 
  • 使用强大的断言进行 PDF 测试伪装
  • 通过 Laravel Sidecart 在 Lambda 上生成 PDF
  • 使用分页符、Browsershot 自定义等工具进行高级 PDF 控制
  • 等等...

使用 Blade 在 Laravel 中创建 PDF 将使生成优美的自定义 PDF 比以往任何时候都更容易、更强大!要开始,请查看官方的 Laravel PDF 文档。GitHub 上源码请查阅 spatie/laravel-pdf