Enterprise édition
Licences
NextPDF Enterprise résout ta licence en un droit d’usage à l’exécution : un palier d’édition, un ensemble de capacités et une décision de marque. Une licence payante arrivée à expiration continue de fonctionner sous une garantie de repli perpétuel ; seuls les mises à jour et le support s’arrêtent. Cette page décrit le comportement observable de l’extérieur de la surface de licence, les barrières de capacité et de fonctionnalité, et le contrat d’activation en ligne optionnel.
Disponibilité et licence
Section intitulée « Disponibilité et licence »Cette capacité est livrée dans NextPDF Enterprise (nextpdf/enterprise) et s’active avec une enveloppe de licence de palier Enterprise. Un déploiement sans ce droit d’usage ne charge pas les classes de la capacité. Comparer les éditions et obtenir une licence.
La licence est la surface Enterprise de base : elle résout toutes les autres capacités, elle est donc toujours présente dès que le paquet Enterprise est installé. Les fonctionnalités individuelles en aval sont restreintes par des codes de capacité — des capacités de palier d’édition et des packs d’extension expirant indépendamment. La barrière indique l’édition active, la validité, l’état de la période de grâce et l’ensemble des packs actifs.
Aperçu conceptuel
Section intitulée « Aperçu conceptuel »La surface de licence a une seule tâche : transformer une licence en une décision sur laquelle une application hôte peut agir. Elle produit un résultat de droit d’usage immuable avec cinq champs qui comptent à l’exécution — le palier d’édition, le canal (payant ou évaluation), le mode de marque, le fait que la version installée peut s’exécuter, et le fait que les mises à jour et le support sont accordés.
Les éditions forment une hiérarchie stricte : Enterprise inclut Pro, Pro inclut Core. Une vérification de capacité réussit donc lorsque l’édition sous licence est au niveau ou au-dessus du palier minimal de la capacité. Certaines capacités ne sont pas liées à une édition du tout — elles appartiennent à des packs d’extension qui portent leur propre expiration, indépendante de la durée de la licence de base.
La décision de droit d’usage distingue cinq états discrets. Une licence active a un accès complet. Une licence payante dépassant sa durée mais dans sa fenêtre de grâce conserve l’accès complet et fait apparaître un avertissement de renouvellement imminent. Une licence payante dépassant sa fenêtre de grâce entre en repli perpétuel : la version installée continue de s’exécuter indéfiniment, mais les mises à jour et le support ne sont plus accordés. Une licence d’évaluation se comporte différemment — quand elle expire, l’exécution est restreinte, car l’évaluation est limitée dans le temps par conception. Lorsqu’aucune licence n’est présente, l’hôte se résout à un état fermé par défaut et toute sortie est marquée visuellement afin qu’un déploiement non sous licence ne soit jamais confondu avec un déploiement payant.
Un nombre de sièges contractuel n’est pas appliqué à l’exécution. Il n’y a aucune télémétrie ni aucune connexion obligatoire (phone-home) pour le fonctionnement ordinaire. Le client en ligne optionnel n’existe que pour l’activation explicite, les vérifications de renouvellement et des battements de cœur au mieux, et un hôte qui ne l’appelle jamais reçoit quand même une décision de droit d’usage complète à partir d’une licence fournie localement.
Le mode d’essai est une politique distincte, plus restreinte. Quand une licence est marquée comme un essai, il plafonne le débit de traitement et applique un filigrane d’évaluation à la sortie générée, de sorte que le travail de production en masse exige une licence payante. L’expiration de l’essai est appliquée strictement, sans période de grâce.
Pourquoi ça fonctionne ainsi
Section intitulée « Pourquoi ça fonctionne ainsi »La décision porteuse est qu’une licence payante ne désactive jamais l’exécution installée. Quand une durée payante prend fin, le droit d’usage passe à EntitlementStatus::PerpetualFallback — la version installée continue de s’exécuter, et seuls les mises à jour futures et le support sont révoqués. Cette garantie tient parce que le droit d’usage est une décision purement en mémoire sur une licence fournie localement, de sorte qu’aucune connexion (phone-home) et aucune panne réseau ne peut retirer une exécution payante à un client. Le contrepoids, ce sont les valeurs par défaut fermées : une licence absente ou une évaluation expirée se résout au palier Core et positionne brandingMode sur un filigrane d’évaluation. Ainsi un déploiement non sous licence n’est jamais confondu silencieusement avec un déploiement payant. Repli perpétuel pour ce que tu as acheté, fermé par défaut pour ce que tu n’as pas acheté — c’est ce couplage qui garde la licence compatible hors ligne sans devenir un système sur l’honneur.
Contexte de conception : Cœur ouvert, sans verrouillage.
Surface d’API publique
Section intitulée « Surface d’API publique »composer require nextpdf/enterprise:^3Les points d’intégration pris en charge sont l’évaluateur de droit d’usage (licence vers résultat de droit d’usage), la barrière de fonctionnalité d’exécution (isFeatureEnabled, requireFeature, hasCapability, requireCapability, isInGracePeriod, currentEdition, getActivePacks, trialPolicy), le registre de capacités (résolution route-vers-capacité et l’ensemble des capacités disponibles) et le client de licence optionnel (activate, checkRenewal, heartbeat). Traite l’évaluateur de droit d’usage comme l’autorité unique pour les décisions dérivées de la licence ; ne te ramifie pas directement sur les champs bruts de la licence.
Exemple de code — démarrage rapide
Section intitulée « Exemple de code — démarrage rapide »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();Exemple de code — production
Section intitulée « Exemple de code — production »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(); }}Cas limites et pièges
Section intitulée « Cas limites et pièges »- Le repli perpétuel n’est pas une période de grâce. La grâce maintient les mises à jour et le support actifs ; le repli ne maintient que l’exécution. Tous deux maintiennent la version installée en fonctionnement pour les licences payantes.
- L’expiration d’évaluation restreint l’exécution. Contrairement à une licence payante, une licence d’évaluation expirée arrête l’exécution et conserve le filigrane d’évaluation.
- Aucune licence échoue de manière fermée. Sans licence configurée, le droit d’usage est « aucune licence », l’exécution est désactivée pour les chemins Enterprise, et la sortie émise porte un filigrane afin que l’état soit visible dans les journaux et les artefacts.
- L’expiration d’un pack est indépendante. Un pack d’extension peut expirer alors que la licence de base est encore active ; la capacité qu’il accordait échoue alors avec un résultat distinct « pack expiré », séparé de « non sous licence ».
- Le refus de capacité est structuré. Une capacité refusée porte la capacité requise, le pack requis (le cas échéant), les packs actuels et une URL d’information de mise à niveau — fais-les apparaître à l’utilisateur plutôt qu’une erreur nue.
Performance
Section intitulée « Performance »L’évaluation du droit d’usage et les vérifications de capacité sont des opérations en mémoire à temps constant sur une licence analysée — aucune E/S sur le chemin de requête. Le client en ligne optionnel effectue des appels réseau uniquement lors de l’activation explicite, des vérifications de renouvellement et des battements de cœur ; les échecs de battement de cœur sont non fatals et ne bloquent jamais le traitement.
Notes de sécurité
Section intitulée « Notes de sécurité »Cette page décrit intentionnellement uniquement un comportement observable. La vérification de l’enveloppe de licence, le contrôle de signature, la logique anti-abus et l’emplacement du code d’application sont hors périmètre et ne sont pas documentés sur la surface publique. Les opérateurs interagissent avec le contrat de paquet public et le contrat de comportement documenté. Le contrat d’activation en ligne utilise une enveloppe à réponse signée et un nonce fourni par le client afin qu’un hôte puisse détecter une réponse d’activation rejouée ou falsifiée ; la procédure de vérification exacte ne fait pas partie du contrat public.
Conformité
Section intitulée « Conformité »- La réponse d’activation en ligne est portée dans une enveloppe signée de style JWS — un triplet en-tête protégé / charge utile / signature dans la forme compacte et sûre pour les URL décrite par RFC 7515 (JSON Web Signature), §3.1.
- Le matériel de signature est en base64url, décodé selon RFC 7515 §5.2.
- Le JSON canonique pour l’intégrité de l’enveloppe suit le JSON Canonicalization Scheme, RFC 8785, §3.
- La signature d’activation est une signature Ed25519 vérifiée par rapport à une clé publique de 32 octets, selon RFC 8032 (EdDSA), §5.1.
- Les jetons de service de courte durée utilisés entre composants portent les revendications enregistrées
iss,aud,sub,expetjti, et honorent la règle « pas après » deexpde RFC 7519 (JWT), §4.1.4.
Contrat de comportement
Section intitulée « Contrat de comportement »- L’évaluation du droit d’usage produit un résultat immuable avec un ensemble fixe de champs pertinents à l’exécution (palier d’édition, canal, mode de marque, exécution autorisée, mises à jour/support accordés).
- Une licence payante ne désactive jamais l’exécution installée : l’expiration la fait passer par la grâce puis par le repli perpétuel, en révoquant uniquement les mises à jour et le support.
- Une licence d’évaluation expirée restreint l’exécution et conserve le filigrane d’évaluation ; l’expiration de l’essai est appliquée strictement sans période de grâce.
- L’état « aucune licence » est fermé par défaut pour les chemins Enterprise, et la sortie émise porte un filigrane afin qu’un déploiement non sous licence ne soit jamais confondu avec un déploiement payant.
- Le refus de capacité est structuré : il porte la capacité requise, le pack requis (le cas échéant), les packs actifs et une URL d’information de mise à niveau.
- Les vérifications de droit d’usage et de capacité sont des opérations en mémoire à temps constant, sans E/S sur le chemin de requête.
Frontière de publication
Section intitulée « Frontière de publication »Cette page documente uniquement le comportement observable de l’extérieur et la surface d’API publique prise en charge. Les chemins d’espace de noms internes, les classes utilitaires, les tables de mécanismes, les noms de fichiers de runbook et les préfixes de ticket sont hors périmètre.
Repli Core
Section intitulée « Repli Core »NextPDF Core (Apache-2.0) n’a aucune surface de droit d’usage d’édition ou de capacité — ni barrière de fonctionnalité, ni évaluateur de droit d’usage, ni client de licence. Un hôte qui a besoin d’un comportement Apache-2.0 non sous licence utilise le moteur Core directement plutôt que le pipeline Enterprise. Core ne restreint pas, ne pose pas de filigrane pour la licence et n’évalue pas de droit d’usage.
Repli Pro
Section intitulée « Repli Pro »NextPDF Pro n’a pas non plus de surface de droit d’usage — aucune ; cette capacité n’a pas d’équivalent de palier Pro. La licence, le registre de capacités, la barrière de fonctionnalité et le contrat d’activation sont livrés dans le seul paquet nextpdf/enterprise.
Note sur la frontière Enterprise
Section intitulée « Note sur la frontière Enterprise »La procédure de vérification de l’enveloppe de licence, l’implémentation du contrôle de signature, la logique anti-abus et l’emplacement du code d’application sont décrits au seul niveau du comportement et ne sont pas reproduits sur la surface publique. Le contrat d’activation en ligne est documenté comme une enveloppe à réponse signée avec un nonce fourni par le client ; la procédure de vérification exacte ne fait pas partie du contrat public.
Frontière de déploiement
Section intitulée « Frontière de déploiement »NextPDF Enterprise résout le droit d’usage à partir d’une licence fournie localement, sans connexion obligatoire (phone-home) pour le fonctionnement ordinaire. Le client en ligne optionnel effectue des appels réseau uniquement lors de l’activation explicite, des vérifications de renouvellement et de battements de cœur au mieux ; les échecs de battement de cœur sont non fatals et ne bloquent jamais le traitement. L’opérateur possède le provisionnement des licences, la configuration d’activation/renouvellement et la politique de transport du client en ligne optionnel. NextPDF Enterprise n’applique pas un nombre de sièges contractuel à l’exécution.
Frontière de conformité légale
Section intitulée « Frontière de conformité légale »Les conditions de capacité et de sièges sont régies par ton contrat de licence, pas par une application à l’exécution. Cette documentation n’est pas un avis juridique ; consulte tes propres conseillers en conformité et juridiques pour tes obligations contractuelles et réglementaires.