¿Cómo puedo bloquear un documento PDF después de firmarlo?

Adobe Acrobat tiene la opción de bloquear el documento PDF después de firmarlo. Esto cambia los permisos del documento para que Acrobat no ofrezca firmar nuevamente el documento o modificar las anotaciones o los formularios. Esto parece ser una acción razonable después de que un documento haya sido firmado para que lo revisen varias entidades y, finalmente, lo publique un responsable.

iTextSharp también puede firmar documentos, y también puede agregar más firmas a un documento ya firmado. Básicamente, iTextSharp también puede configurar los permisos del documento, pero de alguna manera no puedo hacer que establezca los mismos permisos que Acrobat X Pro. Establecí los siguientes permisos:

PdfWriter.ALLOW_COPYPdfWriter.ALLOW_DEGRADED_PRINTINGPdfWriter.ALLOW_PRINTINGPdfWriter.ALLOW_SCREENREADERS

No establezco los siguientes permisos (que deberían ser todos los demás):

PdfWriter.ALLOW_ASSEMBLYPdfWriter.ALLOW_FILL_INPdfWriter.ALLOW_MODIFY_ANNOTATIONSPdfWriter.ALLOW_MODIFY_CONTENTS

De todos modos, después de guardar un documento como ese, veo los siguientes permisos en Acrobat X Pro:

Impresión: Permitido (OK)Modificando documento: No permitido (OK)Asamblea: No permitido (OK)Copiar contenidos: Permitido (OK)Lector de pantalla: Permitido (OK)Eliminar páginas: permitido (NO OK)Anotar: permitido (NO OK)Rellene los formularios: Permitido (NO OK)Signo: Permitido (NO OK)Crear plantillas: Permitido (desconocido)

No estoy usando el cifrado porque solo es posible antes de colocar la primera firma. Además, realmente no quiero usarlo porque a) es básicamente inútil sin una contraseña de usuario yb) Acrobat tampoco lo hace cuando bloquea un documento después de firmarlo.

Mi código se basa en el proyecto iSafePDF (código abierto en Codeplex) que utiliza PdfStamper de alguna manera en un documento existente.

Mi versión de iTextSharp es 5.2.1. La última versión tiene cambios de API incompatibles que aún no resolví.

Entonces, ¿cómo puedo lograr el mismo resultado que con Acrobat?

(Soy consciente de que mi aplicación aún podrá firmar el documento porque no le interesan los permisos existentes. Pero al menos otros usuarios de Acrobat deberían ver los "permisos previstos" correctamente).

Actualizar:

He investigado más el problema y parece que viene de aquí: los permisos solo se pueden establecer a través del método PdfStamper.SetEncryption, como su cuarto parámetro. Pero la combinación de este método con la adición de una firma lleva a la siguiente excepción de documento: "El modo de anexar no admite el cambio del estado de cifrado". No he visto un método que establezca permisos pero no cifrado. ¿Es este el problema? ¿ITextSharp simplemente no admite lo que es realmente posible?

Respuestas a la pregunta(1)

Su respuesta a la pregunta