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

Enterprise редакция

Лицензирование

NextPDF Enterprise разрешает вашу лицензию в право времени выполнения: уровень редакции, набор возможностей и решение о брендинге. Платная лицензия, срок действия которой истёк, продолжает работать в рамках гарантии бессрочного резервного режима; прекращаются только обновления и поддержка. На этой странице описано внешне наблюдаемое поведение поверхности лицензирования, гейты возможностей и функций, а также необязательный контракт онлайн-активации.

Эта возможность поставляется в NextPDF Enterprise (nextpdf/enterprise) и активируется лицензионным конвертом уровня Enterprise. Развёртывание без такого права не загружает классы этой возможности. Сравните редакции и получите лицензию.

Лицензирование — это базовая поверхность Enterprise: она разрешает все остальные возможности, поэтому она всегда присутствует, как только установлен пакет Enterprise. Отдельные нижестоящие функции ограничены кодами возможностей — возможностями уровня редакции и независимо истекающими дополнительными пакетами. Гейт сообщает активную редакцию, действительность, состояние льготного периода и набор активных пакетов.

У поверхности лицензирования одна задача: превратить лицензию в решение, на которое может опираться хост-приложение. Она формирует неизменяемый результат права с пятью полями, важными во время выполнения, — уровень редакции, канал (платный или ознакомительный), режим брендинга, может ли установленная версия работать и есть ли право на обновления и поддержку.

Редакции образуют строгую иерархию: Enterprise включает Pro, Pro включает Core. Поэтому проверка возможности проходит успешно, когда лицензированная редакция находится на минимальном уровне возможности или выше. Некоторые возможности вообще не привязаны к редакции — они относятся к дополнительным пакетам, которые несут собственный срок истечения, независимо от срока базовой лицензии.

Решение о праве различает пять дискретных состояний. Активная лицензия даёт полный доступ. Платная лицензия с истёкшим сроком, но в пределах льготного окна сохраняет полный доступ и выводит предупреждение о скором продлении. Платная лицензия за пределами льготного окна переходит в бессрочный резервный режим: установленная версия продолжает работать бессрочно, но права на обновления и поддержку больше нет. Ознакомительная лицензия ведёт себя иначе — по истечении срока среда выполнения ограничивается, потому что ознакомление по замыслу ограничено по времени. Когда лицензии нет, хост переходит в защищённое от отказа состояние, а любой вывод визуально помечается, чтобы нелицензированное развёртывание никогда не приняли за платное.

Договорное число рабочих мест не контролируется во время выполнения. Для обычной работы нет ни телеметрии, ни обязательной отправки данных на сервер. Необязательный онлайн-клиент существует только для явной активации, проверок продления и эвристических heartbeat-сигналов, и хост, который никогда к нему не обращается, всё равно получает полное решение о праве из локально предоставленной лицензии.

Пробный режим — это отдельная, более узкая политика. Когда лицензия помечена как пробная, она ограничивает пропускную способность обработки и применяет ознакомительный водяной знак к формируемому выводу, чтобы массовая производственная работа требовала платной лицензии. Истечение пробного срока контролируется строго, без льготного периода.

Несущее решение состоит в том, что платная лицензия никогда не отключает установленную среду выполнения. Когда платный срок заканчивается, право переходит в EntitlementStatus::PerpetualFallback — установленная версия продолжает работать, отзываются только последующие обновления и поддержка. Эта гарантия держится, потому что право — это чистое решение в памяти над локально предоставленной лицензией, поэтому ни отправка данных на сервер, ни сбой сети не могут выбить платную среду выполнения из-под клиента. Противовес — защищённые от отказа значения по умолчанию: отсутствующая лицензия или истёкшее ознакомление разрешаются в уровень Core и устанавливают brandingMode в ознакомительный водяной знак. Так нелицензированное развёртывание никогда молча не примут за платное. Бессрочный резервный режим для того, что вы купили, защищённый отказ для того, что не купили, — именно эта пара сохраняет лицензирование удобным для офлайна, не превращая его в систему на честном слове.

Проектный контекст: Открытое ядро, без привязки к поставщику.

Окно терминала
composer require nextpdf/enterprise:^3

Поддерживаемые точки интеграции — это оценщик прав (лицензия в результат права), гейт функций времени выполнения (isFeatureEnabled, requireFeature, hasCapability, requireCapability, isInGracePeriod, currentEdition, getActivePacks, trialPolicy), реестр возможностей (разрешение «маршрут — возможность» и набор доступных возможностей) и необязательный клиент лицензии (activate, checkRenewal, heartbeat). Относитесь к оценщику прав как к единственному авторитету для решений, производных от лицензии; не ветвите логику напрямую по сырым полям лицензии.

use NextPDF\Enterprise\Licensing\EntitlementEvaluator;
$result = (new EntitlementEvaluator())->evaluate($license);
if (! $result->runtimeAllowed) {
// No license, or an expired evaluation license.
throw new RuntimeException($result->warningMessage ?? 'Enterprise runtime disabled.');
}
// Perpetual fallback: still allowed to run; updates/support may be off.
$canUpdate = $result->updateEntitled;
$watermark = $result->shouldApplyEvaluationBranding();
use NextPDF\Enterprise\Licensing\CapabilityCode;
use NextPDF\Enterprise\Licensing\FeatureGate;
final class ReportController
{
public function __construct(private readonly FeatureGate $gate) {}
public function generate(): Response
{
// Throws a structured 403-style exception carrying the required
// capability, the required pack, the current packs, and an
// upgrade-info URL — usable as an upsell touchpoint.
$this->gate->requireCapability(CapabilityCode::EnterpriseComplianceEvidence);
if ($this->gate->isInGracePeriod()) {
$this->logger->notice('Enterprise license in grace period — renewal due.');
}
return $this->renderReport();
}
}
  • Бессрочный резервный режим — это не льготный период. Льготный период сохраняет обновления и поддержку; резервный режим сохраняет только среду выполнения. Оба сохраняют работающей установленную версию для платных лицензий.
  • Истечение ознакомления ограничивает среду выполнения. В отличие от платной лицензии, истёкшая ознакомительная лицензия останавливает среду выполнения и сохраняет ознакомительный водяной знак.
  • Отсутствие лицензии срабатывает защищённым отказом. Без настроенной лицензии право — «нет лицензии», среда выполнения отключена для путей Enterprise, а формируемый вывод помечается водяным знаком, чтобы это состояние было видно в журналах и артефактах.
  • Истечение пакета независимо. Дополнительный пакет может истечь, пока базовая лицензия ещё активна; предоставленная им возможность тогда завершается с отдельным исходом «пакет истёк», отличным от «нет лицензии».
  • Отказ в возможности структурирован. Отклонённая возможность несёт требуемую возможность, требуемый пакет (если есть), текущие пакеты и URL со сведениями об обновлении — выводите их пользователю, а не голую ошибку.

Оценка прав и проверки возможностей — это операции с постоянным временем в памяти над разобранной лицензией, без ввода-вывода на пути запроса. Необязательный онлайн-клиент выполняет сетевые вызовы только при явной активации, проверках продления и heartbeat-сигналах; сбои heartbeat некритичны и никогда не блокируют обработку.

Эта страница намеренно описывает только наблюдаемое поведение. Проверка лицензионного конверта, проверка подписи, логика противодействия злоупотреблениям и местоположение кода принуждения находятся вне области охвата и не документируются на публичной поверхности. Операторы взаимодействуют с публичным контрактом пакета и документированным контрактом поведения. Контракт онлайн-активации использует подписанный конверт ответа и переданный клиентом nonce, чтобы хост мог обнаружить воспроизведённый или подделанный ответ активации; точная процедура проверки не входит в публичный контракт.

  • Ответ онлайн-активации передаётся в подписанном конверте в стиле JWS — тройка «защищённый заголовок / пейлоад / подпись» в компактной, безопасной для URL форме, описанной в RFC 7515 (JSON Web Signature), §3.1.
  • Материал подписи закодирован в base64url и декодируется согласно RFC 7515 §5.2.
  • Каноническое представление JSON для целостности конверта следует JSON Canonicalization Scheme, RFC 8785, §3.
  • Подпись активации — это подпись Ed25519, проверяемая по 32-байтовому открытому ключу, согласно RFC 8032 (EdDSA), §5.1.
  • Короткоживущие служебные токены, используемые между компонентами, несут зарегистрированные утверждения iss, aud, sub, exp и jti и соблюдают правило «не после» для exp из RFC 7519 (JWT), §4.1.4.
  • Оценка прав формирует неизменяемый результат с фиксированным набором значимых во время выполнения полей (уровень редакции, канал, режим брендинга, разрешена ли среда выполнения, право на обновления/поддержку).
  • Платная лицензия никогда не отключает установленную среду выполнения: истечение проводит её через льготный период, а затем бессрочный резервный режим, отзывая только обновления и поддержку.
  • Истёкшая ознакомительная лицензия ограничивает среду выполнения и сохраняет ознакомительный водяной знак; истечение пробного срока контролируется строго, без льготного периода.
  • Состояние «нет лицензии» срабатывает защищённым отказом для путей Enterprise, а формируемый вывод помечается водяным знаком, чтобы нелицензированное развёртывание никогда не приняли за платное.
  • Отказ в возможности структурирован: он несёт требуемую возможность, требуемый пакет (если есть), активные пакеты и URL со сведениями об обновлении.
  • Проверки прав и возможностей — это операции с постоянным временем в памяти без ввода-вывода на пути запроса.

Эта страница документирует только внешне наблюдаемое поведение и поддерживаемую публичную поверхность API. Внутренние пути пространств имён, вспомогательные классы, таблицы механизмов, имена файлов runbook и префиксы заявок находятся вне области охвата.

У NextPDF Core (Apache-2.0) нет поверхности прав на редакцию или возможности — ни гейта функций, ни оценщика прав, ни клиента лицензии. Хост, которому нужно нелицензированное поведение Apache-2.0, использует движок Core напрямую, а не конвейер Enterprise. Core не выполняет гейтинга, не наносит водяных знаков для лицензирования и не оценивает права.

У NextPDF Pro поверхности прав тоже нет — никакой; у этой возможности нет эквивалента уровня Pro. Лицензирование, реестр возможностей, гейт функций и контракт активации поставляются только в пакете nextpdf/enterprise.

Процедура проверки лицензионного конверта, реализация проверки подписи, логика противодействия злоупотреблениям и местоположение кода принуждения описаны только на уровне поведения и не воспроизводятся на публичной поверхности. Контракт онлайн-активации задокументирован как подписанный конверт ответа с переданным клиентом nonce; точная процедура проверки не входит в публичный контракт.

NextPDF Enterprise разрешает право из локально предоставленной лицензии без обязательной отправки данных на сервер для обычной работы. Необязательный онлайн-клиент выполняет сетевые вызовы только при явной активации, проверках продления и эвристических heartbeat-сигналах; сбои heartbeat некритичны и никогда не блокируют обработку. Оператор владеет подготовкой лицензии, конфигурацией активации/продления и транспортной политикой для необязательного онлайн-клиента. NextPDF Enterprise не контролирует договорное число рабочих мест во время выполнения.

Ёмкость и условия по числу рабочих мест регулируются вашим лицензионным соглашением, а не принуждением во время выполнения. Эта документация не является юридическим заключением; по вашим договорным и нормативным обязательствам обращайтесь к собственным консультантам по комплаенсу и праву.