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