Operações JSON e callback de remoção de anotações

Os entry points de operação do Windows e da C ABI nativa do Linux aceitam annotations.remove; o JSON de request seleciona anotações, enquanto os bytes do PDF viajam por IO de callback em vez de estarem embutidos no JSON

{
  "schemaVersion": 1,
  "type": "annotations.remove",
  "annotations": [{"page": 0, "name": "review-note"}],
  "annotationLimits": {
    "maxAnnotations": 4096,
    "maxOperations": 1000000,
    "maxNameBytes": 1048576,
    "maxWorkingBytes": 33554432
  }
}

annotations precisa ser um array de objetos contendo um page inteiro dentro do documento de entrada real e uma string name não vazia; nomes correspondem ao Unicode NM decodificado exatamente

Um array vazio ou identidades válidas sem correspondência é um no-op; seletores duplicados, nomes selecionados ambíguos, posse de anotações malformada e seleção de Widget falham

Ciclo de vida de entrada e publicação

Sem IO de entrada, a remoção opera no documento commitado atual do handle; IO de entrada explícito fornece um PDF independente e é staged privadamente em vez de substituir o contexto atual antes de a operação ter sucesso

Forneça password quando a autenticação da entrada criptografada exigir; permissão real de anotações e política do documento assinado continuam se aplicando

IO de saída de PDF e IO de resultado são sinks separados; o engine prepara o candidate, publica o PDF dele, publica o resultado JSON delimitado, checa cancelamento e só então substitui o documento atual do handle

Uma falha de leitura, escrita, publicação de resultado, política, budget ou cancelamento retém o contexto commitado anterior e permite retry normal naquele handle

Um sink de callback já pode conter bytes quando uma escrita posterior, callback de resultado ou cancelamento falha; rollback de contexto não pode retrair esses bytes externos, então callers precisam stagear e publicar seus próprios sinks transacionalmente

Remoção repetida contra o resultado commitado retorna zero e publica a revisão atual exata; compare a saída de callbacks só depois de checar o status da operação

Resultado e limites

Um resultado bem-sucedido tem schemaVersion: 1, statusCode: 0, status: "ok", removed, mediaType: "application/pdf" e annotationProfile: "page-and-nm-removal-v1"

removed inclui cascatas de popups e replies, contando cada anotação uma vez mesmo quando dependências formam um ciclo

annotationLimits abaixa as capacidades positivas efetivas descritas por THPDFHeadlessAnnotationRemovalOptions; limites de memória de operação, objetos, páginas, saída, resultado e tempo decorrido permanecem independentes

signaturePolicy opcional configura a política CMS autenticada existente, incluindo CAdES, timestamps e requisitos de trust exigidos suportados pelo entry point da operação

Remoções reais estão sujeitas a permissões de anotações AES e à política autenticada de certificação P1/P2/P3; um check de senha bem-sucedido ou uma mensagem de erro não assinada não é evidência de permissão nem de certificação confiável

Em caso de falha, chegue o status retornado da operação e o resultado estruturado de erro disponível; um sink de resultado com falha pode impedir a entrega de um documento JSON de erro completo

Veja semântica nativa de remoção e file jobs Windows comuns