Annotation removal JSON and callback operations

De operation-entry points van de Windows- en native Linux C ABI accepteren annotations.remove; request-JSON selecteert annotaties, terwijl PDF-bytes via callback-IO reizen in plaats van in de JSON te zitten

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

annotations moet een array van objecten zijn met een integer page binnen het echte invoerdocument en een niet-lege string name; namen matchen decoded Unicode NM exact

Een lege array of niet-matchende geldige identiteiten is een no-op; gedupliceerde selectors, ambigue geselecteerde namen, misvormd annotatie-eigenaarschap en Widget-selectie falen

Invoer- en publicatielevenscyclus

Zonder input-IO opereert removal op het huidige gecommitte document van de handle; expliciete input-IO levert een onafhankelijke PDF aan en wordt privé gestaged in plaats van de huidige context te vervangen vóór de operatie slaagt

Geef password op wanneer authenticatie van versleutelde invoer dat vraagt; echte annotation-permission en signed-document-beleid blijven gelden

PDF-output-IO en resultaat-IO zijn aparte sinks; de engine bereidt de candidate voor, publiceert diens PDF, publiceert het begrensde JSON-resultaat, checkt annulering, en pas daarna vervangt hij het huidige document van de handle

Een lees-, schrijf-, resultaatpublicatie-, beleids-, budget- of annuleringsfout behoudt de vorige gecommitte context en staat een normale retry op die handle toe

Een callback-sink kan al bytes bevatten wanneer een latere write, result-callback of annulering faalt; context-rollback kan die externe bytes niet terugdraaien, dus callers moeten hun eigen sinks transactioneel stagen en publiceren

Herhaalde removal tegen het gecommitte resultaat geeft nul terug en publiceert de exacte huidige revisie; vergelijk callback-uitvoer pas na het checken van de status van de operatie

Resultaat en limieten

Een geslaagd resultaat heeft schemaVersion: 1, statusCode: 0, status: "ok", removed, mediaType: "application/pdf" en annotationProfile: "page-and-nm-removal-v1"

removed omvat popup- en reply-cascades en telt elke annotatie een keer, zelfs wanneer afhankelijkheden een cyclus vormen

annotationLimits verlaagt de effectieve positieve capaciteiten die THPDFHeadlessAnnotationRemovalOptions beschrijft; limieten voor operatiegeheugen, objecten, pagina's, uitvoer, resultaat en verstreken tijd blijven onafhankelijk

Optionele signaturePolicy configureert het bestaande geauthenticeerde CMS-beleid, inclusief vereiste CAdES, timestamps en trust-eisen die de operation-entry point ondersteunt

Echte verwijderingen vallen onder AES annotation-permissions en geauthenticeerd certification P1/P2/P3-beleid; een geslaagde password-check of een unsigned foutmelding is geen bewijs van permission of vertrouwde certificering

Check bij falen de teruggegeven operation-status en het beschikbare gestructureerde foutresultaat; een gefaalde result-sink kan de aflevering van een compleet fout-JSON-document verhinderen

Zie native removal-semantics en gewone Windows file-jobs