É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