websnap / laravel
Websnap PHP 客户端的 Laravel 封装
1.5.0
2023-03-09 20:01 UTC
Requires
- php: ^8.1
- laravel/framework: ^8.0|^9.0|^10.0
- websnap/php: ^1.4
Requires (Dev)
- orchestra/testbench: ^8.0
README
安装
使用 composer 安装: composer require websnap/laravel
摘要
Websnap 是一个将 HTML 生成图片/pdf 的服务。可以是提供的 HTML 字符串或 URL,其内容将被获取并处理。
入门
- 在 https://www.websnap.app 上免费注册并获取令牌
- 将令牌作为环境变量添加
WEBSNAP_TOKEN={YOUR_TOKEN}
使用方法
1. Websnap 门面
允许你在代码的任何地方请求 Websnap,并处理响应以满足你的需求。
// Screenshot from url
$response = \Websnap\Laravel\Facades\Websnap::screenshot('https://www.websnap.app');
// Screenshot from html
$response = \Websnap\Laravel\Facades\Websnap::screenshot('<h1>Hello world!</h1>');
// PDF from url
$response = \Websnap\Laravel\Facades\Websnap::pdf('https://www.websnap.app');
// PDF from html
$response = \Websnap\Laravel\Facades\Websnap::pdf('<h1>Hello world!</h1>');
screenshot
/pdf
方法将返回一个 PSR-7 响应对象。
2. 中间件
你可以将 websnap
中间件添加到任何路由。这将通过 Websnap 传递路由的内容,并以图像响应的形式返回截图。
Route::middleware('websnap')->get('share-image', fn() => view('share-image'));
我们也可以将 Websnap 选项以查询字符串格式传递给中间件
Route::middleware('websnap:viewport_width=1200&viewport_height=600')->get('share-image', fn() => view('share-image'));
作为替代,我们还考虑了 GET 参数 websnap
,并将选项转发给 Websnap 请求。
<meta property="og:image" content="/share-image?websnap[viewport_width]=1200&websnap[viewport_height]=630">
出于测试目的,你可以通过设置环境变量 WEBSNAP_MIDDLEWARE_BYPASS=true
来绕过中间件,并始终强制返回路由的值。例如,一个视图。
3. 响应
为了方便,我们在响应工厂中添加了宏,只需一行代码即可返回图像或 pdf 响应。
// Image response from a route
Route::get('share-image', fn() => response()->screenshot('https://www.websnap.app'));
// PDF response from a route
Route::get('share-image', fn() => response()->pdf('<h1>Hello World!</h1>'));
联系
你发现了错误或需要特定的功能?请联系我们或提出问题。