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