Intercambio de annotations vía C ABI nativo de Linux

hpdf_document_execute_json_v1 expone annotations.export y annotations.import a través del descriptor de operación versionado existente y las interfaces de IO de callback

Cargue primero el PDF en el contexto del documento; la importación de annotations usa InputIO para los bytes XFDF, OutputIO para el PDF guardado y ResultIO para los metadatos de resultado JSON

{"schemaVersion":1,"type":"annotations.export","format":"xfdf"}

La exportación escribe UTF-8 XFDF en OutputIO y reporta annotationCount, skippedAnnotationCount, decodedAttachmentBytes y outputBytes

{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
 "annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
 "maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}

La importación reporta updated y annotationProfile, y solo adopta la revisión guardada después de que ambos callbacks de PDF y de resultado tengan éxito

Las fallas de callbacks de entrada/salida, las fallas del callback de resultado y la cancelación preservan el contexto exacto confirmado previamente; los callbacks externos pueden haber recibido ya un stream parcial antes de una falla posterior de callback

El JSON de capability anuncia annotationData con el perfil de tipos mapeado, el modo de importación append, datos embebidos, replies hacia adelante y objetos popup; appearanceImport es false

Los límites de annotations pueden reducir las capacidades de la operación y no pueden aumentarlas; MaxBytes también se acota por la memoria de la operación dividida entre 64, el almacenamiento de trabajo por la mitad de la memoria de la operación, y los bytes de exportación por el límite de salida

La importación acepta el objeto signaturePolicy existente para CAdES, trust y verificación de timestamps, y aplica los permisos de annotations y la política DocMDP autenticada

Las importaciones ABI vacías retienen los bytes PDF confirmados y devuelven cero updates

Los destinos nombrados y explícitos locales y las acciones GoTo preservan referencias reales de página y coordenadas decimales exactas acotadas a través del codec compartido de annotations

El ELF SONAME y la versión de símbolos HOTPDF_1.0 permanecen sin cambios, y los consumidores C existentes siguen usando el mismo descriptor de operación público

Perfil mapeado y API nativa · C ABI de Linux · Operaciones de form-data

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

Operaciones de grafos de objetos FDF

{"schemaVersion":1,"type":"annotations.import","format":"fdf"}

Seleccione format="fdf" para grafos de anotaciones binarios a través del mismo descriptor de operación y los callbacks InputIO, OutputIO y ResultIO; annotations.export escribe bytes FDF en OutputIO

El perfil FDF preserva los recursos AP y RO suministrados, objetos indirectos compartidos y referencias de página GoTo locales contextuales; un NM de anotación coincidente en la misma página identifica un reemplazo, mientras que las anotaciones sin nombre o sin coincidencia se añaden

Un import FDF exitoso reporta annotationProfile="pdf-object-graph-v1" y un conteo entero updated; una operación de cero updates preserva los bytes PDF exactos confirmados por última vez

Los annotationLimits FDF también aceptan maxObjects; todos los límites siguen limitados por la operación que los encierra, con falla y cancelación reteniendo las garantías transaccionales de callback existentes

Las operaciones de solo anotaciones rechazan Fields no vacíos y Differences incrustados; los datos de acciones se transportan sin ejecutarlos

Para el comportamiento y límites del grafo FDF consulte el intercambio FDF de anotaciones nativo y para los límites FDF nativos THPDFFDFOptions

Eliminación de anotaciones

{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}

annotations.remove usa el documento actual o un PDF independiente suministrado por InputIO, y luego publica OutputIO de PDF y ResultIO de JSON antes de confirmar el contexto

El resultado reporta removed y annotationProfile="page-and-nm-removal-v1"; annotationLimits acota conteo de anotaciones, operaciones, bytes de nombres y almacenamiento de trabajo

La falla o cancelación preserva el contexto confirmado; los callers preparan sus propios sinks de callback porque los bytes ya escritos no pueden retraerse