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