Перейти к содержимому

Установка пакета 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. Этот блок выглядит так:

resource: composer.json (extra.laravel)
{
"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

Зафиксируйте ограничение для воспроизводимых развёртываний. Явно отключайте автообнаружение только в том случае, если регистрируете поставщика самостоятельно:

resource: opt-out pattern (Laravel 12 packages guide)
{
"extra": {
"laravel": {
"dont-discover": [
"nextpdf/laravel"
]
}
}
}

Когда автообнаружение отключено, зарегистрируйте поставщика самостоятельно в bootstrap/providers.php:

resource: bootstrap/providers.php (manual registration)
<?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) применяется к привязке документа, когда присутствует фабричный класс ChromeNextPdfServiceProvider::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/ — внутреннее устройство обнаружения и время жизни привязок