websnap/laravel

Websnap PHP 客户端的 Laravel 封装

1.5.0 2023-03-09 20:01 UTC

This package is auto-updated.

Last update: 2024-09-10 10:59:05 UTC


README

coverage report

安装

使用 composer 安装: composer require websnap/laravel

摘要

Websnap 是一个将 HTML 生成图片/pdf 的服务。可以是提供的 HTML 字符串或 URL,其内容将被获取并处理。

入门

  1. https://www.websnap.app 上免费注册并获取令牌
  2. 将令牌作为环境变量添加 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>'));

联系

你发现了错误或需要特定的功能?请联系我们或提出问题