Operaciones JSON y callback de eliminación de anotaciones

Los puntos de entrada de operaciones C ABI de Windows y del Linux nativo aceptan annotations.remove; el JSON de solicitud selecciona anotaciones, mientras que los bytes del PDF viajan por IO de callback en lugar de ir incrustados en el JSON

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

annotations debe ser un array de objetos que contengan un page entero dentro del documento de entrada real y un name de cadena no vacío; los nombres coinciden exactamente con el NM Unicode decodificado

Un array vacío o identidades válidas sin coincidencia es una operación sin efecto; selectores duplicados, nombres seleccionados ambiguos, propiedad de anotaciones mal formada y selección de widgets fallan

Ciclo de vida de entrada y publicación

Sin IO de entrada, la eliminación opera sobre el documento confirmado actual del handle; la IO de entrada explícita suministra un PDF independiente y se prepara en privado en lugar de reemplazar el contexto actual antes de que la operación tenga éxito

Suministre password cuando la autenticación de entrada cifrada lo requiera; el permiso real de anotación y la política de documentos firmados siguen aplicándose

La IO de salida PDF y la IO de resultado son sumideros separados; el motor prepara el candidato, publica su PDF, publica el resultado JSON acotado, comprueba la cancelación y solo entonces reemplaza el documento actual del handle

Un fallo de lectura, escritura, publicación de resultado, política, presupuesto o cancelación retiene el contexto confirmado anterior y permite un reintento normal en ese handle

Un sumidero de callback ya puede contener bytes cuando una escritura posterior, un callback de resultado o una cancelación fallan; el rollback de contexto no puede retractar esos bytes externos, así que los llamantes deben preparar y publicar sus sumideros de forma transaccional

La eliminación repetida contra el resultado confirmado devuelve cero y publica la revisión actual exacta; compare la salida del callback solo después de comprobar el estado de la operación

Resultado y límites

Un resultado exitoso tiene schemaVersion: 1, statusCode: 0, status: "ok", removed, mediaType: "application/pdf" y annotationProfile: "page-and-nm-removal-v1"

removed incluye cascadas de popups y respuestas, contando cada anotación una vez incluso cuando las dependencias forman un ciclo

annotationLimits reduce las capacidades positivas efectivas descritas por THPDFHeadlessAnnotationRemovalOptions; los límites de memoria de operación, objetos, páginas, salida, resultado y tiempo transcurrido permanecen independientes

La signaturePolicy opcional configura la política CMS autenticada existente, incluidos los requisitos de CAdES, marcas de tiempo y confianza soportados por el punto de entrada de la operación

Las eliminaciones reales están sujetas a permisos de anotación AES y a la política autenticada de certificación P1/P2/P3; una comprobación de contraseña exitosa o un mensaje de error sin firmar no son evidencia de permiso ni de certificación de confianza

Ante un fallo, compruebe el estado de operación devuelto y el resultado de error estructurado disponible; un sumidero de resultado fallido puede impedir la entrega de un documento JSON de error completo

Vea la semántica de eliminación nativa y los jobs de archivo Windows ordinarios