📜  laravel pdf 导出 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:12.883000             🧑  作者: Mango

Laravel PDF 导出 - PHP

简介

本文将介绍如何在 Laravel 中使用 PHP 生成和导出 PDF 文件。我们将使用 Laravel PDF 扩展包来实现这一功能。

目录
  1. 安装 Laravel PDF
  2. 配置 Laravel PDF
  3. 基本用法
  4. 导出 HTML 页面为 PDF
  5. 自定义 PDF 样式
  6. 添加页眉和页脚
  7. 导出模板和变量
  8. 导出数据表为 PDF
  9. 设置缓存和下载文件
  10. 总结
1. 安装 Laravel PDF

要使用 Laravel PDF,首先需要通过 Composer 安装相关依赖:

composer require barryvdh/laravel-dompdf

安装完成后,Laravel 会自动加载 Laravel PDF 扩展包。

2. 配置 Laravel PDF

Laravel PDF 的默认配置已经适用于大多数情况,但你可以根据自己的需求进行自定义配置。

首先,需要发布配置文件。运行以下命令:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

这将在 config 文件夹中创建一个名为 dompdf.php 的文件。你可以在此文件中更改一些默认设置。

3. 基本用法

Laravel PDF 提供了一个简单的 PDF 门面来生成 PDF 文件。你可以在控制器、路由或其他地方使用该门面。

首先,要使用 PDF 门面,需要在文件顶部导入命名空间:

use PDF;

然后,在你的代码中使用 PDF 门面实例来生成 PDF 文件:

$pdf = PDF::loadView('pdf.document', $data);

loadView 方法接受两个参数。第一个参数是视图的名称,第二个参数(可选)是传递给视图的数据。

4. 导出 HTML 页面为 PDF

要导出 HTML 页面为 PDF 文件,我们需要创建一个视图,然后使用 loadView 方法加载该视图。

假设我们有一个名为 document.blade.php 的视图,它包含要导出的 HTML 内容。

$pdf = PDF::loadView('pdf.document');

然后,可以使用 download 方法将 PDF 文件直接下载到客户端:

return $pdf->download('document.pdf');

或者,你可以使用 stream 方法在浏览器中显示 PDF 文件:

return $pdf->stream('document.pdf');
5. 自定义 PDF 样式

Laravel PDF 允许你在视图中使用样式,并根据需要添加自定义 CSS。

你可以在视图中使用 HTML、CSS 和 JavaScript,就像在常规的 Blade 视图中一样。

<style>
    body {
        background: #f2f2f2;
        font-family: Arial, sans-serif;
    }
</style>
6. 添加页眉和页脚

Laravel PDF 允许你向 PDF 文档添加自定义的页眉和页脚。

要添加页眉,你可以在视图中使用以下代码:

<div class="header">
    <h1>Page Header</h1>
</div>

要添加页脚,可以使用以下代码:

<div class="footer">
    <p>Page Footer</p>
</div>
7. 导出模板和变量

在 Laravel PDF 中,你可以使用和传递变量到视图,就像在常规的 Blade 视图中一样。

假设你有一个名为 document.blade.php 的视图,其中包含一些动态变量:

$data = [
    'title' => 'My Document',
    'content' => 'This is the content of my document.',
];

然后,可以通过将数据传递给 loadView 方法来渲染视图:

$pdf = PDF::loadView('pdf.document', $data);
8. 导出数据表为 PDF

如果你想将数据表导出为 PDF,你可以使用 Laravel 的查询构建器或模型来检索数据,并将其传递给视图。

$tableData = DB::table('users')->get();
$data = [
    'tableData' => $tableData,
];
$pdf = PDF::loadView('pdf.table', $data);

在视图中,你可以使用 Blade 的循环语法来遍历数据表并将其显示为 PDF:

@foreach($tableData as $row)
    <tr>
        <td>{{ $row->id }}</td>
        <td>{{ $row->name }}</td>
        <td>{{ $row->email }}</td>
    </tr>
@endforeach
9. 设置缓存和下载文件

如果你想在服务器上生成和缓存 PDF 文件,而不是每次请求时都重新生成文件,可以使用 save 方法。

$pdf->save(public_path('documents/document.pdf'));

然后,你可以将文件链接发送给用户进行下载。

return response()->download(public_path('documents/document.pdf'));
10. 总结

通过 Laravel PDF,我们可以很方便地在 Laravel 应用程序中生成和导出 PDF 文件。本文介绍了安装、配置和使用 Laravel PDF 的基本用法,以及如何导出 HTML、自定义 PDF 样式、添加页眉和页脚,以及导出数据表。希望本文对你有所帮助!