Zum Inhalt springen
getnextpdf.com

Enterprise Edition

Lizenzierung

NextPDF Enterprise löst Ihre Lizenz in eine Laufzeitberechtigung auf: eine Editionsstufe, einen Satz von Fähigkeiten und eine Branding-Entscheidung. Eine bezahlte Lizenz, die abgelaufen ist, läuft unter einer Garantie des unbefristeten Rückfalls weiter; nur Updates und Support enden. Diese Seite beschreibt das extern beobachtbare Verhalten der Lizenzierungsoberfläche, die Capability- und Feature-Gates sowie den optionalen Online-Aktivierungsvertrag.

Diese Fähigkeit wird in NextPDF Enterprise (nextpdf/enterprise) ausgeliefert und aktiviert sich mit einem Lizenzumschlag der Enterprise-Stufe. Ein Deployment ohne diese Berechtigung lädt die Klassen der Fähigkeit nicht. Editionen vergleichen und Lizenz erwerben.

Die Lizenzierung ist die grundlegende Enterprise-Oberfläche: Sie löst jede andere Fähigkeit auf und ist daher immer vorhanden, sobald das Enterprise-Paket installiert ist. Einzelne nachgelagerte Funktionen werden über Capability-Codes gegated — Fähigkeiten der Editionsstufe und unabhängig ablaufende Add-on-Packs. Das Gate meldet die aktive Edition, die Gültigkeit, den Zustand des Kulanzzeitraums und den Satz aktiver Packs.

Die Lizenzierungsoberfläche hat eine Aufgabe: eine Lizenz in eine Entscheidung umzuwandeln, auf die eine Host-Anwendung reagieren kann. Sie erzeugt ein unveränderliches Berechtigungsergebnis mit fünf Feldern, die zur Laufzeit relevant sind — die Editionsstufe, den Kanal (bezahlt oder Evaluierung), den Branding-Modus, ob die installierte Version laufen darf und ob Anspruch auf Updates und Support besteht.

Editionen bilden eine strikte Hierarchie: Enterprise enthält Pro, Pro enthält Core. Eine Capability-Prüfung ist daher erfolgreich, wenn die lizenzierte Edition auf oder über der Mindeststufe der Fähigkeit liegt. Manche Fähigkeiten sind überhaupt nicht an eine Edition gebunden — sie gehören zu Add-on-Packs, die ihren eigenen Ablauf tragen, unabhängig von der Laufzeit der Basislizenz.

Die Berechtigungsentscheidung unterscheidet fünf diskrete Zustände. Eine aktive Lizenz hat vollen Zugriff. Eine bezahlte Lizenz nach Ablauf ihrer Laufzeit, aber innerhalb ihres Kulanzfensters behält den vollen Zugriff und zeigt eine „bald verlängern“-Warnung an. Eine bezahlte Lizenz nach Ablauf ihres Kulanzfensters tritt in den unbefristeten Rückfall ein: Die installierte Version läuft unbegrenzt weiter, aber Anspruch auf Updates und Support besteht nicht mehr. Eine Evaluierungslizenz verhält sich anders — wenn sie abläuft, wird die Laufzeit eingeschränkt, weil die Evaluierung absichtlich zeitlich begrenzt ist. Wenn keine Lizenz vorhanden ist, löst der Host in einen Fail-closed-Zustand auf, und jegliche Ausgabe wird sichtbar markiert, sodass ein unlizenziertes Deployment niemals mit einem bezahlten verwechselt wird.

Eine vertragliche Anzahl von Sitzen wird zur Laufzeit nicht durchgesetzt. Es gibt keine Telemetrie und kein verpflichtendes Phone-home für den gewöhnlichen Betrieb. Der optionale Online-Client existiert nur für explizite Aktivierung, Verlängerungsprüfungen und Best-Effort-Heartbeats, und ein Host, der ihn nie aufruft, erhält dennoch eine vollständige Berechtigungsentscheidung aus einer lokal bereitgestellten Lizenz.

Der Testmodus ist eine separate, engere Richtlinie. Wenn eine Lizenz als Test markiert ist, begrenzt sie den Verarbeitungsdurchsatz und wendet ein Evaluierungs-Wasserzeichen auf die erzeugte Ausgabe an, sodass für Massenproduktionsarbeit eine bezahlte Lizenz erforderlich ist. Der Testablauf wird strikt durchgesetzt, ohne Kulanzzeitraum.

Die tragende Entscheidung ist, dass eine bezahlte Lizenz niemals die installierte Laufzeit deaktiviert. Wenn eine bezahlte Laufzeit endet, wechselt die Berechtigung zu EntitlementStatus::PerpetualFallback — die installierte Version läuft weiter, und nur künftige Updates und Support werden entzogen. Diese Garantie hält, weil die Berechtigung eine reine speicherinterne Entscheidung über eine lokal bereitgestellte Lizenz ist, sodass weder ein Phone-home noch ein Netzwerkausfall einem Kunden eine bezahlte Laufzeit entziehen kann. Das Gegengewicht sind Fail-closed-Voreinstellungen: Eine fehlende Lizenz oder eine abgelaufene Evaluierung löst auf die Core-Stufe auf und setzt brandingMode auf ein Evaluierungs-Wasserzeichen. So wird ein unlizenziertes Deployment niemals stillschweigend mit einem bezahlten verwechselt. Unbefristeter Rückfall für das, was Sie gekauft haben, Fail-closed für das, was Sie nicht gekauft haben — diese Paarung hält die Lizenzierung offline-freundlich, ohne zu einem reinen Vertrauenssystem zu werden.

Design-Hintergrund: Open Core, kein Lock-in.

Terminal-Fenster
composer require nextpdf/enterprise:^3

Die unterstützten Integrationspunkte sind der Berechtigungs-Evaluator (Lizenz zu Berechtigungsergebnis), das Laufzeit-Feature-Gate (isFeatureEnabled, requireFeature, hasCapability, requireCapability, isInGracePeriod, currentEdition, getActivePacks, trialPolicy), die Capability-Registry (Auflösung von Route zu Capability und der Satz verfügbarer Capabilities) und der optionale Lizenz-Client (activate, checkRenewal, heartbeat). Behandeln Sie den Berechtigungs-Evaluator als die einzige Autorität für lizenzabgeleitete Entscheidungen; verzweigen Sie nicht direkt auf rohen Lizenzfeldern.

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();
}
}
  • Der unbefristete Rückfall ist kein Kulanzzeitraum. Die Kulanz hält Updates und Support aktiv; der Rückfall hält nur die Laufzeit aktiv. Beide halten die installierte Version für bezahlte Lizenzen am Laufen.
  • Der Evaluierungsablauf schränkt die Laufzeit ein. Anders als eine bezahlte Lizenz stoppt eine abgelaufene Evaluierungslizenz die Laufzeit und behält das Evaluierungs-Wasserzeichen.
  • Keine Lizenz scheitert fail-closed. Ohne konfigurierte Lizenz ist die Berechtigung „keine Lizenz“, die Laufzeit ist für Enterprise-Pfade deaktiviert, und die erzeugte Ausgabe wird mit einem Wasserzeichen versehen, sodass der Zustand in Logs und Artefakten sichtbar ist.
  • Der Pack-Ablauf ist unabhängig. Ein Add-on-Pack kann ablaufen, während die Basislizenz noch aktiv ist; die von ihm gewährte Fähigkeit scheitert dann mit einem eigenständigen „Pack abgelaufen“-Ergebnis, getrennt von „nicht lizenziert“.
  • Die Capability-Verweigerung ist strukturiert. Eine verweigerte Capability trägt die erforderliche Capability, das erforderliche Pack (falls vorhanden), die aktuellen Packs und eine Upgrade-Info-URL — zeigen Sie diese dem Nutzer an, statt eines nackten Fehlers.

Die Berechtigungsauswertung und Capability-Prüfungen sind konstante, speicherinterne Operationen gegen eine geparste Lizenz — keine I/O auf dem Request-Pfad. Der optionale Online-Client führt Netzwerkaufrufe nur bei expliziter Aktivierung, Verlängerungsprüfungen und Heartbeats aus; Heartbeat-Fehler sind nicht fatal und blockieren niemals die Verarbeitung.

Diese Seite beschreibt absichtlich nur beobachtbares Verhalten. Die Verifizierung des Lizenzumschlags, die Signaturprüfung, die Anti-Missbrauchs-Logik und der Speicherort des Durchsetzungscodes liegen außerhalb des Umfangs und werden auf der öffentlichen Oberfläche nicht dokumentiert. Betreiber interagieren mit dem öffentlichen Paketvertrag und dem dokumentierten Verhaltensvertrag. Der Online-Aktivierungsvertrag verwendet einen Umschlag mit signierter Antwort und eine vom Client bereitgestellte Nonce, sodass ein Host eine wiederholte oder manipulierte Aktivierungsantwort erkennen kann; das genaue Verifizierungsverfahren ist nicht Teil des öffentlichen Vertrags.

  • Die Online-Aktivierungsantwort wird in einem JWS-artigen signierten Umschlag transportiert — einem Tripel aus Protected-Header / Payload / Signatur in der kompakten, URL-sicheren Form, die in RFC 7515 (JSON Web Signature) §3.1 beschrieben ist.
  • Das Signaturmaterial ist base64url, dekodiert gemäß RFC 7515 §5.2.
  • Kanonisches JSON für die Umschlagintegrität folgt dem JSON Canonicalization Scheme, RFC 8785, §3.
  • Die Aktivierungssignatur ist eine Ed25519-Signatur, verifiziert gegen einen 32-Byte-Public-Key, gemäß RFC 8032 (EdDSA) §5.1.
  • Kurzlebige Service-Token, die zwischen Komponenten verwendet werden, tragen die registrierten Claims iss, aud, sub, exp und jti und beachten die exp-Not-after-Regel von RFC 7519 (JWT) §4.1.4.
  • Die Berechtigungsauswertung erzeugt ein unveränderliches Ergebnis mit einem festen Satz laufzeitrelevanter Felder (Editionsstufe, Kanal, Branding-Modus, Laufzeit-erlaubt, Update-/Support-Anspruch).
  • Eine bezahlte Lizenz deaktiviert niemals die installierte Laufzeit: Der Ablauf bewegt sie durch die Kulanz und anschließend in den unbefristeten Rückfall und entzieht nur Updates und Support.
  • Eine abgelaufene Evaluierungslizenz schränkt die Laufzeit ein und behält das Evaluierungs-Wasserzeichen; der Testablauf wird strikt ohne Kulanzzeitraum durchgesetzt.
  • Der „keine Lizenz“-Zustand ist für Enterprise-Pfade fail-closed, und die erzeugte Ausgabe wird mit einem Wasserzeichen versehen, sodass ein unlizenziertes Deployment niemals mit einem bezahlten verwechselt wird.
  • Die Capability-Verweigerung ist strukturiert: Sie trägt die erforderliche Capability, das erforderliche Pack (falls vorhanden), die aktiven Packs und eine Upgrade-Info-URL.
  • Berechtigungs- und Capability-Prüfungen sind konstante, speicherinterne Operationen ohne I/O auf dem Request-Pfad.

Diese Seite dokumentiert ausschließlich extern beobachtbares Verhalten und die unterstützte öffentliche API-Oberfläche. Interne Namespace-Pfade, Hilfsklassen, Mechanismustabellen, Runbook-Dateinamen und Ticket-Präfixe liegen außerhalb des Umfangs.

NextPDF Core (Apache-2.0) hat keine Editions- oder Capability-Berechtigungsoberfläche — kein Feature-Gate, keinen Berechtigungs-Evaluator, keinen Lizenz-Client. Ein Host, der unlizenziertes Apache-2.0-Verhalten benötigt, verwendet die Core-Engine direkt statt der Enterprise-Pipeline. Core gatet nicht, versieht nicht für die Lizenzierung mit einem Wasserzeichen und wertet keine Berechtigung aus.

NextPDF Pro hat ebenfalls keine Berechtigungsoberfläche — keine; diese Fähigkeit hat kein Äquivalent in der Pro-Stufe. Lizenzierung, die Capability-Registry, das Feature-Gate und der Aktivierungsvertrag werden ausschließlich im Paket nextpdf/enterprise ausgeliefert.

Das Verifizierungsverfahren des Lizenzumschlags, die Implementierung der Signaturprüfung, die Anti-Missbrauchs-Logik und der Speicherort des Durchsetzungscodes werden ausschließlich auf Verhaltensebene beschrieben und nicht auf der öffentlichen Oberfläche wiedergegeben. Der Online-Aktivierungsvertrag ist als Umschlag mit signierter Antwort und einer vom Client bereitgestellten Nonce dokumentiert; das genaue Verifizierungsverfahren ist nicht Teil des öffentlichen Vertrags.

NextPDF Enterprise löst die Berechtigung aus einer lokal bereitgestellten Lizenz ohne verpflichtendes Phone-home für den gewöhnlichen Betrieb auf. Der optionale Online-Client führt Netzwerkaufrufe nur bei expliziter Aktivierung, Verlängerungsprüfungen und Best-Effort-Heartbeats aus; Heartbeat-Fehler sind nicht fatal und blockieren niemals die Verarbeitung. Der Betreiber besitzt die Lizenzbereitstellung, die Aktivierungs-/Verlängerungskonfiguration und die Transportrichtlinie für den optionalen Online-Client. NextPDF Enterprise setzt zur Laufzeit keine vertragliche Anzahl von Sitzen durch.

Kapazitäts- und Sitzbedingungen werden durch Ihren Lizenzvertrag geregelt, nicht durch Laufzeitdurchsetzung. Diese Dokumentation ist kein Rechtsgutachten; konsultieren Sie Ihre eigenen Compliance- und Rechtsberater zu Ihren vertraglichen und regulatorischen Pflichten.