我的PDF文档需要同时为digitally signed
和encrypted
。
我正在使用ABCPDF
,当我将数字签名应用于加密的文档时,签名将失效。
Adobe Acrobat Reader
提供的错误是:" 对此文档进行了更改,使签名无效"
源代码:
using (Doc doc = new Doc())
{
doc.Read(pdfPath);
if (options.Encrypt)
{
doc.Encryption.Type = 4;
doc.Encryption.SetCryptMethods(CryptMethodType.AESV3);
doc.Encryption.Password = Encryption.Decrypt(options.UserPassword, PdfSecurityOptions.EncryptionPassword);
doc.Encryption.OwnerPassword = Encryption.Decrypt(options.OwnerPassword, PdfSecurityOptions.EncryptionPassword);
}
if (options.Sign)
{
byte[] bytes = Convert.FromBase64String(options.Certificate);
X509Certificate2 certificate = new X509Certificate2(bytes, Encryption.Decrypt(options.CertificatePassword, PdfSecurityOptions.EncryptionPassword), X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
PdfUtils.DigitallySign(
doc,
options.SignatureText,
options.Rectangle,
certificate
);
}
doc.Save(savePath);
}
我尝试过:
before
签名after
签名答案 0 :(得分:0)
您可以在完成另一个签名之后执行签名;这样做,你将腐败第一次签名。
为避免这种情况,每次签名完成后都必须使用增量更新。 查看Abcpdf在线文档
http://www.websupergoo.com/helppdfnet/source/6-abcpdf.objects/signature/1-methods/commit.htm
我已经测试了您的代码,签名显示正常。我认为您在添加字段的方式上存在问题。我看到你正在使用Abcpdf示例代码。也许你需要对它进行一些改动。你能提供pdf样本吗?