Обмен аннотациями через нативный Linux C ABI

hpdf_document_execute_json_v1 раскрывает annotations.export и annotations.import через существующие версионированный дескриптор операций и колбэк-IO-интерфейсы

Сначала загрузите PDF в контекст документа; импорт аннотаций использует InputIO для XFDF-байтов, OutputIO для сохранённого PDF и ResultIO для метаданных JSON-результата

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

Экспорт записывает UTF-8 XFDF в OutputIO и сообщает annotationCount, skippedAnnotationCount, decodedAttachmentBytes и outputBytes

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

Импорт сообщает updated и annotationProfile, затем принимает сохранённую ревизию только после успешных колбэков и PDF, и результата

Сбои входных и выходных колбэков, сбои результирующего колбэка и отмена сохраняют точный ранее зафиксированный контекст; внешние колбэки могли уже получить частичный поток до позднейшего сбоя колбэка

JSON возможностей объявляет annotationData с отображённым профилем типов, режимом импорта на добавление, встроенными данными, прямыми ответами и объектами popup; appearanceImport равен false

Лимиты аннотаций могут снизить ёмкости операции и не могут повысить их; MaxBytes дополнительно ограничен памятью операции, делённой на 64, рабочая память — половиной памяти операции, а байты экспорта — лимитом вывода

Импорт принимает существующий объект signaturePolicy для настроек проверки CAdES, доверия и штампов времени и принуждает права на аннотации и аутентифицированную политику DocMDP

Пустые ABI-импорты сохраняют зафиксированные байты PDF, возвращая ноль обновлений

Локальные именованные и явные destinations и действия GoTo сохраняют фактические ссылки на страницы и ограниченные точные десятичные координаты через общий кодек аннотаций

ELF SONAME и версия символов HOTPDF_1.0 не меняются, а существующие C-потребители продолжают использовать тот же публичный дескриптор операций

Отображённый профиль и нативный API · Linux C ABI · Операции с данными форм

Стандартный транспорт внешних видов штампов сохраняет фактические потоки Form и ограниченные ациклические ресурсы шрифтов, изображений и графики через типизированный XML base64

Операции графов объектов FDF

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

Выберите format="fdf" для бинарных графов аннотаций через тот же дескриптор операции и колбэки InputIO, OutputIO и ResultIO; annotations.export пишет байты FDF в OutputIO

Профиль FDF сохраняет предоставленные ресурсы AP и RO, общие косвенные объекты и контекстно-зависимые локальные ссылки страниц GoTo; совпадающий NM аннотации на той же странице указывает замещение, тогда как безымянные или несовпавшие аннотации добавляются

Успешный импорт FDF сообщает annotationProfile="pdf-object-graph-v1" и целочисленный счётчик updated; операция с нулём обновлений сохраняет точные последние зафиксированные байты PDF

FDF annotationLimits также принимает maxObjects; все пределы остаются ограниченными объемлющей операцией, причём сбой и отмена сохраняют существующие гарантии колбэк-транзакций

Операции только аннотаций отклоняют непустые Fields и встроенные Differences; данные действий транспортируются без исполнения

Поведение и границы графа FDF см. в нативном обмене аннотациями FDF, а пределы нативного FDF — в THPDFFDFOptions

Удаление аннотаций

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

annotations.remove использует текущий документ или независимый PDF, предоставленный через InputIO, затем публикует PDF OutputIO и JSON ResultIO до фиксации контекста

Результат сообщает removed и annotationProfile="page-and-nm-removal-v1"; annotationLimits ограничивает число аннотаций, операций, байты имён и рабочее хранилище

Сбой или отмена сохраняют зафиксированный контекст; вызывающие сами готовят колбэк-приёмники, поскольку уже записанные байты нельзя отозвать