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