Échange XFDF d'annotations Windows
Les jobs de fichiers Windows et hpdf_document_execute_json_v1 exportent les annotations mappées et ajoutent des annotations XFDF via le pont transactionnel Windows authentifié
Les types et propriétés mappés sont partagés avec le XFDF d'annotations natif, flux binaires bornés de pièces jointes et de sons, contenus riches Unicode, objets popup et réponses anticipées compris
Jobs de fichiers
{
"schemaVersion": 1, "type": "annotations.import", "format": "xfdf",
"input": "source.pdf", "annotationInput": "annotations.xfdf",
"output": "annotated.pdf", "password": "owner",
"annotationLimits": {"maxBytes": 1048576, "maxAnnotations": 1000},
"budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
"timeMilliseconds": 60000, "resultBytes": 16777216}
}
annotations.export utilise le même format, la même entrée, la même sortie et le mot de passe optionnel, en écrivant du XFDF UTF-8 plutôt qu'un PDF ; l'import exige annotationInput
La sortie ne doit aliaser ni l'entrée PDF, ni l'entrée XFDF, ni les fichiers de confiance/preuves fournis, lien physique existant compris ; la publication réserve un sibling temporaire exclusif, valide les résultats bornés, vide et ferme la candidate, puis remplace atomiquement la cible
Échec et annulation préservent une cible complète existante et suppriment le fichier temporaire de l'opération
Callbacks V1 d'origine
Utilisez les hpdf_operation_v1 et hpdf_io_v1 inchangés de hotpdf_abi.h ; l'échange d'annotations n'exige aucune extension de polices
Chargez d'abord le PDF de destination avec hpdf_document_load_from_io ; l'import lit le XFDF depuis InputIO, écrit le PDF candidate vers OutputIO et du JSON borné vers ResultIO ; l'export lit le PDF possédé actif et écrit le XFDF vers OutputIO
Pour une entrée chiffrée, répétez le mot de passe d'opération utilisé pour authentifier le PDF chargé ; cette opération ne conserve pas de mot de passe implicite de l'appel de chargement antérieur
Seuls des callbacks PDF et de résultat réussis suivis du point de contrôle d'annulation final adoptent le nouveau document et la révision possédée ; callbacks d'entrée, de sortie ou de résultat en échec, XML mal formé, limites épuisées et annulation conservent le contexte antérieur
Les callbacks peuvent recevoir des octets candidats avant un échec ultérieur ; publiez une destination possédée par l'appelant seulement après le retour de HPDF_STATUS_OK
Politique, limites et résultats
L'import authentifie l'intégrité des signatures existantes et la liaison des signataires ESS ; la certification P1 et P2 refuse les modifications d'annotations, tandis que P3 permet une révision d'annotations conservant les octets signés d'origine
Les imports AES-256 R5/R6 préservent les paramètres de chiffrement et le préfixe de révision d'origine ; un import vide authentifie la politique et conserve les octets courants exacts
signaturePolicy accepte les exigences booléennes existantes de confiance/horodatage/révocation et les chemins de confiance explicites décrits dans l'échange de données de formulaire Windows
annotationLimits peut abaisser maxBytes, maxAnnotations, maxNodes, maxDepth et maxWorkingBytes ; les valeurs sont des nombres JSON entiers positifs et ne peuvent pas relever les défauts calculés
Les budgets de travail, de sortie, de résultat, d'objets et de pages s'appliquent aussi ; les opérations de callbacks acceptent elapsedMilliseconds comme échéance supplémentaire plus stricte
L'export rapporte annotationCount, skippedAnnotationCount, decodedAttachmentBytes et outputBytes ; l'import rapporte updated, outputBytes et annotationProfile égal à mapped-annotations-v1
Frontières
Les capacités annoncent l'échange d'annotations via file-job et execute-json-v1, avec un import en ajout seul, un appearanceImport=false général et un stampAppearanceImport=true encadré
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
Le transport AP général, le remplacement ou la suppression d'annotations, des actions plus larges et les données d'annotations FDF restent des travaux distincts ; les actions GoToR distantes et les destinations locales utilisent leurs profils bornés existants
Le ExecuteLoadedOperation générique et l'ancien record de callbacks à handle de job sont des points d'entrée séparés ; les appelants Pascal peuvent utiliser la classe de transaction explicite
Échange FDF binaire
Les mêmes jobs de fichiers et callbacks V1 acceptent format="fdf" ; les imports de fichiers lisent le FDF binaire depuis annotationInput, et les exports écrivent le FDF binaire vers la sortie sélectionnée
Le profil FDF de graphes d'objets préserve les ressources d'apparence fournies et les objets indirects partagés, et prend en charge le remplacement par un NM d'annotation non vide et correspondant sur la même page
L'import FDF renvoie annotationProfile="pdf-object-graph-v1" ; updated compte les changements d'annotations réels, et un import équivalent préserve la révision courante exacte
Le FDF ajoute maxObjects aux contrôles annotationLimits en entiers positifs et utilise la politique authentifiée existante, la publication bornée de candidates et les règles de propriété des callbacks
Les appelants Pascal peuvent utiliser THPDFWindowsFormDataTransaction.ExportAnnotationsFDF et ImportAnnotationsFDF ; ChangedAnnotations rapporte les changements réels pour ce profil
Des Fields FDF non vides et des Differences embarquées exigent une gestion séparée et font échouer les opérations réservées aux annotations avant publication
La suppression d'annotations Windows fournit une transaction préparée séparée et un job JSON pour des identités exactes page-et-NM sans changer la sémantique d'ajout XFDF mappé