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ć