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