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