Обмен аннотациями через нативный 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 ограничивает число аннотаций, операций, байты имён и рабочее хранилище
Сбой или отмена сохраняют зафиксированный контекст; вызывающие сами готовят колбэк-приёмники, поскольку уже записанные байты нельзя отозвать