在 Laravel 中生成 PDF:比较两个流行的包

发布: (2025年12月30日 GMT+8 14:03)
5 min read
原文: Dev.to

Source: Dev.to

Spatie Laravel PDF – 具备浏览器精度的现代 PDF 生成

Spatie Laravel PDF 是由 Spatie 团队开发的现代 Laravel 包,Spatie 团队以在 Laravel 生态系统中提供高质量工具而闻名。它通过 Browsershot 库在无头 Chromium 浏览器中渲染 Blade 视图来生成 PDF。

由于依赖真实的浏览器引擎,渲染出的 PDF 与页面在浏览器中的显示几乎一致,是使用现代前端技术并需要高度设计准确性的应用的理想选择。

关键特性

  • 完全支持现代 CSS,包括 Tailwind CSS、Flexbox 和 Grid
  • 高质量、像素级精准的 PDF 渲染
  • 直接集成 Blade 视图
  • 基于浏览器的渲染确保布局准确性
  • 适用于复杂且具品牌特色的文档设计

安装

composer require spatie/laravel-pdf

由于该包依赖基于浏览器的渲染,服务器上必须具备 Node.jsChromium(或 Puppeteer)。这些依赖在 VPS、Docker 环境以及现代托管平台上通常都能得到支持。

基本用法

use Spatie\LaravelPdf\Facades\Pdf;

return Pdf::view('pdfs.invoice', ['invoice' => $invoice])
    ->format('a4')
    ->download('invoice.pdf');

除了基本的下载功能,包还支持:

  • 将 PDF 保存到存储
  • 在浏览器中流式输出 PDF
  • 配置边距和方向
  • 添加页眉和页脚
  • 在渲染过程中执行 JavaScript

Spatie Laravel PDF 最适合对视觉质量、品牌一致性以及现代 UI 支持有较高要求的项目。

Laravel DomPDF – 简单轻量的 PDF 生成

Laravel DomPDF 是围绕 DomPDF 库的长期使用的包装器,在 Laravel 项目中因其简洁可靠而被广泛采用。该包完全使用 PHP 编写,依赖外部工具或浏览器引擎。

它解析 HTML 或 Blade 输出,并直接使用 PHP 将其转换为 PDF。由于不涉及浏览器,设置极其简便,性能也更易预测,尤其适用于简单文档。

关键特性

  • 简单快速的安装
  • 无需 Node.js 或 Chromium 依赖
  • 轻量级、仅 PHP 解决方案
  • 适用于基本布局和文字密集的文档
  • 稳定且在 Laravel 项目中被广泛采用

安装

composer require barryvdh/laravel-dompdf

无需额外的系统级依赖,非常适合共享主机环境和受限服务器。

基本用法

use Barryvdh\DomPDF\Facade\Pdf as DomPdf;

$pdf = DomPdf::loadView('pdfs.invoice', ['invoice' => $invoice]);

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

Laravel DomPDF 支持在浏览器中流式输出 PDF、保存到存储以及配置纸张尺寸和方向。它与 Blade 模板无缝集成,且易于初学者上手。

然而,它仅支持有限的 CSS 标准;复杂布局和现代前端框架可能无法如预期渲染。Flexbox、Grid、Tailwind CSS 等高级样式特性并未得到完整支持。

结论

Spatie Laravel PDFLaravel DomPDF 都是优秀的 Laravel PDF 生成包,但它们面向的使用场景不同。

  • Spatie Laravel PDF – 适用于需要精准布局、先进 CSS 支持以及专业文档设计的现代应用。当 PDF 必须与网站外观高度一致时,这是最佳选择。
  • Laravel DomPDF – 更适合直接、简单的 PDF 生成,尤其是在布局简单或托管环境受限的情况下。其易用性和零依赖的安装方式使其在许多应用中都非常可靠。
Back to Blog

相关文章

阅读更多 »