Intercambio nativo de annotations XFDF

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

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

Perfil mapeado de annotations

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, contenidos Unicode, autor, nombre de la annotation, 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 líneas guía, propiedades de FreeText intent/callout/fringe/texto por defecto, estado de repetición de Redact, acciones de link URI o Named y los destinos locales nombrados o explícitos y las acciones GoTo

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

FileAttachment prefiere exportar el nombre de archivo Unicode y preserva los metadatos de archivos externos incluso cuando no existe stream embebido; los datos de archivos embebidos y de sonido se decodifican a base64 canónico acotado y se importan como streams indirectos reales, incluyendo streams vacíos

Las annotations Popup se representan como elementos popup anidados y se importan con links indirectos de Parent, Popup y página; los replies se resuelven en una segunda pasada contra los nombres de annotations existentes y recién añadidos, incluyendo referencias hacia adelante

Los contenidos rich preservan el namespace XHTML, el texto mixto ordenado y los bindings de namespace heredados

Transacciones y permisos

Las importaciones añaden annotations y rechazan nombres duplicados, destinos de reply ambiguos o ausentes y valores mapeados inválidos antes de la publicación

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

La exportación exige permiso de extracción y la importación exige permiso de annotations; 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 annotations, mientras que P3 permite una revisión de annotations que preserva los bytes firmados originales

Límites

THPDFHeadlessXFDFOptions acota los bytes de entrada/salida, el conteo de annotations, 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 estar dentro de un valor absoluto de un millón, con restricciones adicionales para conteos de coordenadas, opacidad, tamaños de muestra y otros valores tipados

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

Límites de la operación

El perfil no transporta streams de apariencias AP arbitrarios, diccionarios personalizados de annotations, reemplazo/eliminación de annotations, destinos remotos, acciones arbitrarias ni datos de annotations FDF

La síntesis y el renderizado de apariencias de annotations son operaciones separadas; importar propiedades geométricas y de texto no crea un stream AP

Los demás subtipos de annotations fuente se omiten durante la exportación y se cuentan en el resultado; los valores mapeados seleccionados malformados 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 annotations basadas en callbacks, y los file jobs y callbacks V1 de Windows exponen el mismo intercambio mapeado de annotations

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

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 borra

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