使用Spatie Browsershot生成PDF的完整指南
Spatie Browsershot是一个强大的PHP库,它允许开发者使用PHP代码生成PDF文件。本文将全面介绍如何使用Browsershot创建PDF文件,并探讨各种自定义选项。
基础PDF生成
Browsershot提供了两种简单的方式来生成PDF文件:
- 通过URL生成PDF:
Browsershot::url('https://example.com')->save('example.pdf');
- 通过HTML内容生成PDF:
Browsershot::html($someHtml)->savePdf('example.pdf');
当文件扩展名为.pdf
时,Browsershot会自动识别并生成PDF格式文件。你也可以显式使用savePdf
方法来确保生成PDF。
获取Base64编码的PDF
在某些无服务器环境或需要直接处理PDF内容而不保存到磁盘的场景下,可以获取PDF的Base64编码:
$base64Data = Browsershot::url('https://example.com')->base64pdf();
这种方式特别适合需要将PDF直接上传到云存储或通过API传输的场景。
安全注意事项
在使用Browsershot时,开发者必须自行验证所有传入的URL和HTML内容的安全性。只处理可信的来源,避免XSS等安全风险。
PDF尺寸与格式设置
自定义尺寸
你可以精确控制PDF的尺寸:
Browsershot::html($someHtml)
->paperSize($width, $height, 'mm') // 支持多种单位(mm, cm, in, px)
->save('example.pdf');
预设格式
Browsershot支持多种标准纸张格式:
Browsershot::url('https://example.com')
->format('A4') // 支持A0-A6, Letter, Legal等
->save('example.pdf');
页边距设置
精确控制PDF的页边距:
Browsershot::html($someHtml)
->margins($top, $right, $bottom, $left, 'mm') // 可指定单位
->save('example.pdf');
页眉页脚设置
Browsershot允许自定义页眉页脚内容:
Browsershot::html($someHtml)
->showBrowserHeaderAndFooter()
->headerHtml('<div>自定义页眉</div>')
->footerHtml('<div class="pageNumber"></div>')
->save('example.pdf');
支持的特殊类名:
date
- 格式化日期title
- 文档标题url
- 文档URLpageNumber
- 当前页码totalPages
- 总页数
背景控制
默认情况下,PDF不会包含HTML页面的背景。可以通过以下方法修改:
// 显示背景
Browsershot::html($someHtml)
->showBackground()
->save('example.pdf');
// 透明背景
Browsershot::html($someHtml)
->transparentBackground()
->save('example.pdf');
高级功能
可访问PDF
生成带有标签的可访问PDF:
Browsershot::html($someHtml)
->taggedPdf()
->save('example.pdf');
横向布局
将PDF设置为横向:
Browsershot::html($someHtml)
->landscape()
->save('example.pdf');
缩放控制
调整PDF的缩放比例(0.1到2之间):
Browsershot::html($someHtml)
->scale(0.5) // 缩小50%
->save('example.pdf');
选择特定页面
只导出指定页面:
Browsershot::html($someHtml)
->pages('1-5, 8, 11-13') // 支持多种范围格式
->save('example.pdf');
设置起始页码
自定义起始页码:
Browsershot::html($someHtml)
->initialPageNumber(8) // 第一页编号为8
->save('example.pdf');
直接输出到浏览器
不保存文件,直接输出PDF到浏览器:
$pdf = Browsershot::url('https://example.com')->pdf();
通过掌握这些功能,你可以灵活地使用Spatie Browsershot生成满足各种需求的PDF文档。无论是简单的网页转换还是复杂的定制PDF,Browsershot都能提供强大的支持。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考