Spatie 的 laravel-pdf v2 引入了基于驱动程序的 PDF 生成架构,允许您在 Browsershot、Cloudflare 浏览器渲染、DomPdf 以及(自 v2.1.0 版本起)Gotenberg 之间进行选择。此版本还新增了 PDF 生成队列、PDF 元数据支持、运行时驱动程序切换和自定义驱动程序支持。
- 基于驱动程序的架构,包含 Browsershot、Cloudflare 和 DomPdf 驱动程序
- v2.1.0 版本新增 Gotenberg 驱动程序
- 已排队的 PDF 生成
- PDF元数据支持(标题、作者、主题、关键词、创建者、创建日期)
- 运行时驱动程序切换和自定义驱动程序
什么是新的
基于驱动的架构
v2 版本最大的变化在于采用了基于驱动程序的系统。您不再需要局限于 Browsershot,现在您可以选择适合您基础架构的 PDF 后端:
- 浏览器快照 — 通过 Puppeteer 使用 Chromium 进行渲染(仍为默认设置)
- Cloudflare — 使用 Cloudflare 的浏览器渲染 API 生成 PDF
- DomPdf — 纯 PHP 渲染,无需外部二进制文件
在配置文件中设置默认驱动程序,或在运行时切换:
使用
空间\LaravelPdf\立面\Pdf
;PDF
::
看法
(
'pdfs.invoice'
,[
'发票'
=>
$invoice])
->
司机
(
'dompdf'
)
->
格式
(
'a4'
)
->
节省
(
'invoice.pdf'
(英文):
您还可以为软件包未包含的后端构建自定义驱动程序。
哥登堡驱动程序(v2.1.0)
v2 版本发布后的第二天,v2.1.0 版本就添加了内置的 Gotenberg 驱动程序。
哥登堡
是一个基于 Docker 的 API,用于使用无头 Chromium 将 HTML 转换为 PDF。该驱动程序将 HTML 作为 multipart/form-data 发送到 Gotenberg 的转换端点,并支持所有标准 PDF 选项:纸张大小、边距、方向、缩放比例、页面范围、页眉和页脚。它使用 Laravel 内置的
Http
由于采用了外观设计,因此不需要额外的 Composer 依赖项。
公关稿: #302
已排队的 PDF 生成
现在可以将 PDF 生成任务卸载到队列中。
saveQueued()
您可以添加一个回调函数,在 PDF 保存后运行——例如,发送一封包含生成文件的电子邮件:
使用
空间\LaravelPdf\立面\Pdf
;PDF
::
看法
(
'pdfs.invoice'
,[
'发票'
=>
$invoice])
->
格式
(
'a4'
)
->
保存队列
(
'invoice.pdf'
)
->
然后
(
fn
(
细绳
$path,
?细绳
$diskName) =>
邮件
::
到
($用户)
->
发送
(
新的
发票邮件
(路径)(英文):
该方法还接受可选参数
$connection
和
$queue
参数。
PDF元数据
v2 增加了一个
meta()
设置PDF文档元数据的方法:
使用
空间\LaravelPdf\立面\Pdf
;PDF
::
看法
(
'pdfs.invoice'
,[
'发票'
=>
$invoice])
->
元
(
标题
:
发票编号 1234
,
作者
:
“Acme公司”
,
主题
:
“月度发票”
,
关键词
:
发票,账单
,
創作者
:
Laravel PDF
,
创建日期
:
现在
(),)
->
节省
(
'invoice.pdf'
(英文):
检查 文档 有关 PDF 格式设置的更多详细信息。
升级说明
这是一个包含重大变更的版本更新:
spatie/browsershot如果您使用 Browsershot 驱动程序,则现在必须通过 Composer 显式地要求添加该驱动程序。getBrowsershot()已移除——使用withBrowsershot()反而- 配置文件结构已更改(新)
driver密钥)—重新发布您的配置 - Laravel 10 的支持已停止。
参考





