Як робити скріншоти веб‑сторінок у Laravel за допомогою пакета Spatie Laravel Screenshot

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 14 лютого, 2026
Laravel Screenshot робить знімки сторінок через Browsershot або Cloudflare, із підтримкою черг, налаштувань розміру й якості та можливістю тестування без реальних викликів. Хочете автоматизувати генерацію Open Graph‑зображень, PDF або візуальні тести — читайте далі.

Laravel Screenshot дає змогу робити скріншоти веб‑сторінок у застосунках Laravel. Пакет побудовано на драйверній архітектурі — можна обрати Browsershot (Chromium) або Cloudflare Browser Rendering залежно від інфраструктури.

Основні можливості

Пакет підтримує:

Пакет має два драйвери. Драйвер Browsershot (за замовчуванням) потребує Node.js та встановленого Chrome/Chromium на сервері. Драйвер Cloudflare вимагає облікового запису Cloudflare з доступом до Browser Rendering API, але не потребує Node.js чи Chrome.

Базове створення скріншота

Використовуйте фасад Screenshot для зйомки сторінки:

use Spatie\LaravelScreenshot\Facades\Screenshot;
 
Screenshot::url('https://example.com')->save('screenshot.png');

Цей приклад робить знімок у роздільності 1280×800 і зберігає його в PNG.

Налаштування розмірів і якості

Задайте розміри viewport та якість через ланцюжок викликів методів:

Screenshot::url('https://example.com')
    ->width(1920)
    ->height(1080)
    ->quality(80)
    ->save('screenshot.jpg');

Параметр quality приймає значення 0–100 і застосовується при збереженні в JPEG.

Фонове оброблення в черзі

Генеруйте скріншоти у фоновому режимі за допомогою saveQueued():

Screenshot::url('https://example.com')
    ->saveQueued('screenshot.png')
    ->then(fn (string $path, ?string $diskName) =>
        Mail::to($user)->send(new ScreenshotMail($path))
    );

Колбек then() отримує шлях до файлу та ім'я диска після завершення збереження.

Тестування генерації скріншотів

Пакет також містить утиліти для тестування — дозволяють перевіряти виклики генерації скріншотів без фактичного створення файлів:

Screenshot::fake();
 
$this->get(route('screenshot'))->assertOk();
 
Screenshot::assertSaved(function ($screenshot) {
    return $screenshot->url === 'https://example.com';
});

Це запобігає зовнішнім HTTP‑запитам і запису на диск під час тестів, але дозволяє переконатися, що операції зі скріншотами виконувалися.

Приклади використання

Щоб дізнатися більше про Laravel Screenshot, відвідайте репозиторій на GitHub або прочитайте офіційну документацію.

Популярні

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!

Logomark Logotype

Обробка геопросторових даних за допомогою Laravel Magellan

Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!

Logomark Logotype

Випущено Livewire 3.6

Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!