Как я могу заблокировать документ PDF после его подписания?

Adobe Acrobat имеет возможность заблокировать документ PDF после его подписания. Это изменяет права доступа к документу, поэтому Acrobat не предлагает снова подписывать документ или изменять аннотации или формы. Это кажется разумным действием после подписания документа для проверки несколькими организациями и, наконец, для публикации ответственным лицом.

iTextSharp также может подписывать документы и добавлять дополнительные подписи к уже подписанному документу. iTextSharp также может устанавливать права доступа к документу, но почему-то я не могу установить те же разрешения, что и в Acrobat X Pro. Я установил следующие разрешения:

PdfWriter.ALLOW_COPYPdfWriter.ALLOW_DEGRADED_PRINTINGPdfWriter.ALLOW_PRINTINGPdfWriter.ALLOW_SCREENREADERS

Я не устанавливаю следующие разрешения (которые должны быть все остальное):

PdfWriter.ALLOW_ASSEMBLYPdfWriter.ALLOW_FILL_INPdfWriter.ALLOW_MODIFY_ANNOTATIONSPdfWriter.ALLOW_MODIFY_CONTENTS

В любом случае, после сохранения такого документа я вижу следующие разрешения в Acrobat X Pro:

Печать: разрешено (ОК)Изменение документа: не разрешено (ОК)Сборка: не допускается (ОК)Копирование содержимого: разрешено (ОК)Программа чтения с экрана: разрешена (ОК)Удалить страницы: разрешено (НЕ ОК)Аннотировать: разрешено (НЕ ОК)Заполните формы: разрешено (НЕ ОК)Знак: разрешено (НЕ ОК)Создание шаблонов: разрешено (неизвестно)

Я не использую шифрование, потому что это возможно только перед тем, как поставить первую подпись. Кроме того, я не очень хочу использовать его, потому что а) он бесполезен без пароля для просмотра и б) Acrobat не делает этого и при блокировке документа после подписания.

Мой код основан на проекте iSafePDF (с открытым исходным кодом на Codeplex), который каким-то образом использует PdfStamper для существующего документа.

Моя версия iTextSharp - 5.2.1. В последней версии есть несовместимые изменения API, которые я еще не исправил.

Итак, как я могу достичь того же результата, что и с Acrobat?

(Я знаю, что мое приложение все еще сможет подписывать документ, потому что оно не заботится о существующих разрешениях. Но по крайней мере другие пользователи Acrobat должны правильно видеть «предполагаемые разрешения».)

Обновить:

Я дополнительно исследовал проблему, и, похоже, она возникла отсюда: разрешения могут быть установлены только через метод PdfStamper.SetEncryption, как его 4-й параметр. Но вызов этого метода вместе с добавлением подписи приводит к следующему исключению DocumentException: «Режим добавления не поддерживает изменение статуса шифрования». Я не видел метод, который устанавливает разрешения, но не шифрование. Это проблема? Разве iTextSharp просто не поддерживает то, что на самом деле возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос