📅  最后修改于: 2023-12-03 15:17:12.883000             🧑  作者: Mango
本文将介绍如何在 Laravel 中使用 PHP 生成和导出 PDF 文件。我们将使用 Laravel PDF 扩展包来实现这一功能。
要使用 Laravel PDF,首先需要通过 Composer 安装相关依赖:
composer require barryvdh/laravel-dompdf
安装完成后,Laravel 会自动加载 Laravel PDF 扩展包。
Laravel PDF 的默认配置已经适用于大多数情况,但你可以根据自己的需求进行自定义配置。
首先,需要发布配置文件。运行以下命令:
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
这将在 config
文件夹中创建一个名为 dompdf.php
的文件。你可以在此文件中更改一些默认设置。
Laravel PDF 提供了一个简单的 PDF
门面来生成 PDF 文件。你可以在控制器、路由或其他地方使用该门面。
首先,要使用 PDF
门面,需要在文件顶部导入命名空间:
use PDF;
然后,在你的代码中使用 PDF
门面实例来生成 PDF 文件:
$pdf = PDF::loadView('pdf.document', $data);
loadView
方法接受两个参数。第一个参数是视图的名称,第二个参数(可选)是传递给视图的数据。
要导出 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');
Laravel PDF 允许你在视图中使用样式,并根据需要添加自定义 CSS。
你可以在视图中使用 HTML、CSS 和 JavaScript,就像在常规的 Blade 视图中一样。
<style>
body {
background: #f2f2f2;
font-family: Arial, sans-serif;
}
</style>
Laravel PDF 允许你向 PDF 文档添加自定义的页眉和页脚。
要添加页眉,你可以在视图中使用以下代码:
<div class="header">
<h1>Page Header</h1>
</div>
要添加页脚,可以使用以下代码:
<div class="footer">
<p>Page Footer</p>
</div>
在 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);
如果你想将数据表导出为 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
如果你想在服务器上生成和缓存 PDF 文件,而不是每次请求时都重新生成文件,可以使用 save
方法。
$pdf->save(public_path('documents/document.pdf'));
然后,你可以将文件链接发送给用户进行下载。
return response()->download(public_path('documents/document.pdf'));
通过 Laravel PDF,我们可以很方便地在 Laravel 应用程序中生成和导出 PDF 文件。本文介绍了安装、配置和使用 Laravel PDF 的基本用法,以及如何导出 HTML、自定义 PDF 样式、添加页眉和页脚,以及导出数据表。希望本文对你有所帮助!