Nativer Annotation-Austausch über die Linux-C-ABI

hpdf_document_execute_json_v1 stellt annotations.export und annotations.import über die bestehende versionierte Operation-Descriptor- und Callback-IO-Schnittstelle bereit

Zuerst das PDF in den Dokumentkontext laden; der Annotation-Import nutzt InputIO für XFDF-Bytes, OutputIO für das gespeicherte PDF und ResultIO für JSON-Ergebnis-Metadaten

{"schemaVersion":1,"type":"annotations.export","format":"xfdf"}

Export schreibt UTF-8-XFDF an OutputIO und meldet annotationCount, skippedAnnotationCount, decodedAttachmentBytes und outputBytes

{"schemaVersion":1,"type":"annotations.import","format":"xfdf",
 "annotationLimits":{"maxBytes":1048576,"maxAnnotations":1000,
 "maxNodes":100000,"maxDepth":32,"maxWorkingBytes":67108864}}

Import meldet updated und annotationProfile und übernimmt die gespeicherte Revision erst, nachdem sowohl PDF- als auch Ergebnis-Callbacks erfolgreich sind

Input-/Output-Callback-Fehler, Ergebnis-Callback-Fehler und Abbruch bewahren den exakt zuvor committed Kontext; externe Callbacks können bereits einen partiellen Stream empfangen haben, bevor ein späterer Callback fehlschlägt

Capability-JSON bewirbt annotationData mit dem gemappten Typ-Profil, Append-Import-Modus, eingebetteten Daten, Vorwärtsantworten und Popup-Objekten; appearanceImport ist false

Annotation-Limits können die Operationskapazitäten senken und nicht erhöhen; MaxBytes wird zusätzlich durch Operations-Memory geteilt durch 64 gekappt, Working Storage durch die Hälfte des Operations-Memory und Export-Bytes durch das Output-Limit

Import akzeptiert das bestehende signaturePolicy-Objekt für CAdES-, Trust- und Timestamp-Verifizierungseinstellungen und setzt Annotation-Rechte sowie die authentifizierte DocMDP-Policy durch

Leere ABI-Importe behalten die committed PDF-Bytes und liefern null Updates zurück

Lokale benannte und explizite Destinations und GoTo-Actions bewahren echte Seitenreferenzen und begrenzte exakte Dezimalkoordinaten über den gemeinsamen Annotation-Codec

Der ELF-SONAME und die Symbol-Version HOTPDF_1.0 bleiben unverändert, und bestehende C-Consumer nutzen weiter denselben öffentlichen Operation-Descriptor

Gemapptes Profil und native API · Linux-C-ABI · Form-Data-Operationen

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

FDF-Objektgraph-Operationen

{"schemaVersion":1,"type":"annotations.import","format":"fdf"}

Wählen Sie format="fdf" für binäre Annotation-Graphen über denselben Operation-Descriptor und die InputIO-, OutputIO- und ResultIO-Callbacks; annotations.export schreibt FDF-Bytes an OutputIO

Das FDF-Profil bewahrt gelieferte AP- und RO-Ressourcen, geteilte indirekte Objekte und kontextsensitive lokale GoTo-Seitenreferenzen; ein übereinstimmender Annotation-NM auf derselben Seite identifiziert eine Ersetzung, während unbenannte oder nicht übereinstimmende Annotationen angehängt werden

Erfolgreicher FDF-Import meldet annotationProfile="pdf-object-graph-v1" und eine ganzzahlige updated-Anzahl; eine Operation ohne Updates bewahrt die exakt zuletzt committedeten PDF-Bytes

FDF-annotationLimits akzeptiert zusätzlich maxObjects; alle Limits bleiben durch die umgebende Operation beschränkt, wobei Fehlschlag und Abbruch die bestehenden Callback-Transaktionsgarantien bewahren

Nur-Annotation-Operationen weisen nichtleere Fields und eingebettete Differences zurück; Action-Daten werden transportiert, ohne sie auszuführen

Siehe FDF-Graphverhalten und -grenzen sowie native FDF-Limits

Annotation-Entfernung

{"schemaVersion":1,"type":"annotations.remove","annotations":[{"page":0,"name":"review-note"}]}

annotations.remove nutzt das aktuelle Dokument oder ein über InputIO geliefertes unabhängiges PDF und veröffentlicht dann PDF-OutputIO und JSON-ResultIO, bevor der Kontext gecommitet wird

Das Ergebnis meldet removed und annotationProfile="page-and-nm-removal-v1"; annotationLimits begrenzt Annotation-Anzahl, Operationen, Namensbytes und Arbeitsspeicher

Fehlschlag oder Abbruch bewahrt den committedeten Kontext; Aufrufer stagen ihre Callback-Senken selbst, da bereits geschriebene Bytes nicht zurückgezogen werden können