Windows-обмен аннотациями XFDF
Windows-задачи и hpdf_document_execute_json_v1 экспортируют отображённые аннотации и добавляют XFDF-аннотации через аутентифицированный транзакционный мост Windows
Отображённые типы и свойства общие с нативным XFDF аннотаций, включая ограниченные потоки бинарных вложений и звуков, Unicode rich-содержимое, объекты popup и ответы forward
Файловые задачи
{
"schemaVersion": 1, "type": "annotations.import", "format": "xfdf",
"input": "source.pdf", "annotationInput": "annotations.xfdf",
"output": "annotated.pdf", "password": "owner",
"annotationLimits": {"maxBytes": 1048576, "maxAnnotations": 1000},
"budget": {"memoryBytes": 268435456, "outputBytes": 134217728,
"timeMilliseconds": 60000, "resultBytes": 16777216}
}
annotations.export использует те же формат, input, output и необязательный пароль, записывая UTF-8 XFDF вместо PDF; импорту требуется annotationInput
Вывод не должен совпадать с PDF-входом, XFDF-входом или переданными файлами доверия и доказательств, включая существующую жёсткую ссылку; публикация резервирует исключительный временный файл-сиблинг, проверяет ограниченные результаты, сбрасывает и закрывает кандидата, затем атомарно заменяет цель
Сбой и отмена сохраняют существующую полную цель и удаляют временный файл операции
Исходные V1-колбэки
Используйте неизменённые hpdf_operation_v1 и hpdf_io_v1 из hotpdf_abi.h; обмену аннотациями не нужно шрифтовое расширение
Сначала загрузите целевой PDF через hpdf_document_load_from_io; импорт читает XFDF из InputIO, записывает PDF-кандидата в OutputIO и ограниченный JSON в ResultIO; экспорт читает активный принадлежащий PDF и записывает XFDF в OutputIO
Для зашифрованного входа повторите пароль операции, которым аутентифицировался загруженный PDF; эта операция не удерживает неявный пароль от предыдущего вызова загрузки
Новый документ и принадлежащая ревизия принимаются только после успешных колбэков PDF и результата и финальной контрольной точки отмены; сбои входных, выходных или результирующих колбэков, некорректный XML, исчерпанные лимиты и отмена сохраняют прежний контекст
Колбэки могут получить байты кандидата до позднейшего сбоя; публикуйте принадлежащую вызывающему цель только после возврата HPDF_STATUS_OK
Политики, лимиты и результаты
Импорт аутентифицирует существующую целостность подписи и привязку подписавшего ESS; сертификации P1 и P2 запрещают изменения аннотаций, тогда как P3 допускает ревизию аннотаций, сохраняющую исходные подписанные байты
Импорты AES-256 R5/R6 сохраняют параметры шифрования и исходный префикс ревизии; пустой импорт аутентифицирует политику и сохраняет точные текущие байты
signaturePolicy принимает существующие булевы требования доверия, штампов времени и отзыва и явные пути доверия, описанные в Windows-обмене данными форм
annotationLimits может снизить maxBytes, maxAnnotations, maxNodes, maxDepth и maxWorkingBytes; значения — положительные целые JSON-числа и не могут поднять вычисленные значения по умолчанию
Бюджеты рабочей памяти, вывода, результата, объектов и страниц также применяются; операции с колбэками принимают elapsedMilliseconds как дополнительный более жёсткий дедлайн
Экспорт сообщает annotationCount, skippedAnnotationCount, decodedAttachmentBytes и outputBytes; импорт сообщает updated, outputBytes и annotationProfile, равный mapped-annotations-v1
Границы
Возможности объявляют обмен аннотациями через file-job и execute-json-v1, с импортом только на добавление, общим appearanceImport=false и ограниченным stampAppearanceImport=true
Стандартный транспорт внешних видов штампов сохраняет фактические потоки Form и ограниченные ациклические ресурсы шрифтов, изображений и графики через типизированный XML base64
Общий синтаксис AP XFDF, замена и удаление аннотаций XFDF и более широкие действия XFDF остаются отдельной работой; удалённые действия GoToR и локальные destinations используют свои существующие ограниченные профили
Универсальный ExecuteLoadedOperation и более старая запись колбэков job-handle — отдельные точки входа; Pascal-вызывающие могут использовать явный класс транзакции
Бинарный обмен FDF
Те же файловые задания и колбэки V1 принимают format="fdf"; файловые импорты читают бинарный FDF из annotationInput, а экспорты пишут бинарный FDF в выбранный вывод
Профиль графа объектов FDF сохраняет предоставленные ресурсы внешних видов и общие косвенные объекты и поддерживает замещение по совпадающему непустому NM аннотации на той же странице
Импорт FDF возвращает annotationProfile="pdf-object-graph-v1"; updated считает фактические изменения аннотаций, а эквивалентный импорт сохраняет точную текущую ревизию
FDF добавляет maxObjects к элементам управления annotationLimits положительных целых и использует существующую аутентифицированную политику, ограниченную публикацию кандидатов и правила владения колбэками
Вызывающие Pascal могут использовать THPDFWindowsFormDataTransaction.ExportAnnotationsFDF и ImportAnnotationsFDF; ChangedAnnotations сообщает фактические изменения этого профиля
Непустые FDF Fields и встроенные Differences требуют отдельной обработки и делают сбойными операции только аннотаций до публикации
Удаление аннотаций Windows предоставляет отдельную подготовленную транзакцию и JSON-задание для точных идентичностей страница-и-NM, не меняя append-семантику отображаемого XFDF