Laravel MPDF 加载多个视图生成 PDF

霞舞
发布: 2025-11-18 12:50:02
原创
903人浏览过

laravel mpdf 加载多个视图生成 pdf

本文介绍了如何使用 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');
    }
}
登录后复制

代码解释

Q.AI视频生成工具
Q.AI视频生成工具

支持一分钟生成专业级短视频,多种生成方式,AI视频脚本,在线云编辑,画面自由替换,热门配音媲美真人音色,更多强大功能尽在QAI

Q.AI视频生成工具 73
查看详情 Q.AI视频生成工具
  1. 定义数据: $data 数组包含了传递给 Blade 视图的数据。
  2. 定义视图列表: $pdfPages 数组包含了所有需要添加到 PDF 的视图的名称。每个视图对应 PDF 的一个页面。
  3. 循环遍历视图: foreach 循环遍历 $pdfPages 数组,处理每个视图。
  4. 创建 PDF 实例: 在循环的第一次迭代中,使用 PDF::loadView() 创建 PDF 实例,并将第一个视图的内容加载到 PDF 中。
  5. 添加新页面: 在后续的迭代中,使用 $pdf->getMpdf()->AddPage() 添加新页面,然后使用 $pdf->getMpdf()->WriteHTML((string)view($view, $data)) 将当前视图的 HTML 内容写入该页面。view($view, $data) 函数渲染 Blade 视图,并将其转换为字符串。
  6. 输出 PDF: 最后,使用 $pdf->stream('document.pdf') 将生成的 PDF 文件输出到浏览器

注意事项

  • 确保 Blade 视图文件存在,并且包含有效的 HTML 内容。
  • 根据需要调整 $data 数组和 $pdfPages 数组,以适应不同的 PDF 生成需求。
  • $pdf->getMpdf() 获取的是底层的 mPDF 对象,你可以使用 mPDF 提供的所有方法来进一步定制 PDF 的生成过程。例如,你可以设置页眉、页脚、水印等。
  • 如果视图中包含 CSS 样式,确保这些样式能够正确地被 mPDF 解析和渲染。可以将 CSS 样式嵌入到 HTML 中,或者使用外部 CSS 文件。

总结

通过循环遍历多个 Blade 视图,并将它们的内容添加到同一个 PDF 实例中,我们可以轻松地生成包含多个页面的 PDF 文件。这种方法灵活且易于实现,可以满足各种 PDF 生成需求。本文提供的示例代码可以作为基础,根据实际情况进行修改和扩展。

以上就是Laravel MPDF 加载多个视图生成 PDF的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号