Échange d'annotations via l'ABI C Linux native

hpdf_document_execute_json_v1 expose annotations.export et annotations.import via le descripteur d'opération versionné et les interfaces IO de callbacks existants

Chargez d'abord le PDF dans le contexte du document ; l'import d'annotations utilise InputIO pour les octets XFDF, OutputIO pour le PDF enregistré et ResultIO pour les métadonnées de résultat JSON

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

L'export écrit du XFDF UTF-8 vers OutputIO et rapporte annotationCount, skippedAnnotationCount, decodedAttachmentBytes et outputBytes

{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
 "annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
 "maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}

L'import rapporte updated et annotationProfile, puis n'adopte la révision enregistrée qu'après le succès des callbacks PDF et de résultat

Les échecs de callbacks d'entrée/sortie, les échecs de callbacks de résultat et l'annulation préservent le contexte exact précédemment commis ; des callbacks externes peuvent déjà avoir reçu un flux partiel avant l'échec d'un callback ultérieur

Le JSON de capacités annonce annotationData avec le profil de types mappé, le mode d'import par ajout, les données embarquées, les réponses anticipées et les objets popup ; appearanceImport vaut false

Les limites d'annotations peuvent réduire les capacités de l'opération sans pouvoir les augmenter ; MaxBytes est aussi plafonné par la mémoire d'opération divisée par 64, le stockage de travail par la moitié de la mémoire d'opération, et les octets d'export par la limite de sortie

L'import accepte l'objet signaturePolicy existant pour les réglages de vérification CAdES, de confiance et d'horodatage, et applique les permissions d'annotations et la politique DocMDP authentifiée

Les imports ABI vides conservent les octets PDF commis tout en retournant zéro mise à jour

Les destinations nommées et explicites locales et actions GoTo préservent les références de pages réelles et les coordonnées décimales exactes bornées via le codec d'annotations partagé

Le SONAME ELF et la version de symboles HOTPDF_1.0 restent inchangés, et les consommateurs C existants continuent d'utiliser le même descripteur d'opération public

Profil mappé et API native · ABI C Linux · Opérations de données de formulaire

Le transport d'apparence de tampon standard préserve les flux Form réels et des ressources bornées acycliques de polices, d'images et de graphismes via un XML typé base64

Opérations de graphes d'objets FDF

{"schemaVersion":1,"type":"annotations.import","format":"fdf"}

Sélectionnez format="fdf" pour les graphes d'annotations binaires via le même descripteur d'opération et les callbacks InputIO, OutputIO et ResultIO ; annotations.export écrit les octets FDF dans OutputIO

Le profil FDF préserve les ressources AP et RO fournies, les objets indirects partagés et les références de pages GoTo locales contextuelles ; un NM d'annotation correspondant sur la même page identifie un remplacement, tandis que les annotations sans nom ou sans correspondance sont ajoutées

Un import FDF réussi rapporte annotationProfile="pdf-object-graph-v1" et un compteur entier updated ; une opération sans mise à jour préserve les derniers octets PDF commités exacts

Les annotationLimits FDF acceptent aussi maxObjects ; toutes les limites restent contraintes par l'opération englobante, avec échec et annulation conservant les garanties transactionnelles de callbacks existantes

Les opérations réservées aux annotations rejettent des Fields non vides et des Differences embarquées ; les données d'actions sont transportées sans être exécutées

Voir le comportement et les limites des graphes FDF et les limites FDF natives

Suppression d'annotations

{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}

annotations.remove utilise le document courant ou un PDF indépendant fourni via InputIO, puis publie un PDF OutputIO et un JSON ResultIO avant de committer le contexte

Le résultat rapporte removed et annotationProfile="page-and-nm-removal-v1" ; annotationLimits borne le nombre d'annotations, les opérations, les octets de noms et le stockage de travail

Un échec ou une annulation préserve le contexte commité ; les appelants installent eux-mêmes leurs sinks de callbacks car les octets déjà écrits ne peuvent pas être rétractés