É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é