Spatie Browsershot 是一个开源PHP库,它允许开发者在PHP应用程序中生成网页的截图。 这个库特别适用于Laravel框架,但也可以在其他 PHP 应用程序中使用。
主要特点
-
无头浏览器截图:使用无头版本的 Chrome 或 Chromium 浏览器来捕获网页的截图,无需打开完整的浏览器界面。
-
多种输出格式:支持生成 PNG、JPEG 以及 PDF 格式的文件。
-
自定义选项:可以自定义截图的尺寸、缩放比例、用户代理、超时时间等。
-
等待特定元素:可以设置等待页面上的某个元素出现或者等待一定时间后再进行截图。
-
JavaScript支持:能够等待页面上的 JavaScript 加载完成,确保动态内容被正确渲染。
-
自定义HTML:不仅支持对在线网页进行截图,还可以对自定义的 HTML 字符串进行截图。
-
错误处理:提供清晰的错误信息,帮助开发者快速定位问题。
-
易于集成:通过 Composer 进行安装,易于集成到现有的 PHP 项目中。
安装
Spatie Browsershot 可以通过 Composer 进行安装:
composer require spatie/browsershot
使用
使用时,可以通过简单的门面方法调用:
use Spatie\Browsershot\Browsershot;
Browsershot::url('https://www.baidu.com')->save('/path/to/save/baidu.png');
一些使用方法介绍
-
url(string $url): 指定要截图的网页URL。
-
save(string $filePath): 设置截图保存的路径。
-
windowSize(int $width, int $height): 设置截图的宽度和高度。
-
timeout(int $timeout): 设置超时时间,单位为秒。
-
waitUntilNetworkIdle(bool $strict = true): 等待网络空闲,即所有请求都已完成。
-
setChromePath(string $path): 设置Chrome或Chromium浏览器的可执行文件路径。
示例
use Spatie\Browsershot\Browsershot;
Browsershot::url('https://www.baidu.com')
->windowSize(1920,1080)
->timeout(30)
->waitUntilNetworkIdle()
->setChromePath('/usr/bin/google-chrome')
->save('/path/to/save/baidu.png');
注意事项
-
需要安装Chrome或Chromium浏览器,并确保其可执行文件路径正确。
-
如果报错puppeteer未找到需要安装
yarn add puppeteer
或者
npm i puppeteer -
报错puppeteer报错chrome未找到,就需要通过setChromePath设置Chrome或Chromium的可执行文件路径
最后
Spatie Browsershot 提供了一个简单而强大的接口,让开发者可以轻松地在 PHP 应用程序中生成网页截图,无论是用于开发、测试还是生产环境。通过其丰富的参数和选项,开发者可以根据需要定制截图过程,以满足特定的应用场景。