Itext 对受保护的PDF进行数字签名(不允许打印,允许签名)

Itext 对受保护的PDF进行数字签名(不允许打印,允许签名),itext,digital-signature,password-encryption,Itext,Digital Signature,Password Encryption,我有一个受密码保护的文档(不允许打印),我想对其进行数字签名。当用iText打开文件时,我遇到了BadPasswordException 我在书中读到iText需要密码来操作文档,所以我给了PDFReader构造函数密码,我有一个例外: java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V 元数据似乎也被加密了 我的问题是: 有没有办法不用密码

我有一个受密码保护的文档(不允许打印),我想对其进行数字签名。当用iText打开文件时,我遇到了BadPasswordException

我在书中读到iText需要密码来操作文档,所以我给了PDFReader构造函数密码,我有一个例外:

java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V

元数据似乎也被加密了

我的问题是:

有没有办法不用密码对文档进行数字签名?允许签名

文档不是从iText创建的,因此如何绕过元数据加密?(不加密元数据)

谢谢 Jamil

根据这篇文章,除非出现空白的数字签名字段,否则不可能对安全文档进行数字签名

我试图添加一个没有空白数字签名字段的数字签名,这似乎是不可能的

iText有任何确认吗

Jamil

以下帖子提供了解决方案以及如何继续。我应用了它,它正在工作

我的情况不同,因为在对受保护文档进行第一次数字签名后,我希望在不同的区域通过不同的证书再次签名,这取决于工作流。由于mkl确认了Adobe的答案,因此不可能

已锁定的文档已签名一次:

已锁定的文档已签署两次:


java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V
-听起来您的类路径中有一个旧的java xml API实现和一个新的java xml API。请清理您使用的JAR。AbstractMethodError通过从类路径中删除xerces库解决:如果文档当前仅受密码加密保护,而不受其他签名的保护,则可以删除保护,然后签名(如果需要,可以再次保护)。如果您不想删除原始保护,Adobe论坛上的答案是正确的。是否可以保护签名文档?保护不会影响数字签名?您必须同时签名和保护。同时签名是什么意思?有什么提示吗?你说的同时是什么意思同样的
PdfStamper
,标志也应(重新)引入密码保护。