Intercambio de anotaciones XFDF en Windows

Los file jobs de Windows y hpdf_document_execute_json_v1 exportan anotaciones mapeadas y añaden anotaciones XFDF a través del puente autenticado de transacciones de Windows

Los tipos y propiedades mapeados se comparten con el XFDF nativo de anotaciones, incluidos streams binarios acotados de adjuntos/sonido, rich contents Unicode, objetos popup y respuestas forward

File jobs

{
  "schemaVersion": 1, "type": "annotations.import", "format": "xfdf",
  "input": "source.pdf", "annotationInput": "annotations.xfdf",
  "output": "annotated.pdf", "password": "owner",
  "annotationLimits": {"maxBytes": 1048576, "maxAnnotations": 1000},
  "budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
    "timeMilliseconds": 60000, "resultBytes": 16777216}
}

annotations.export usa el mismo format, input, output y password opcional, escribiendo XFDF UTF-8 en lugar de un PDF; la importación exige annotationInput

La salida no debe ser un alias de la entrada PDF, de la entrada XFDF ni de los archivos trust/evidence suministrados, incluido un hard link existente; la publicación reserva un hermano temporal exclusivo, valida los resultados acotados, vacía y cierra la candidata y luego reemplaza atómicamente el objetivo

El fallo y la cancelación preservan un objetivo completo existente y eliminan el archivo temporal de la operación

Callbacks V1 originales

Use el hpdf_operation_v1 y el hpdf_io_v1 sin cambios de hotpdf_abi.h; el intercambio de anotaciones no requiere extensión de fuentes

Cargue primero el PDF de destino con hpdf_document_load_from_io; la importación lee XFDF de InputIO, escribe el PDF candidato en OutputIO y escribe JSON acotado en ResultIO; la exportación lee el PDF propio activo y escribe XFDF en OutputIO

Para entrada cifrada, repita la contraseña de operación usada para autenticar el PDF cargado; esta operación no retiene una contraseña implícita de la llamada de carga anterior

Solo los callbacks de PDF y resultado exitosos seguidos del checkpoint final de cancelación adoptan el nuevo documento y revisión propia; los callbacks de entrada, salida o resultado fallidos, el XML mal formado, los límites agotados y la cancelación retienen el contexto previo

Los callbacks pueden recibir bytes candidatos antes de un fallo posterior; publique un destino propiedad del llamador solo después de que HPDF_STATUS_OK devuelva

Política, límites y resultados

La importación autentica la integridad de firmas existente y el enlace del firmante ESS; la certificación P1 y P2 niega los cambios de anotaciones, mientras que P3 permite una revisión de anotaciones que retiene los bytes firmados originales

Las importaciones AES-256 R5/R6 preservan los parámetros de cifrado y el prefijo de revisión original; una importación vacía autentica la política y preserva los bytes actuales exactos

signaturePolicy acepta los requisitos Boolean existentes de trust/timestamp/revocación y las rutas de trust explícitas descritas en el intercambio de form data Windows

annotationLimits puede reducir maxBytes, maxAnnotations, maxNodes, maxDepth y maxWorkingBytes; los valores son números JSON enteros positivos y no pueden elevar los valores por defecto calculados

Los presupuestos de trabajo, salida, resultado, objetos y páginas también se aplican; las operaciones por callbacks aceptan elapsedMilliseconds como un plazo adicional más estricto

La exportación informa annotationCount, skippedAnnotationCount, decodedAttachmentBytes y outputBytes; la importación informa updated, outputBytes y annotationProfile igual a mapped-annotations-v1

Límites

Las capacidades anuncian el intercambio de anotaciones a través de file-job y execute-json-v1, con importación append-only, appearanceImport=false general y stampAppearanceImport=true acotado

El transporte estándar de appearances de stamps preserva streams Form reales y recursos acíclicos acotados de fuentes, imágenes y gráficos mediante typed XML base64

El transporte AP general, el reemplazo/eliminación de anotaciones, las acciones más amplias y los datos de anotaciones FDF siguen siendo trabajo aparte; las acciones remotas GoToR y los destinos locales usan sus perfiles acotados existentes

El ExecuteLoadedOperation genérico y el record antiguo de callbacks por handle de job son puntos de entrada separados; los llamadores Pascal pueden usar la clase de transacción explícita

Intercambio FDF binario

Los mismos file jobs y callbacks V1 aceptan format="fdf"; las importaciones de archivos leen FDF binario de annotationInput, y las exportaciones escriben FDF binario en la salida seleccionada

El perfil de grafo de objetos FDF preserva los recursos de appearance suministrados y los objetos indirectos compartidos, y soporta el reemplazo por un NM de anotación no vacío coincidente en la misma página

La importación FDF devuelve annotationProfile="pdf-object-graph-v1"; updated cuenta los cambios reales de anotaciones, y una importación equivalente preserva la revisión actual exacta

FDF añade maxObjects a los controles annotationLimits de enteros positivos y usa la política autenticada existente, la publicación acotada de candidatos y las reglas de propiedad de callbacks

Los llamadores Pascal pueden usar THPDFWindowsFormDataTransaction.ExportAnnotationsFDF e ImportAnnotationsFDF; ChangedAnnotations reporta los cambios reales para este perfil

Los Fields FDF no vacíos y las Differences incrustadas requieren manejo separado y hacen fallar las operaciones de solo anotaciones antes de la publicación

La eliminación de anotaciones en Windows ofrece una transacción preparada separada y un job JSON para identidades exactas de página-y-NM sin cambiar la semántica de adición XFDF mapeada