本文介绍了如何使用 Laravel MPDF 扩展包生成包含多个 Blade 视图的 PDF 文件。通过循环遍历视图,将每个视图的内容添加到 PDF 的新页面,从而实现多页 PDF 的生成。该方法提供了一种灵活的方式,可以根据需要动态地添加任意数量的页面。
在使用 Laravel MPDF 生成 PDF 时,有时我们需要将多个 Blade 视图合并到一个 PDF 文件中,每个视图作为 PDF 的一个页面。Laravel MPDF 默认只支持从单个视图生成 PDF。本文提供了一种解决方案,通过循环遍历多个视图,并将它们的内容添加到同一个 PDF 实例中,从而实现多页 PDF 的生成。
实现方法
以下代码展示了如何使用 Laravel MPDF 加载多个 Blade 视图并生成 PDF 文件:
use PDF;
class ReportController extends Controller
{
public function generate_pdf()
{
// 定义模板数据
$data = ['foo' => 'bar'];
// 定义所有视图(每个视图对应一个页面)
$pdfPages = [
'pdf.page1',
'pdf.page2',
'pdf.page3'
];
$pdf = null;
// 循环遍历所有视图
foreach ($pdfPages as $view) {
// 如果 PDF 实例尚未定义,则创建第一个页面
if (is_null($pdf)) {
$pdf = PDF::loadView($view, $data);
continue;
}
// 添加新页面,并将视图的 HTML 内容写入该页面
$pdf->getMpdf()->AddPage();
$pdf->getMpdf()->WriteHTML((string)view($view, $data));
}
return $pdf->stream('document.pdf');
}
}代码解释
data)) 将当前视图的 HTML 内容写入该页面。view($view, $data) 函数渲染 Blade 视图,并将其转换为字符串。注意事项
总结
通过循环遍历多个 Blade 视图,并将它们的内容添加到同一个 PDF 实例中,我们可以轻松地生成包含多个页面的 PDF 文件。这种方法灵活且易于实现,可以满足各种 PDF 生成需求。本文提供的示例代码可以作为基础,根据实际情况进行修改和扩展。