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

Перекладено ШІ 1 Laravel News 02 червня, 2026

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

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

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

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

  • Підтримка драйверів — вибір між Browsershot (Chromium через Node.js) або Cloudflare Browser Rendering API
  • Налаштування за замовчуванням — viewport 1280×800, device scale factor 2× (retina), формат PNG, очікування network idle
  • Налаштування розмірів і якості — задавайте ширину, висоту та якість зображення для кожного скріншота
  • Чергове фонове оброблення — генеруйте скріншоти асинхронно з підтримкою callback
  • Тести — fake‑режим і допоміжні ассершени для перевірки генерації скріншотів
  • Збереження на диску — зберігайте скріншоти на будь‑який налаштований диск Laravel filesystem

Пакет має два драйвери. Драйвер 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‑запитам і запису на диск під час тестів, але дозволяє переконатися, що операції зі скріншотами виконувалися.

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

  • Генерація PDF
  • Створення Open Graph‑зображень
  • Моніторинг і архівування вебсайтів
  • Візуальне регресійне тестування
  • Формування звітів

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

Популярні

Інше, що варто прочитати

26 Оновлено 01 червня, 2026

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

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

17 Оновлено 01 червня, 2026

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

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

15 Оновлено 01 червня, 2026

Випущено Livewire 3.6

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