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

Конфигурация Laravel

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

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

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

Переменные окружения используют префикс NEXTPDF_*. Начиная с адаптера Laravel 4.0, устаревший префикс TCPDF_* удалён — читаются только ключи NEXTPDF_*. Если ключ TCPDF_* всё ещё задан, адаптер при загрузке выдаёт E_USER_WARNING с указанием оставшегося ключа. Переименуйте каждый ключ TCPDF_* в NEXTPDF_* (суффикс не меняется), как описано в UPGRADE.md. Файл конфигурации определяет значения в таком порядке: переменная окружения → значение из опубликованного файла → значение по умолчанию пакета.

Ключ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://getnextpdf.com/pricing/?intent=laravel-signing.

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