Native Linux C ABI annotation exchange

hpdf_document_execute_json_v1 odsłania annotations.export i annotations.import przez istniejący wersjonowany deskryptor operacji i interfejsy I/O callbackowe

Najpierw załaduj PDF do kontekstu dokumentu; import adnotacji używa InputIO dla bajtów XFDF, OutputIO dla zapisanego PDF i ResultIO dla metadanych wyniku JSON

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

Eksport pisze UTF-8 XFDF do OutputIO i raportuje annotationCount, skippedAnnotationCount, decodedAttachmentBytes i outputBytes

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

Import raportuje updated i annotationProfile, a potem adoptuje zapisaną rewizję dopiero po sukcesie obu callbacków PDF i wyniku

Awarie callbacków wejścia/wyjścia, awarie callbacka wyniku i anulowanie zachowują dokładnie wcześniej zacommitowany kontekst; zewnętrzne callbacki mogą już mieć odebrany częściowy strumień przed późniejszą awarią callbacka

JSON zdolności reklamuje annotationData z zmapowanym profilem typów, trybem importu append, danymi osadzonymi, odpowiedziami w przód i obiektami popup; appearanceImport jest fałszywe

Limity adnotacji mogą obniżać pojemności operacji i nie mogą ich podnosić; MaxBytes jest dodatkowo ograniczany pamięcią operacji podzieloną przez 64, storage roboczy połową pamięci operacji, a bajty eksportu limitem wyjścia

Import akceptuje istniejący obiekt signaturePolicy dla ustawień weryfikacji CAdES, zaufania i znaczników czasu oraz wymusza uprawnienia adnotacji i uwierzytelnioną politykę DocMDP

Puste importy ABI zachowują zacommitowane bajty PDF, zwracając zero aktualizacji

Lokalne destination nazwane i jawne oraz akcje GoTo zachowują rzeczywiste referencje stron i ograniczone dokładne współrzędne dziesiętne przez współdzielony kodek adnotacji

SONAME ELF i wersja symboli HOTPDF_1.0 pozostają niezmienione, a istniejący konsumenci C nadal używają tego samego publicznego deskryptora operacji

Zmapowany profil i natywne API · Linux C ABI · Operacje form-data

Transport wyglądów standardowych stempli zachowuje rzeczywiste strumienie Form i ograniczone acykliczne zasoby fontów, obrazów i grafiki przez base64 typowane XML

Operacje na grafach obiektów FDF

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

Wybierz format="fdf" dla binarnych grafów adnotacji przez ten sam deskryptor operacji i callbacki InputIO, OutputIO i ResultIO; annotations.export zapisuje bajty FDF do OutputIO

Profil FDF zachowuje dostarczone zasoby AP i RO, współdzielone obiekty pośrednie i kontekstowe lokalne referencje stron GoTo; pasująca NM adnotacji na tej samej stronie identyfikuje podmianę, podczas gdy nienazwane albo niepasujące adnotacje są doklejane

Udany import FDF raportuje annotationProfile="pdf-object-graph-v1" i całkowitoliczbową liczbę updated; operacja bez zmian zachowuje dokładne ostatnio zacommitowane bajty PDF

FDF annotationLimits akceptuje też maxObjects; wszystkie limity pozostają ograniczone przez otaczającą operację, a niepowodzenie i anulowanie zachowują istniejące gwarancje transakcji callbackowych

Operacje tylko-dla-adnotacji odrzucają niepuste Fields i osadzone Differences; dane akcji są transportowane bez ich wykonywania

Zobacz zachowanie i granice grafu FDF oraz natywne limity FDF

Usuwanie adnotacji

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

annotations.remove używa bieżącego dokumentu albo niezależnego PDF dostarczonego przez InputIO, po czym publikuje PDF do OutputIO i JSON do ResultIO przed zacommitowaniem kontekstu

Wynik raportuje removed i annotationProfile="page-and-nm-removal-v1"; annotationLimits ogranicza liczbę adnotacji, operacji, bajtów nazw i magazyn roboczy

Niepowodzenie albo anulowanie zachowuje zacommitowany kontekst; wywołujący sami stage'ują zlewy callbacków, ponieważ już zapisanych bajtów nie można odwołać