Ваш подход заключается в том, чтобы сначала добавить в документ несколько подписей для утверждения, а затем подпись для сертификации.
Этот подход не может работать, поскольку он нарушает спецификацию PDF.Так как вопрос от 2011 года, я цитирую часть 1, то есть ISO 32000-1, опубликованную в 2008 году, а не часть 2, то есть ISO 32000-2, опубликованную в 2017 году;по сути, обе спецификации согласуются по этому вопросу, однако.
Документ PDF может содержать следующие стандартные типы подписей:
Одна или несколько подписей для утверждения.[...]
Не более одной сертификационной подписи (PDF 1.5).[...] Словарь сигнатур должен содержать словарь ссылок сигнатур (см. Таблицу 253), который имеет метод преобразования DocMDP .См. 12.8.2.2, «DocMDP» для получения информации о том, как эти подписи должны быть созданы и проверены.
Не более двух подписей прав использования.[...]
(ISO 32000-1, раздел 12.8 "Цифровые подписи", подраздел 12.8.1 "Общие положения")
Метод преобразования DocMDP должен использоваться для обнаружения изменений относительно поля подписи, которое подписано автором документа (лицом, применяющим первую подпись).Документ может содержать только одно поле подписи, которое содержит метод преобразования DocMDP ; это должно быть первое подписанное поле в документе.
(ISO 32000-1, раздел 12.8.2.2 «DocMDP», подраздел 12.8.2.2.1 «Общие»")
Таким образом, неудивительно, что , как только вы затем добавите сертификационную подпись в конце процесса подписания, она аннулирует все предыдущие подписи утверждения, , потому чтодобавление подписи сертификации к уже подписанному документу по определению делает структуру подписи документа недействительной.(Хорошо, сообщение об ошибке Adobe в этом случае может более четко указать на проблему ...)
Вам интересно, существует ли другой способ достижения того же эффекта, что и подписи сертификации, без аннулированияподписи одобрения?
Согласно raw ISO 32000-1 Ваши возможности ограничены.С помощью словаря блокировки полей подписи (см. Раздел 12.7.4.5 «Поля подписи») и преобразования FieldMDP в окончательную подпись вы можете заблокировать существующие поля формы:
От имени автора документа, создающего документ, содержащий поля формы и подписи, соответствующие авторы должны поддерживать следующее:
Автор указывает, что поля формы должны быть заполненыбез аннулирования утверждения или подписи сертификации.Запись P в словаре параметров преобразования DocMDP должна быть установлена на 2 или 3 (см. Таблицу 254).
Автор можеттакже укажите, что после того, как конкретный получатель подписал документ, любые изменения в определенных полях формы должны сделать недействительной подпись этого получателя.Для каждого назначенного получателя должно быть отдельное поле подписи, каждое из которых имеет связанный словарь блокировки поля подписи (см. Таблицу 233), определяющий поля формы, которые должны быть заблокированы для этого пользователя.
Когдаполучатель подписывает поле, должны быть созданы словари подписи, ссылки на подпись и параметров преобразования.Записи Action и Fields в словаре параметров преобразования должны быть скопированы из соответствующих полей в словаре блокировки полей сигнатур.
(ISO 32000-1, раздел 12.8.2.4 "FieldMDP")
Но если ваша оригинальная сертификационная подпись допускает изменения аннотации или нет сертификационной подписи для начала, вы не можете отключитьтакая аннотация изменяется.
Если, с другой стороны, ваши процессоры и программы просмотра PDF поддерживают ISO 32000-1 плюс приложение Adobe с ExtensionLevel 3 , дополнительную запись в словаре блокировки поля подписи указано:
P номер (Необязательно; ExtensionLevel 3) Права доступа, предоставленные для этого документа. Допустимые значения:
1, изменения в документе не допускаются; любое изменение в документе делает недействительной подпись.
2, разрешенные изменения - заполнение форм, создание шаблонов страниц и подпись; другие изменения делают подпись недействительной.
3, допустимые изменения такие же, как для 2, а также создание, удаление и изменение аннотации; другие изменения делают подпись недействительной.
Значение по умолчанию: нет; отсутствие этого ключа не влияет на правила проверки подписи.
Если разрешение MDP уже действует из более раннего раздела инкрементного сохранения или исходной части документа, число должно указывать разрешения, меньшие или равные разрешениям, уже действующим на основании подписей ранее в документе. То есть разрешения могут быть отклонены, но не добавлены. Если число указывает на большие разрешения, чем действующее значение MDP, новый номер игнорируется.
Если документ не имеет подписи автора, начальные действующие разрешения - те, которые основаны на числе 3.
Новое разрешение применяется к любым инкрементным изменениям в документе, после подписи которых этот ключ является частью.
(Дополнение Adobe к ISO 32000-1 ExtensionLevel 3, часть I «Расширения к спецификации PDF», раздел 8.6.3 «Типы полей», подраздел «Поля подписи»)
Это дополнение было принято ISO 32000-2 .
Если вы хотите использовать эти механизмы с помощью iText начиная с версии 5.3.0, взгляните на документ Цифровые подписи для документов PDF от Bruno Lowagie, iText. Раздел 2.5.5 «Блокировка полей и документов после подписания» иллюстрирует, как использовать эти механизмы с iText.