Intercambio nativo de anotaciones XFDF

HPDFHeadlessXFDF exporta las anotaciones mapeadas de un grafo PDF nativo cargado y prepara importaciones de anotaciones XFDF como una revisión incremental independiente

Use HPDFExportHeadlessAnnotationsXFDF para los bytes XML UTF-8 y SaveAnnotationsXFDFToFile para añadir anotaciones a un documento existente sin cambiar el grafo de origen cargado

Perfil de anotaciones mapeado

El perfil mapea Text, FreeText, Line, Square, Circle, Polygon, PolyLine, Highlight, Underline, StrikeOut, Squiggly, Stamp, Ink, Caret, FileAttachment, Sound, Redact y Link

Los valores comunes incluyen página, rectángulo, contents Unicode, autor, nombre de anotación, fechas, subject, flags, opacidad, colores y propiedades de borde soportadas

Los valores específicos por tipo incluyen coordenadas de cuadriláteros, vértices, gestos de ink, finales de línea y geometría de leaders, propiedades FreeText de intent/callout/fringe/texto por defecto, estado repeat de Redact, acciones de link URI o Named, acciones remotas GoToR y destinos locales con nombre o explícitos y acciones GoTo

Los arrays de componentes de color vacíos preservan colores transparentes; los colores de origen Gray y CMYK se mapean a valores XFDF RGB, y los componentes RGB se cuantizan a la representación hexadecimal de seis dígitos del formato

FileAttachment prefiere el nombre de archivo Unicode en la exportación y preserva los metadatos de archivos externos incluso cuando no existe stream incrustado; los datos de archivos incrustados y de sonido se decodifican a base64 canónico acotado y se importan como streams indirectos reales, incluidos streams vacíos

Las anotaciones Popup se representan como elementos popup anidados y se importan con enlaces indirectos Parent, Popup y de página; las respuestas se resuelven en una segunda pasada contra los nombres de anotaciones existentes y recién añadidas, incluidas las referencias forward

Los rich contents preservan el namespace XHTML, el texto mixto ordenado y los enlaces de namespaces heredados

Transacciones y permisos

Las importaciones añaden anotaciones y rechazan nombres duplicados, objetivos de respuesta ambiguos o ausentes y valores mapeados inválidos antes de publicar

Una importación fallida o cancelada preserva el archivo de destino y el grafo de origen cargado; una importación exitosa también deja el origen cargado sin cambios, de modo que cargue el archivo guardado cuando quiera adoptar su nueva revisión

La exportación exige permiso de extracción y la importación permiso de anotaciones; la seguridad AES-256 R5/R6 permanece en la revisión guardada

La política de certificación real se autentica a través del workflow nativo de firmas: P1 y P2 impiden cambios de anotaciones, mientras que P3 permite una revisión de anotaciones que preserva los bytes firmados originales

Bounds

THPDFHeadlessXFDFOptions acota los bytes de entrada/salida, el recuento de anotaciones, los nodos de grafo y XML, la profundidad y el almacenamiento de trabajo, con cancelación cooperativa

Los números mapeados deben ser finitos y dentro de un valor absoluto de un millón, con restricciones adicionales para recuentos de coordenadas, opacidad, tamaños de muestras y demás valores tipados

La admisión XML de todo el documento comprueba encoding, namespaces, atributos duplicados, entidades y estructura completa antes del mapeo de anotaciones; el procesamiento de DTD y entidades externas está deshabilitado

Límites de la operación

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 de anotaciones, los diccionarios personalizados de anotaciones, el reemplazo/eliminación de anotaciones, las acciones arbitrarias y los datos de anotaciones FDF siguen siendo trabajo aparte

La síntesis y el rendering de appearances de anotaciones son operaciones separadas; importar propiedades geométricas y de texto no crea un stream AP

Los demás subtipos de anotaciones de origen se saltan durante la exportación y se cuentan en el resultado; los valores mapeados seleccionados mal formados hacen fallar la operación sin XML parcial devuelto

La API nativa Pascal funciona en Windows y Linux; el C ABI versionado de Linux también expone operaciones JSON de anotaciones por callbacks, y los file jobs y callbacks V1 de Windows exponen el mismo intercambio mapeado de anotaciones

Eliminación explícita de anotaciones

La eliminación de anotaciones por página y nombre es una operación separada; omitir una anotación del FDF o XFDF importado no la elimina

El borrado del árbol de campos de widgets y el borrado seguro requieren operaciones separadas; la eliminación incremental retiene los bytes PDF anteriores