跳转到内容
getnextpdf.com

Enterprise 版本

许可

NextPDF Enterprise 会把你的授权解析为一项运行时权益:一个版本层级、一组能力,以及一个品牌标识决策。一份已到期的付费授权会在永久回退保证下继续运行;只有更新与支持会停止。本页描述授权表面的外部可观察行为、能力与功能闸门,以及可选的在线激活契约。

此能力发行于 NextPDF Enterprisenextpdf/enterprise),并随一份 Enterprise 层级的授权封套激活。缺少该权益的部署不会加载此能力的类。比较各版本并获取授权

授权是 Enterprise 的基础表面:它解析所有其他能力,因此一旦安装了 Enterprise 软件包,它便始终存在。各项下游功能由能力代码控制——版本层级能力与各自独立到期的附加包。该闸门会报告生效的版本、有效性、宽限期状态,以及生效的附加包集合。

授权表面只有一项工作:把一份授权变成宿主应用程序可以据以行动的决策。它产出一项不可变的权益结果,包含五个在运行时关键的字段——版本层级、渠道(付费或评估)、品牌标识模式、已安装版本是否可运行,以及是否享有更新与支持权益。

各版本构成一个严格的层级结构:Enterprise 包含 Pro,Pro 包含 Core。因此,当被授权的版本处于或高于某项能力的最低层级时,一次能力检查便会成功。有些能力根本不绑定到任何版本——它们属于附加包,附加包带有各自独立于基础授权期限的到期时间。

权益决策区分五种离散状态。一份生效的授权拥有完整访问权。一份超过期限但仍在其宽限窗口内的付费授权保持完整访问权,并呈现一条“尽快续订”警告。一份超过其宽限窗口的付费授权进入永久回退:已安装的版本无限期地继续运行,但更新与支持不再属于权益范围。一份评估授权的行为有所不同——当它到期时,运行时会被限制,因为按设计评估是有时限的。当不存在任何授权时,宿主解析为一种失败即关闭的状态,并且任何输出都会被可见地标记,使得一个未授权的部署绝不会被误认为付费部署。

合同上的席位数不在运行时强制执行。普通运行没有遥测,也没有强制的回拨。可选的在线客户端仅为显式激活、续订检查与尽力而为的心跳而存在;一个从不调用它的宿主,仍然会从本地提供的授权中获得一项完整的权益决策。

试用模式是一项独立且更狭窄的策略。当一份授权被标记为试用时,它会限制处理吞吐量,并对生成的输出施加一道评估水印,从而使批量生产工作需要一份付费授权。试用到期严格强制执行,没有宽限期。

关键的决策是:一份付费授权绝不禁用已安装的运行时。当付费期限结束时,权益转入 EntitlementStatus::PerpetualFallback——已安装的版本继续运行,仅撤销向前的更新与支持。该保证之所以成立,是因为权益是针对本地提供的授权所作的一项纯内存决策,因此没有任何回拨、没有任何网络中断能把付费运行时从客户脚下抽走。与之对应的配重是失败即关闭的默认值:一份缺失的授权或一份已到期的评估会解析到 Core 层级,并将 brandingMode 设为评估水印。如此,一个未授权的部署绝不会被悄悄误认为付费部署。对你所购买的给予永久回退,对你未购买的则失败即关闭——正是这种搭配,使授权在保持离线友好的同时不至于沦为一套凭良心的机制。

设计背景:开放内核,不锁定

Terminal window
composer require nextpdf/enterprise:^3

受支持的集成点是权益评估器(授权到权益结果)、运行时功能闸门(isFeatureEnabledrequireFeaturehasCapabilityrequireCapabilityisInGracePeriodcurrentEditiongetActivePackstrialPolicy)、能力注册表(路由到能力的解析与可用能力集合),以及可选的授权客户端(activatecheckRenewalheartbeat)。请将权益评估器视为授权派生决策的唯一权威;不要直接对原始授权字段进行分支判断。

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——请将这些呈现给用户,而非一个干巴巴的错误。

权益评估与能力检查是针对一份已解析授权的常数时间内存操作——请求路径上没有 I/O。可选的在线客户端仅在显式激活、续订检查与心跳时执行网络调用;心跳失败是非致命的,绝不会阻塞处理。

本页有意只描述可观察的行为。授权封套验证、签名检查、反滥用逻辑,以及强制执行代码的位置不在范围内,且不在公共表面上记录。运维方与公共软件包契约及所记录的行为契约交互。在线激活契约使用一个签名后的响应封套与一个客户端提供的 nonce,使宿主能够检测一次重放或被篡改的激活响应;精确的验证流程不属于公共契约。

  • 在线激活响应承载于一个 JWS 风格的签名封套中——一个受保护头 / 载荷 / 签名三元组,采用 RFC 7515(JSON Web Signature)§3.1 所描述的紧凑、URL 安全的形式。
  • 签名材料为 base64url,按 RFC 7515 §5.2 解码。
  • 用于封套完整性的规范化 JSON 遵循 JSON 规范化方案,RFC 8785,§3。
  • 激活签名是一个 Ed25519 签名,依据 RFC 8032(EdDSA)§5.1,对一个 32 字节公钥进行验证。
  • 组件之间使用的短期服务令牌携带注册声明 issaudsubexpjti,并遵守 RFC 7519(JWT)§4.1.4 的 exp 不晚于规则。
  • 权益评估产出一项不可变结果,带有一组固定的、与运行时相关的字段(版本层级、渠道、品牌标识模式、运行时是否允许、是否享有更新/支持权益)。
  • 一份付费授权绝不禁用已安装的运行时:到期会让它经过宽限期,然后进入永久回退,仅撤销更新与支持。
  • 一份已到期的评估授权会限制运行时并保留评估水印;试用到期严格强制执行,没有宽限期。
  • “无授权”状态对 Enterprise 路径是失败即关闭的,且发出的输出会被加水印,使得一个未授权的部署绝不会被误认为付费部署。
  • 能力拒绝是结构化的:它携带所需能力、所需包(若有)、生效的包,以及一个升级信息 URL。
  • 权益与能力检查是常数时间的内存操作,请求路径上没有 I/O。

本页仅记录外部可观察的行为与受支持的公共 API 表面。内部命名空间路径、辅助类、机制表、运行手册文件名,以及工单前缀不在范围内。

NextPDF Core(Apache-2.0)没有版本或能力权益表面——没有功能闸门、没有权益评估器、没有授权客户端。一个需要未授权 Apache-2.0 行为的宿主直接使用 Core 引擎,而非 Enterprise 管线。Core 不进行闸门控制、不为授权加水印,也不评估权益。

NextPDF Pro 同样没有权益表面——没有;此能力没有 Pro 层级的等价物。授权、能力注册表、功能闸门与激活契约仅发行于 nextpdf/enterprise 软件包中。

授权封套验证流程、签名检查实现、反滥用逻辑,以及强制执行代码的位置仅在行为层面描述,且不在公共表面上复现。在线激活契约被记录为一个带客户端提供的 nonce 的签名响应封套;精确的验证流程不属于公共契约。

NextPDF Enterprise 从一份本地提供的授权解析权益,普通运行没有强制的回拨。可选的在线客户端仅在显式激活、续订检查与尽力而为的心跳时执行网络调用;心跳失败是非致命的,绝不会阻塞处理。运维方负责授权供给、激活/续订配置,以及可选在线客户端的传输策略。NextPDF Enterprise 不在运行时强制执行合同上的席位数。

容量与席位条款由你的授权协议管辖,而非由运行时强制执行。本文档不是法律意见;关于你的合同与监管义务,请咨询你自己的合规与法律顾问。