Windows-Annotation-XFDF-Austausch

Windows-Dateijobs und hpdf_document_execute_json_v1 exportieren gemappte Annotationen und hängen XFDF-Annotationen über die authentifizierte Windows-Transaktionsbrücke an

Die gemappten Typen und Eigenschaften werden mit nativen Annotation-XFDF geteilt, einschließlich begrenzter binärer Attachment-/Sound-Streams, Unicode-Rich-Contents, Popup-Objekte und Vorwärtsantworten

Dateijobs

{
  "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 nutzt dasselbe Format, dieselbe Eingabe, Ausgabe und das optionale Passwort und schreibt UTF-8-XFDF statt eines PDF; Import erfordert annotationInput

Die Ausgabe darf weder den PDF-Input, den XFDF-Input noch gelieferte Trust-/Evidence-Dateien aliasen, einschließlich eines bestehenden Hard Links; die Veröffentlichung reserviert einen exklusiven temporären Sibling, validiert begrenzte Ergebnisse, flusht und schließt den Kandidaten und ersetzt dann atomar das Ziel

Fehler und Abbruch bewahren ein bestehendes vollständiges Ziel und entfernen die temporäre Datei der Operation

Originale V1-Callbacks

Das unveränderte hpdf_operation_v1 und hpdf_io_v1 aus hotpdf_abi.h verwenden; der Annotation-Austausch benötigt keine Font-Erweiterung

Zuerst das Ziel-PDF mit hpdf_document_load_from_io laden; der Import liest XFDF aus InputIO, schreibt den Kandidaten-PDF an OutputIO und begrenzten JSON an ResultIO; der Export liest das aktive besessene PDF und schreibt XFDF an OutputIO

Für verschlüsselte Eingaben das Operations-Passwort wiederholen, mit dem das geladene PDF authentifiziert wurde; diese Operation behält kein implizites Passwort aus dem früheren Load-Aufruf

Nur erfolgreiche PDF- und Ergebnis-Callbacks gefolgt vom finalen Abbruch-Checkpoint übernehmen das neue Dokument und die besessene Revision; fehlgeschlagene Input-, Output- oder Ergebnis-Callbacks, fehlerhaftes XML, erschöpfte Limits und Abbruch behalten den vorherigen Kontext

Callbacks können Kandidaten-Bytes empfangen, bevor ein späterer Fehler auftritt; eine Ziel-Datei im Besitz des Aufrufers erst veröffentlichen, nachdem HPDF_STATUS_OK zurückkehrt

Policy, Limits und Ergebnisse

Import authentifiziert bestehende Signatur-Integrität und ESS-Signer-Bindung; P1- und P2-Zertifizierung verweigert Annotation-Änderungen, während P3 eine Annotation-Revision erlaubt, die die originalen signierten Bytes behält

AES-256-R5/R6-Importe bewahren Verschlüsselungsparameter und den originalen Revisionspräfix; ein leerer Import authentifiziert die Policy und bewahrt die exakten aktuellen Bytes

signaturePolicy akzeptiert die bestehenden booleschen Trust-/Timestamp-/Revocation-Anforderungen und expliziten Trust-Pfade, beschrieben in Windows-Form-Data-Austausch

annotationLimits kann maxBytes, maxAnnotations, maxNodes, maxDepth und maxWorkingBytes senken; Werte sind positive ganzzahlige JSON-Zahlen und können die berechneten Defaults nicht anheben

Working-, Output-, Ergebnis-, Objekt- und Seiten-Budgets gelten zusätzlich; Callback-Operationen akzeptieren elapsedMilliseconds als zusätzliche, strengere Frist

Export meldet annotationCount, skippedAnnotationCount, decodedAttachmentBytes und outputBytes; Import meldet updated, outputBytes und annotationProfile gleich mapped-annotations-v1

Grenzen

Capabilities bewerben den Annotation-Austausch über file-job und execute-json-v1, mit Append-only-Import, allgemeinem appearanceImport=false und scoped stampAppearanceImport=true

Der Standard-Stamp-Appearance-Transport bewahrt echte Form-Streams und begrenzte azyklische Font-, Bild- und Grafikressourcen über base64-typisiertes XML

Allgemeiner AP-Transport, Annotation-Ersetzung/-Entfernung, breitere Actions und FDF-Annotation-Daten bleiben separate Arbeiten; Remote-GoToR-Actions und lokale Destinations nutzen ihre bestehenden begrenzten Profile

Das generische ExecuteLoadedOperation und der ältere Job-Handle-Callback-Record sind separate Einstiegspunkte; Pascal-Aufrufer können die explizite Transaktionsklasse verwenden

Binärer FDF-Austausch

Dieselben Dateijobs und V1-Callbacks akzeptieren format="fdf"; Dateiimporte lesen binäres FDF aus annotationInput, und Exporte schreiben binäres FDF in die gewählte Ausgabe

Das FDF-Objektgraph-Profil bewahrt gelieferte Appearance-Ressourcen und geteilte indirekte Objekte und unterstützt Ersetzung durch einen übereinstimmenden nichtleeren Annotation-NM auf derselben Seite

FDF-Import liefert annotationProfile="pdf-object-graph-v1"; updated zählt tatsächliche Annotationsänderungen, und ein äquivalenter Import bewahrt die exakte aktuelle Revision

FDF ergänzt maxObjects zu den positiven ganzzahligen annotationLimits-Steuerungen und nutzt die bestehende authentifizierte Policy, begrenzte Kandidatenveröffentlichung und Callback-Eigentümerschaftsregeln

Pascal-Aufrufer können THPDFWindowsFormDataTransaction.ExportAnnotationsFDF und ImportAnnotationsFDF verwenden; ChangedAnnotations meldet tatsächliche Änderungen für dieses Profil

Nichtleere FDF-Fields und eingebettete Differences erfordern separate Behandlung und lassen Nur-Annotation-Operationen vor der Veröffentlichung scheitern

Die Windows-Annotation-Entfernung bietet eine separate vorbereitete Transaktion und einen JSON-Job für exakte Seiten-und-NM-Identitäten, ohne die gemappte XFDF-Append-Semantik zu ändern