Установка пакета NextPDF для Laravel
Краткий обзор
Заголовок раздела «Краткий обзор»Установите nextpdf/laravel с помощью Composer. Автообнаружение Laravel зарегистрирует поставщика служб автоматически. Опубликуйте файл конфигурации, если нужно его изменить. Пакет автоматически обнаруживает дополнительные расширения NextPDF.
Установка
Заголовок раздела «Установка»composer require nextpdf/laravelПакет объявляет такие ограничения в своём composer.json:
| Требование | Ограничение |
|---|---|
| PHP | >=8.4 <9.0 |
laravel/framework | ^12.0 |
nextpdf/core | ^3.0 || ^5.2 |
psr/http-client | ^1.0 |
Пакет использует автозагрузку с одним сопоставлением PHP Standard Recommendation 4 (PSR-4). Префикс NextPDF\Laravel\ разрешается в src/Laravel/. Это соответствует правилу PSR-4 о сопоставлении префикса с базовым каталогом (PSR-4 §3).
Концептуальный обзор
Заголовок раздела «Концептуальный обзор»После выполнения composer require механизм автообнаружения пакетов Laravel читает блок extra.laravel в composer.json этого пакета. Затем он регистрирует поставщика и псевдоним фасада, поэтому вам не нужно вручную редактировать config/app.php. Этот блок выглядит так:
{ "extra": { "laravel": { "providers": [ "NextPDF\\Laravel\\NextPdfServiceProvider" ], "aliases": { "Pdf": "NextPDF\\Laravel\\Facades\\Pdf" } } }}Это поведение описано в документации Laravel по пакетам. Массив extra.laravel.providers автоматически регистрирует поставщиков служб, а массив extra.laravel.aliases автоматически регистрирует псевдонимы фасадов (руководство по разработке пакетов Laravel 12,
https://laravel.com/docs/12.x/packages, получено 2026-05-18).
Пример кода — быстрый старт
Заголовок раздела «Пример кода — быстрый старт»Используйте тег nextpdf-config для публикации файла конфигурации. Это имя тега определено в NextPdfServiceProvider::boot().
php artisan vendor:publish --tag=nextpdf-configЭта команда записывает config/nextpdf.php в ваше приложение. Поставщик также объединяет конфигурацию пакета по умолчанию под ключом nextpdf во время register(), поэтому пакет работает ещё до публикации. После публикации файл можно редактировать в вашем приложении.
Убедитесь, что Laravel обнаружил поставщика:
php artisan package:discover --ansiПример кода — продакшен
Заголовок раздела «Пример кода — продакшен»Зафиксируйте ограничение для воспроизводимых развёртываний. Явно отключайте автообнаружение только в том случае, если регистрируете поставщика самостоятельно:
{ "extra": { "laravel": { "dont-discover": [ "nextpdf/laravel" ] } }}Когда автообнаружение отключено, зарегистрируйте поставщика самостоятельно в bootstrap/providers.php:
<?php
declare(strict_types=1);
return [ App\Providers\AppServiceProvider::class, NextPDF\Laravel\NextPdfServiceProvider::class,];Дополнительные расширения
Заголовок раздела «Дополнительные расширения»Пакет перечисляет дополнительные сопутствующие пакеты в разделе suggest своего composer.json. Установленные сопутствующие пакеты он обнаруживает во время выполнения:
| Пакет | Эффект после установки | Точка обнаружения |
|---|---|---|
nextpdf/artisan | Конфигурация отрисовщика Hypertext Markup Language (HTML) на основе Chrome DevTools Protocol (CDP) применяется к привязке документа, когда присутствует фабричный класс Chrome | NextPdfServiceProvider::register() проверяет наличие фабричного класса браузера Chrome |
nextpdf/premium | Существующие ключи контейнера разрешают конкретные реализации контрактов для подписания PDF Advanced Electronic Signatures (PAdES B-B), архивирования PDF/A и электронных счетов | разрешается отложенно при первом разрешении из контейнера |
Расширение устанавливайте так же:
composer require nextpdf/artisanДополнительно настраивать привязки не нужно. Поставщик обнаружит расширение в следующем цикле регистрации.
Граничные случаи и подводные камни
Заголовок раздела «Граничные случаи и подводные камни»- Публикация идемпотентна. Она не перезаписывает существующий
config/nextpdf.php. Добавьте--force, если намеренно хотите его перезаписать. - Поставщик загружается отложенно, поэтому успешного
php artisan package:discoverдостаточно, чтобы убедиться, что пакет обнаруживается. Сами привязки не появляются до первого разрешения. - Пакет поддерживает
nextpdf/coreв обеих мажорных линиях —^3.0и^5.2. Сопоставьте ограничение core с линией, которую фиксирует ваше приложение. API адаптера Laravel одинаков для обеих. - Бейдж в README и
composer.jsonсогласованы: Apache-2.0. Лицензия пакета была изменена с LGPL-3.0-or-later. Версии, помеченные тегами до миграции, остаются под прежней лицензией (см.CHANGELOG.md).
Производительность
Заголовок раздела «Производительность»Основная стоимость composer require приходится на разрешение nextpdf/core. Регистрация поставщика не добавляет измеримых затрат на загрузку, поскольку все привязки представляют собой отложенные замыкания. См. /integrations/laravel/boot-and-discovery/ о затратах на построение при первом разрешении.
Замечания по безопасности
Заголовок раздела «Замечания по безопасности»Устанавливайте канонический пакет Packagist nextpdf/laravel. Пакет поставляется с заголовками REUSE Software Package Data Exchange (SPDX) и файлом NOTICE под лицензией Apache-2.0. Зафиксируйте ограничение в composer.json и добавьте composer.lock в систему контроля версий, чтобы при развёртывании использовалось проверенное дерево зависимостей.
Соответствие
Заголовок раздела «Соответствие»| Утверждение | Источник | Пункт | Идентификатор (reference_id) |
|---|---|---|---|
| Префикс PSR-4 сопоставляется с базовым каталогом | PSR-4 Autoloader (автозагрузчик) | §3 |
Имена ключей автообнаружения Laravel сверены с официальной документацией по разработке пакетов Laravel 12 (https://laravel.com/docs/12.x/packages, получено 2026-05-18).
Коммерческий контекст
Заголовок раздела «Коммерческий контекст»nextpdf/premium добавляет конкретные реализации для подписания, PDF/A и электронных счетов как дополнительную возможность Enterprise. Вы можете подключить эти возможности, не изменяя пакет Core, описанный здесь. См. https://nextpdf.dev/get-license/?intent=laravel-signing.
См. также
Заголовок раздела «См. также»- /integrations/laravel/overview/ — архитектура пакета и таблица привязок
- /integrations/laravel/quickstart/ — первый рабочий контроллер
- /integrations/laravel/configuration/ — объяснение каждого ключа конфигурации
- /integrations/laravel/boot-and-discovery/ — внутреннее устройство обнаружения и время жизни привязок