Intercambio de anotaciones nativo por C ABI de Linux

hpdf_document_execute_json_v1 expone annotations.export y annotations.import a través del descriptor de operaciones versionado y las interfaces de IO por callbacks existentes

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

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

La exportación escribe XFDF UTF-8 en OutputIO e informa 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 informa updated y annotationProfile, y luego adopta la revisión guardada solo después de que ambos callbacks de PDF y resultado tengan éxito

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

El JSON de capacidades anuncia annotationData con el perfil de tipos mapeado, el modo de importación append, datos incrustados, respuestas forward y objetos popup; appearanceImport es false

Los límites de anotaciones pueden reducir las capacidades de la operación y no pueden aumentarlas; MaxBytes también queda limitado por la memoria de la operación dividida por 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 anotaciones y la política DocMDP autenticada

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

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

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

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

Transporte de appearance de stamp estándar preserva streams Form reales y recursos acíclicos acotados de fuentes, imágenes y gráficos mediante typed XML 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, los objetos indirectos compartidos y las 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

Una importación FDF exitosa reporta annotationProfile="pdf-object-graph-v1" y un recuento updated entero; una operación de cero cambios preserva los bytes PDF confirmados exactos anteriores

Los annotationLimits de FDF también aceptan maxObjects; todos los límites siguen restringidos por la operación envolvente, con fallo y cancelación reteniendo las garantías transaccionales de callbacks existentes

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

Vea el comportamiento y los límites del grafo FDF y los límites FDF nativos

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 a través de 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 el recuento de anotaciones, las operaciones, los bytes de nombre y el almacenamiento de trabajo

El fallo o la cancelación preserva el contexto confirmado; los llamadores preparan sus propios sumideros de callback porque los bytes ya escritos no pueden retractarse