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

Конфигурация пакета NextPDF для Laravel

config/nextpdf.php публикуется командой php artisan vendor:publish --tag=nextpdf-config. Для каждого ключа предусмотрены переменная окружения для переопределения и жёстко заданное значение по умолчанию. На этой странице ключи перечислены в том виде, в каком они присутствуют в файле config/nextpdf.php пакета.

Окно терминала
php artisan vendor:publish --tag=nextpdf-config

В register() провайдер также объединяет значения по умолчанию пакета под ключом конфигурации nextpdf. После этого незаданные ключи используют значения, приведённые ниже, даже до публикации файла конфигурации.

Большинство переменных окружения поддерживают либо имя NEXTPDF_*, либо устаревшее имя TCPDF_*. Устаревший префикс доступен в течение переходного периода, описанного в UPGRADE.md. Для новых развёртываний используйте NEXTPDF_*. Файл конфигурации определяет значения в таком порядке: переменная окружения → значение из опубликованного файла → значение по умолчанию пакета.

КлючEnv (основная)По умолчаниюЭффект
page_formatNEXTPDF_PAGE_FORMATA4Формат страницы по умолчанию: A4, A3, A5, Letter, Legal или Tabloid
orientationNEXTPDF_ORIENTATIONPКнижная (P) или альбомная (L) ориентация
unitNEXTPDF_UNITmmЕдиница измерения: pt, mm, cm или in
defaults.creatorNEXTPDF_CREATORNextPDFМетаданные о создателе документа; применяются к PdfDocumentInterface-привязке
defaults.authorNEXTPDF_AUTHOR(пусто)Метаданные автора; применяются только если значение непустое
defaults.languageNEXTPDF_LANGenЯзык документа; применяется к привязке документа
defaults.margin_top / _right / _bottom / _left10Поля по умолчанию
defaults.font_familydejavusansСемейство шрифтов по умолчанию
defaults.font_size12Размер шрифта по умолчанию
defaults.trim_boxnullTrimBox [left, bottom, right, top] в пунктах или null
defaults.bleed_boxnullBleedBox [left, bottom, right, top] в пунктах или null

Провайдер применяет defaults.creator, defaults.language и (если задан) defaults.author к каждому заново разрешённому документу. Если значение пустое, провайдер пропускает defaults.author.

КлючEnv (основная)По умолчаниюЭффект
pdfaNEXTPDF_PDFAnullУровень архивирования PDF/A: null, 4, 4e или 4f. Ненулевое значение включает PDF/A для привязки документа и требует nextpdf/premium
fonts_pathNEXTPDF_FONTS_PATHresource_path('fonts')Каталог для дополнительных шрифтов TrueType; задаёт путь поиска реестра шрифтов
cache_pathNEXTPDF_CACHE_PATHstorage_path('framework/cache/tcpdf')Каталог кэша разобранных шрифтов и временных файлов
icc_profile.rgbNEXTPDF_ICC_PROFILE_RGBnullПуть к ICC-профилю RGB; обязателен для PDF/A
icc_profile.cmykNEXTPDF_ICC_PROFILE_CMYKnullНеобязательный ICC-профиль CMYK для печатных процессов
font_cache_lockingNEXTPDF_FONT_CACHE_LOCKINGtrueИспользовать flock для кэша шрифтов, чтобы предотвратить повреждение из-за одновременной записи параллельными обработчиками очереди

Ненулевое значение pdfa требует Premium. Без nextpdf/premium разрешение привязки документа с заданным pdfa вызывает ошибку “класс не найден” для типа версии PDF/A. Эта страница не описывает поведение архивирования Premium. См. документацию Premium.

Память обработчика (долгоживущие среды выполнения)

Заголовок раздела «Память обработчика (долгоживущие среды выполнения)»
КлючEnv (основная)По умолчаниюЭффект
preload_fonts[]Абсолютные пути к файлам шрифтов, разбираемым при запуске обработчика. После прогрева реестр шрифтов блокируется
image_cache_mbNEXTPDF_IMAGE_CACHE_MB50Бюджет кэша изображений по схеме «вытеснение давно неиспользуемых» (LRU) в мегабайтах (МБ). 0 отключает кэширование. На уровне провайдера верхняя граница не задаётся

Провайдер не задаёт верхнюю границу для бюджета кэша изображений. Чтобы ограничить его, используйте лимит памяти контейнера или php.inimemory_limit. Файл конфигурации рекомендует практический максимум 256 МБ.

КлючEnv (основная)По умолчаниюЭффект
signature.enabledNEXTPDF_SIGN_ENABLEDfalseКогда значение false или сертификат пуст, SignerInterface разрешается в null
signature.certificateNEXTPDF_SIGN_CERTnullПуть к сертификату подписи
signature.private_keyNEXTPDF_SIGN_KEYnullПуть к закрытому ключу
signature.passwordNEXTPDF_SIGN_PASSWORD(пусто)Парольная фраза для ключа
signature.extra_certs[]Пути к сертификатам промежуточных ЦС
signature.levelNEXTPDF_SIGN_LEVELB-BБазовый уровень усовершенствованной электронной подписи для PDF (PAdES), передаваемый в модуль подписи

Описываемый здесь пакет Core не поставляет реализацию модуля подписи; SignerInterface разрешается в null, пока его не предоставит nextpdf/premium. При наличии Premium level: B-B создаёт базовую подпись PAdES B-B. Более высокие базовые уровни PAdES зависят от настроенной службы меток времени и возможностей Premium; эта страница их не описывает.

КлючEnv (основная)По умолчаниюЭффект
tsa.urlNEXTPDF_TSA_URLnullКонечная точка службы меток времени (TSA). Когда значение пусто, TsaClient разрешается в null
tsa.username / tsa.passwordNEXTPDF_TSA_USERNAME / _PASSWORD(пусто)HTTP-учётные данные TSA
tsa.cert / tsa.keyNEXTPDF_TSA_CERT / _KEYnullКлиентский сертификат / ключ для взаимной аутентификации TLS (mTLS) при подключении к TSA
tsa.timeoutNEXTPDF_TSA_TIMEOUT30HTTP-таймаут в секундах для клиента PSR-18
tsa.pinned_public_keys[]Закрепления (pins) SubjectPublicKeyInfo (SPKI) в формате Base64 SHA-256 (RFC 7469). Пустое значение отключает закрепление
tsa.warn_on_key_rotationNEXTPDF_TSA_WARN_ROTATIONtrueВыводить предупреждение, когда TSA предъявляет незакреплённый SPKI
tsa.allow_insecure_httpNEXTPDF_TSA_ALLOW_INSECURE_HTTPfalseРазрешить незашифрованный HTTP при подключении к TSA. В продакшене оставляйте false
КлючEnv (основная)По умолчаниюЭффект
ocsp_cache.enabledNEXTPDF_OCSP_CACHE_ENABLEDtrueКэшировать ответы протокола статуса сертификата в реальном времени (OCSP) во время проверки
ocsp_cache.ttlNEXTPDF_OCSP_CACHE_TTL86400TTL кэша в секундах
ocsp_cache.directoryNEXTPDF_OCSP_CACHE_DIRnullКаталог кэша; null держит кэш только в памяти
КлючEnv (основная)По умолчаниюЭффект
queue.connectionNEXTPDF_QUEUE_CONNECTIONnullПодключение очереди; null использует подключение по умолчанию
queue.queueNEXTPDF_QUEUE_NAMEpdfОчередь, в которую GeneratePdfJob помещается для выполнения
queue.timeoutNEXTPDF_QUEUE_TIMEOUT120Таймаут на задачу в секундах
КлючEnv (основная)По умолчаниюЭффект
artisan.chrome_binaryNEXTPDF_ARTISAN_CHROME_BINARYзначение из окружения или не заданоПуть к исполняемому файлу Chrome/Chromium
artisan.render_timeoutNEXTPDF_ARTISAN_RENDER_TIMEOUT30Таймаут рендеринга в секундах
artisan.default_cssNEXTPDF_ARTISAN_DEFAULT_CSS(пусто)CSS по умолчанию, внедряемый в отрисованный HTML
artisan.no_sandboxNEXTPDF_ARTISAN_NO_SANDBOXfalseОтключить песочницу Chrome
artisan.max_html_sizeNEXTPDF_ARTISAN_MAX_HTML_SIZE5000000Максимальный размер входных HTML-данных в байтах

Раздел artisan применяется к привязке документа только при наличии класса фабрики браузера Chrome (расширение nextpdf/artisan). Когда этот класс отсутствует, раздел игнорируется.

resource: config/nextpdf.php (subset, verified against the published file)
<?php
declare(strict_types=1);
return [
'page_format' => env('NEXTPDF_PAGE_FORMAT', 'A4'),
'orientation' => env('NEXTPDF_ORIENTATION', 'P'),
'unit' => env('NEXTPDF_UNIT', 'mm'),
'pdfa' => env('NEXTPDF_PDFA', null),
'fonts_path' => env('NEXTPDF_FONTS_PATH', resource_path('fonts')),
'preload_fonts' => [],
'image_cache_mb' => env('NEXTPDF_IMAGE_CACHE_MB', 50),
'queue' => [
'connection' => env('NEXTPDF_QUEUE_CONNECTION', null),
'queue' => env('NEXTPDF_QUEUE_NAME', 'pdf'),
'timeout' => env('NEXTPDF_QUEUE_TIMEOUT', 120),
],
];
  • signature.enabled = true с пустым signature.certificate всё равно разрешает SignerInterface в null; необходимо задать оба значения.
  • tsa.url = null принудительно устанавливает TsaClient в null, даже если другие ключи tsa.* заполнены.
  • signature.level = null сбрасывается к PAdES B-B в модуле подписи.
  • image_cache_mb, установленный в null (а не 0), возвращается к значению по умолчанию 50 МБ; 0 явно отключает кэширование.
  • Устаревшие переменные окружения TCPDF_* по-прежнему читаются, но объявлены устаревшими. Перейдите на NEXTPDF_*.

Чтение конфигурации выполняется через доступ к массиву за O(1). preload_fonts добавляет однократный разбор за O(f) при запуске обработчика, зато снижает задержку первого запроса. Увеличение image_cache_mb уменьшает повторное декодирование изображений ценой памяти, постоянно занятой процессом.

tsa.allow_insecure_http ослабляет доверие к меткам времени и в продакшене должен оставаться false. URL-адреса TSA берите только из доверенной конфигурации. Если вы задаёте их через административный интерфейс, используйте межсетевой экран для исходящего трафика или DNS-политику, чтобы снизить риск подделки запросов. См. /integrations/laravel/security-and-operations/.

Форму файла конфигурации не регулирует ни один нормативный стандарт. Все ключи проверены по файлу config/nextpdf.php пакета в документированной ревизии. Семантику уровней подписи определяет Premium, что выходит за рамки этой страницы Core.

Разделы signature и tsa управляют подписанием в Premium, когда установлен nextpdf/premium. Эта необязательная возможность уровня Enterprise не требует изменений кода в пакете Core. См. https://nextpdf.dev/get-license/?intent=laravel-signing.

  • /integrations/laravel/install/ — опубликовать файл конфигурации
  • /integrations/laravel/production-usage/ — посмотреть применение конфигурации в реальном контроллере
  • /integrations/laravel/security-and-operations/ — усилить настройки TSA и очереди
  • /integrations/laravel/boot-and-discovery/ — посмотреть, какую привязку определяет каждый ключ