Pular para o conteúdo
getnextpdf.com

Enterprise edição

Licenciamento

O NextPDF Enterprise resolve sua licença em um direito de uso de runtime: um nível de edição, um conjunto de capacidades e uma decisão de branding. Uma licença paga que tenha expirado continua em execução sob uma garantia de fallback perpétuo; apenas as atualizações e o suporte param. Esta página descreve o comportamento observável externamente da superfície de licenciamento, as restrições de capacidade e de recurso, e o contrato opcional de ativação online.

Esta capacidade é entregue no NextPDF Enterprise (nextpdf/enterprise) e é ativada com um envelope de licença de nível Enterprise. Uma implantação sem esse direito de uso não carrega as classes da capacidade. Compare as edições e obtenha uma licença.

O licenciamento é a superfície base do Enterprise: ele resolve todas as outras capacidades, então está sempre presente assim que o pacote Enterprise é instalado. Os recursos individuais a jusante são restringidos por códigos de capacidade — capacidades de nível de edição e pacotes complementares com expiração independente. A restrição relata a edição ativa, a validade, o estado do período de carência e o conjunto de pacotes ativos.

A superfície de licenciamento tem uma única tarefa: transformar uma licença em uma decisão sobre a qual uma aplicação host pode agir. Ela produz um resultado de direito de uso imutável com cinco campos que importam em tempo de execução — o nível de edição, o canal (pago ou de avaliação), o modo de branding, se a versão instalada pode ser executada e se as atualizações e o suporte estão incluídos.

As edições formam uma hierarquia estrita: o Enterprise inclui o Pro, o Pro inclui o Core. Uma verificação de capacidade, portanto, tem sucesso quando a edição licenciada está no nível mínimo da capacidade ou acima dele. Algumas capacidades não estão ligadas a uma edição de forma alguma — elas pertencem a pacotes complementares que têm sua própria expiração, independente do prazo da licença base.

A decisão de direito de uso distingue cinco estados discretos. Uma licença ativa tem acesso completo. Uma licença paga após o seu prazo, mas dentro da janela de carência, mantém o acesso completo e exibe um aviso de renovação iminente. Uma licença paga após a janela de carência entra em fallback perpétuo: a versão instalada continua em execução indefinidamente, mas as atualizações e o suporte deixam de estar incluídos. Uma licença de avaliação se comporta de forma diferente — quando expira, o runtime é restringido, porque a avaliação tem prazo limitado por design. Quando nenhuma licença está presente, o host resolve para um estado fail-closed e qualquer saída é marcada visualmente, de modo que uma implantação não licenciada nunca seja confundida com uma paga.

Uma contagem contratual de assentos não é imposta em tempo de execução. Não há telemetria nem phone-home obrigatório para a operação comum. O cliente online opcional existe apenas para ativação explícita, verificações de renovação e heartbeats de melhor esforço, e um host que nunca o invoca ainda recebe uma decisão de direito de uso completa a partir de uma licença fornecida localmente.

O modo de avaliação (trial) é uma política separada e mais restrita. Quando uma licença é marcada como trial, ela limita o throughput de processamento e aplica uma marca d’água de avaliação à saída gerada, de modo que o trabalho de produção em massa exija uma licença paga. A expiração do trial é imposta estritamente, sem período de carência.

A decisão de sustentação é que uma licença paga nunca desabilita o runtime instalado. Quando um prazo pago termina, o direito de uso passa para EntitlementStatus::PerpetualFallback — a versão instalada continua em execução, e apenas as atualizações futuras e o suporte são revogados. Essa garantia se mantém porque o direito de uso é uma decisão pura em memória sobre uma licença fornecida localmente, então nenhum phone-home e nenhuma interrupção de rede podem tirar um runtime pago de baixo de um cliente. O contrapeso são os padrões fail-closed: uma licença ausente ou uma avaliação expirada resolve para o nível Core e define brandingMode como uma marca d’água de avaliação. Assim, uma implantação não licenciada nunca é silenciosamente confundida com uma paga. Fallback perpétuo para o que você comprou, fail-closed para o que você não comprou — esse par é o que mantém o licenciamento amigável ao uso offline sem virar um sistema baseado na confiança.

Contexto de design: Open core, sem lock-in.

Terminal window
composer require nextpdf/enterprise:^3

Os pontos de integração suportados são o avaliador de direito de uso (de licença para resultado de direito de uso), a restrição de recursos em tempo de execução (isFeatureEnabled, requireFeature, hasCapability, requireCapability, isInGracePeriod, currentEdition, getActivePacks, trialPolicy), o registro de capacidades (resolução de rota para capacidade e o conjunto de capacidades disponíveis) e o cliente de licença opcional (activate, checkRenewal, heartbeat). Trate o avaliador de direito de uso como a única autoridade para decisões derivadas da licença; não tome decisões com base diretamente em campos brutos da licença.

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();
}
}
  • O fallback perpétuo não é um período de carência. A carência mantém as atualizações e o suporte ativos; o fallback mantém apenas o runtime ativo. Ambos mantêm a versão instalada em execução para licenças pagas.
  • A expiração da avaliação restringe o runtime. Diferentemente de uma licença paga, uma licença de avaliação expirada interrompe o runtime e mantém a marca d’água de avaliação.
  • A ausência de licença falha de forma fechada. Sem nenhuma licença configurada, o direito de uso é “sem licença”, o runtime é desabilitado para os caminhos do Enterprise e a saída emitida recebe marca d’água, de modo que o estado fique visível em logs e artefatos.
  • A expiração de um pacote é independente. Um pacote complementar pode expirar enquanto a licença base ainda está ativa; a capacidade que ele concedia então falha com um resultado distinto de “pacote expirado”, separado de “não licenciado”.
  • A recusa de capacidade é estruturada. Uma capacidade recusada carrega a capacidade exigida, o pacote exigido (se houver), os pacotes atuais e uma URL de informações de upgrade — apresente esses dados ao usuário em vez de um erro simples.

A avaliação de direito de uso e as verificações de capacidade são operações de tempo constante, em memória, contra uma licença analisada — sem I/O no caminho da requisição. O cliente online opcional realiza chamadas de rede apenas na ativação explícita, em verificações de renovação e em heartbeats; falhas de heartbeat não são fatais e nunca bloqueiam o processamento.

Esta página descreve intencionalmente apenas o comportamento observável. A verificação do envelope de licença, a checagem de assinatura, a lógica antiabuso e a localização do código de imposição estão fora do escopo e não são documentadas na superfície pública. Os operadores interagem com o contrato público do pacote e com o contrato de comportamento documentado. O contrato de ativação online usa um envelope de resposta assinado e um nonce fornecido pelo cliente, de modo que um host possa detectar uma resposta de ativação reproduzida (replay) ou adulterada; o procedimento exato de verificação não faz parte do contrato público.

  • A resposta de ativação online é transportada em um envelope assinado no estilo JWS — uma tripla de cabeçalho protegido / payload / assinatura no formato compacto e seguro para URL descrito pela RFC 7515 (JSON Web Signature), §3.1.
  • O material de assinatura é base64url, decodificado conforme a RFC 7515 §5.2.
  • O JSON canônico para a integridade do envelope segue o JSON Canonicalization Scheme, RFC 8785, §3.
  • A assinatura de ativação é uma assinatura Ed25519 verificada em relação a uma chave pública de 32 bytes, conforme a RFC 8032 (EdDSA), §5.1.
  • Os tokens de serviço de curta duração usados entre componentes carregam as claims registradas iss, aud, sub, exp e jti, e respeitam a regra not-after de exp da RFC 7519 (JWT), §4.1.4.
  • A avaliação de direito de uso produz um resultado imutável com um conjunto fixo de campos relevantes em tempo de execução (nível de edição, canal, modo de branding, runtime permitido, atualização/suporte incluídos).
  • Uma licença paga nunca desabilita o runtime instalado: a expiração o move pela carência e, em seguida, pelo fallback perpétuo, revogando apenas as atualizações e o suporte.
  • Uma licença de avaliação expirada restringe o runtime e mantém a marca d’água de avaliação; a expiração do trial é imposta estritamente, sem período de carência.
  • O estado “sem licença” é fail-closed para os caminhos do Enterprise, e a saída emitida recebe marca d’água, de modo que uma implantação não licenciada nunca seja confundida com uma paga.
  • A recusa de capacidade é estruturada: ela carrega a capacidade exigida, o pacote exigido (se houver), os pacotes ativos e uma URL de informações de upgrade.
  • As verificações de direito de uso e de capacidade são operações de tempo constante em memória, sem I/O no caminho da requisição.

Esta página documenta apenas o comportamento observável externamente e a superfície pública de API suportada. Caminhos de namespace internos, classes auxiliares, tabelas de mecanismos, nomes de arquivos de runbook e prefixos de tickets estão fora do escopo.

O NextPDF Core (Apache-2.0) não tem superfície de direito de uso de edição ou de capacidade — sem restrição de recursos, sem avaliador de direito de uso, sem cliente de licença. Um host que precisa do comportamento Apache-2.0 não licenciado usa o motor Core diretamente, em vez do pipeline do Enterprise. O Core não restringe, não aplica marca d’água para fins de licenciamento e não avalia direito de uso.

O NextPDF Pro também não tem superfície de direito de uso — nenhuma; essa capacidade não tem equivalente no nível Pro. O licenciamento, o registro de capacidades, a restrição de recursos e o contrato de ativação são entregues apenas no pacote nextpdf/enterprise.

O procedimento de verificação do envelope de licença, a implementação da checagem de assinatura, a lógica antiabuso e a localização do código de imposição são descritos apenas no nível de comportamento e não são reproduzidos na superfície pública. O contrato de ativação online é documentado como um envelope de resposta assinado com um nonce fornecido pelo cliente; o procedimento exato de verificação não faz parte do contrato público.

O NextPDF Enterprise resolve o direito de uso a partir de uma licença fornecida localmente, sem phone-home obrigatório para a operação comum. O cliente online opcional realiza chamadas de rede apenas na ativação explícita, em verificações de renovação e em heartbeats de melhor esforço; falhas de heartbeat não são fatais e nunca bloqueiam o processamento. O operador é dono do provisionamento da licença, da configuração de ativação/renovação e da política de transporte do cliente online opcional. O NextPDF Enterprise não impõe uma contagem contratual de assentos em tempo de execução.

Os termos de capacidade e de assentos são regidos pelo seu contrato de licença, não pela imposição em tempo de execução. Esta documentação não é uma opinião jurídica; consulte seus próprios assessores de conformidade e jurídicos sobre suas obrigações contratuais e regulatórias.