Нативный обмен аннотациями XFDF

HPDFHeadlessXFDF экспортирует отображённые аннотации из загруженного нативного PDF-графа и готовит импорт XFDF-аннотаций как независимую инкрементальную ревизию

Используйте HPDFExportHeadlessAnnotationsXFDF для XML-байтов UTF-8 и SaveAnnotationsXFDFToFile для добавления аннотаций к существующему документу, не меняя загруженный исходный граф

Отображённый профиль аннотаций

Профиль отображает Text, FreeText, Line, Square, Circle, Polygon, PolyLine, Highlight, Underline, StrikeOut, Squiggly, Stamp, Ink, Caret, FileAttachment, Sound, Redact и Link

Общие значения включают страницу, прямоугольник, Unicode-содержимое, автора, имя аннотации, даты, тему, флаги, прозрачность, цвета и поддерживаемые свойства границ

Значения, специфичные для типов, включают координаты четырёхугольников, вершины, росчерки Ink, окончания линий и геометрию выносок, свойства intent/callout/fringe/текста по умолчанию у FreeText, состояние повтора Redact, действия URI или Named для ссылок и именованные либо явные локальные destinations и действия GoTo

Пустые массивы компонентов цвета сохраняют прозрачные цвета; исходные цвета Gray и CMYK отображаются в RGB-значения XFDF, а компоненты RGB квантуются в шестизначное шестнадцатеричное представление формата

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

Popup-аннотации представлены вложенными элементами popup и импортируются с косвенными связями Parent, Popup и страницы; ответы разрешаются вторым проходом по существующим и только что добавленным именам аннотаций, включая прямые ссылки вперёд

Rich-содержимое сохраняет пространство имён XHTML, упорядоченный смешанный текст и унаследованные привязки пространств имён

Транзакции и права

Импорты добавляют аннотации и отклоняют дублирующиеся имена, неоднозначные или отсутствующие цели ответов и недопустимые отображённые значения до публикации

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

Экспорту нужно право на извлечение, импорту — право на изменение аннотаций; защита AES-256 R5/R6 остаётся в сохранённой ревизии

Фактическая политика сертификации аутентифицируется через нативный workflow подписей: P1 и P2 запрещают изменения аннотаций, тогда как P3 допускает ревизию аннотаций, сохраняющую исходные подписанные байты

Границы

THPDFHeadlessXFDFOptions ограничивает входные и выходные байты, число аннотаций, узлы графа и XML, глубину и рабочую память с кооперативной отменой

Отображённые числа обязаны быть конечными и по модулю не больше миллиона, с дополнительными ограничениями на число координат, прозрачность, размеры сэмплов и другие типизированные значения

Допуск XML для всего документа проверяет кодировку, пространства имён, дублирующиеся атрибуты, сущности и полную структуру до отображения аннотаций; обработка DTD и внешних сущностей отключена

Границы операций

Профиль не переносит произвольные AP-потоки внешнего вида, пользовательские словари аннотаций, замену и удаление аннотаций, удалённые destinations, произвольные действия или данные аннотаций FDF

Синтез и отрисовка внешнего вида аннотаций — отдельные операции; импорт геометрических и текстовых свойств не создаёт AP-поток

Прочие исходные подтипы аннотаций пропускаются при экспорте и учитываются в результате; некорректные выбранные отображённые значения ломают операцию без частично возвращённого XML

Нативный Pascal-API работает в Windows и Linux; версионированный Linux C ABI также раскрывает JSON-операции аннотаций через колбэки, а Windows-задачи и V1-колбэки — тот же отображённый обмен аннотациями

Нативный Pascal API работает в Windows и Linux; версионированный Linux C ABI также открывает колбэк-операции JSON аннотаций, а файловые задания Windows и колбэки V1 открывают тот же отображаемый обмен аннотациями

Явное удаление аннотаций

Удаление аннотаций по странице и имени — отдельная операция; пропуск аннотации в импортируемом FDF или XFDF не удаляет её

Удаление дерева полей Widget и безопасное стирание требуют отдельных операций; инкрементальное удаление сохраняет предыдущие байты PDF