Я работаю с PDF-файлами с цифровой подписью с помощью Apache PDFBox и пытаюсь разработать механизм истории изменений для документов, в котором подписи могут быть удалены в более поздних версиях.
Контекст
Файл PDF может проходить несколько дополнительных обновлений (версий), например:
Версия 1 → Документ создан
Версия 2 → Подписан пользователем A
Версия 3 → Поле подписи удалено (или подпись признана недействительной).
Проблема
После удаления подписи в более поздней версии:
В спецификации PDF нет встроенного способа определить, кто удалил подпись.
В некоторых случаях удаление может вообще не оставить видимых следов (особенно если оно последнее) редакция)
PDF отражает только текущее состояние + дополнительные обновления, а не явные «действия», например, кто и что удалил
Вопросы
Рекомендуемый подход (основной вопрос)
Каков рекомендуемый подход для ведения истории изменений/контрольного журнала при удалении подписей из PDF-файла?
Аудитируемость
Поскольку PDF сам по себе не отслеживает, «кто удалил подпись»:
Является ли стандартной практикой хранение этой информации извне (например, журналы базы данных)?
Или нам следует встраивать в PDF собственные метаданные (например, XMP, собственный словарь или аннотации)?
Удобное для пользователя отображение
Если мы хотим показать что-то вроде:
Версия 3: Подпись удалена Джоном
или
Версия 3: Подпись удалена системой
Это просто конструкция уровня приложения, а не что-то, полученное из самого PDF-файла?
Действия системы
Если серверная система удаляет подпись:
Как рекомендуется отразить это в журналах аудита или историю изменений?
Должна ли она быть помечена явно (например, «Удалено системой») и как это обычно реализуется?
Реализация с помощью PDFBox
Использование PDFBox:
Существует ли рекомендуемый способ:
Обнаружить, что поле подписи существовало в предыдущей версии, но отсутствует в текущей?
Сравнить версии, чтобы сделать вывод об удалении?
Или необходимо отслеживать все изменения за пределами PDF-файла?
Фактический PDF-файл с приведенной выше информацией можно найти здесь