Spatie's laravel-pdf v2 переходить на драйверну архітектуру для генерації PDF — тепер можна обирати між Browsershot, Cloudflare Browser Rendering, DomPdf і, починаючи з v2.1.0, Gotenberg. У релізі також додано генерацію PDF у черзі, підтримку метаданих, переключення драйверів під час виконання та можливість створювати власні драйвери.
Найбільша зміна у v2 — перехід на систему драйверів. Замість прив'язки до Browsershot тепер можна вибрати бекенд, який підходить під вашу інфраструктуру:
Встановіть драйвер за замовчуванням у файлі конфігурації або переключайте під час виконання:
use Spatie\LaravelPdf\Facades\Pdf;
Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->driver('dompdf')
->format('a4')
->save('invoice.pdf');
Також можна реалізувати власні драйвери для бекендів, які пакет не поставляє.
Наступного дня після релізу v2 у v2.1.0 додали вбудований драйвер Gotenberg. Gotenberg — це Docker‑API для конвертації HTML у PDF із використанням headless Chromium. Драйвер відправляє HTML як multipart form‑data на endpoint конвертації Gotenberg і підтримує всі стандартні опції PDF: розмір паперу, поля, орієнтацію, масштаб, діапазони сторінок, header і footer. Використовує вбудований Http facade Laravel, тож додаткові залежності Composer не потрібні.
PR: #302
Генерацію PDF тепер можна відправляти в чергу через saveQueued(). До виклику можна приєднати callback, що виконається після збереження — наприклад, надіслати лист із згенерованим файлом:
use Spatie\LaravelPdf\Facades\Pdf;
Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->format('a4')
->saveQueued('invoice.pdf')
->then(fn (string $path, ?string $diskName) =>
Mail::to($user)->send(new InvoiceMail($path))
);
Метод також приймає опційні параметри $connection і $queue.
У v2 з'явився метод meta() для встановлення метаданих документа PDF:
use Spatie\LaravelPdf\Facades\Pdf;
Pdf::view('pdfs.invoice', ['invoice' => $invoice])
->meta(
title: 'Invoice #1234',
author: 'Acme Corp',
subject: 'Monthly Invoice',
keywords: 'invoice, billing',
creator: 'Laravel PDF',
creationDate: now(),
)
->save('invoice.pdf');
Деталі форматування PDF дивіться в документації.
Зауваги щодо оновлення
Це мажорне оновлення з несумісними змінами:
spatie/browsershot тепер потрібно явно додати через ComposergetBrowsershot() видалено — використовуйте withBrowsershot()driver) — перепублікуйте файл конфігураціїПосилання
Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!
Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку
Ви готові відкрити нові горизонти у роботі з геопросторовими даними в Laravel? Дізнайтеся, як за допомогою PostGIS та пакету Laravel-Magellan можна легко зберігати, запитувати та маніпулювати інформацією про розташування, перетворюючи ваші проекти на вражаючі рішення у сфері картографії та геолокації!