iTextSharp -数字签名问题的Pdf文件
本文关键字:Pdf 文件 问题 数字签名 iTextSharp | 更新日期: 2023-09-27 18:11:29
我正在使用iTextSharp为新的pdf添加数字签名。数字签名按预期放置在文件上。但是,当我点击这个方框时,它实际上不允许我选择我的数字签名来签名。
我打开了我们公司的另一个pdf文件,它允许数字签名,只是为了测试我的签名是否有效。当我点击这个pdf中的方框时,它允许我选择数字签名;所以我知道我的签名是有效的。
谁知道是什么原因导致这个问题?将签名添加到我用于测试的pdf的代码如下:
任何帮助都将是非常感激的。
using (Document document = new Document())
{
PdfWriter writer = PdfWriter.GetInstance(document, new System.IO.FileStream(@"C:'Users'myusername'Desktop'test.pdf", System.IO.FileMode.Create));
document.Open();
document.Add(new Paragraph("A paragraph"));
PdfFormField sig = PdfFormField.CreateSignature(writer);
sig.SetWidget(new Rectangle(100, 100, 250, 150), null);
sig.FieldName = "testSignature";
sig.Flags = PdfAnnotation.FLAGS_PRINT;
sig.SetPage();
sig.MKBorderColor = BaseColor.BLACK;
sig.MKBackgroundColor = BaseColor.WHITE;
PdfAppearance appearance = PdfAppearance.CreateAppearance(writer, 72, 48);
appearance.Rectangle(0.5f, 0.5f, 71.5f, 47.5f);
appearance.Stroke();
sig.SetAppearance(
PdfAnnotation.APPEARANCE_NORMAL, appearance
);
writer.AddAnnotation(sig);
}
我认为这是一个误解。
当您使用iText或iTextSharp向PDF添加签名字段时,拥有完整版Adobe Acrobat的人员可以使用该字段对PDF进行签名。或者,您可以使用iText(Sharp)以编程方式对文档进行签名。
仅使用adobereader的用户将无法通过单击注释对文件进行签名。这很正常:PDF不是"Reader-enabled"。启用阅读器只能在Acrobat(和其他一些Adobe产品)中完成。使用Adobe的私钥,应用一个特殊的"使用权"签名。当adobereader可以使用adobereader的公开密钥验证此特殊签名时,adobereader将解锁特定功能,例如:像adobereader是Acrobat一样签署文档的能力。
不用说,ADOBE以外的任何第三方都不允许使用ADOBE的私钥来实现这一点。