我正在使用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);
}
答案 0 :(得分:1)
我认为这里存在误解。
使用iText或iTextSharp向PDF添加签名字段时,拥有完整版Adobe Acrobat的人可以使用该字段对PDF进行签名。或者,您可以使用iText(夏普)以编程方式对文档进行签名。
只有Adobe Reader的人才能通过单击注释来签名文件。这是正常的:PDF不是"阅读器已启用。"读者启用只能在Acrobat(和其他一些Adobe产品)中完成。使用Adobe的私钥,一种特殊的使用权限#34;签名已应用。当Adobe Reader可以使用Adobe公钥验证此特殊签名时,Adobe Reader会解锁特定功能,例如:能够像阅读器是Acrobat一样签署文档。
不言而喻,除了ADOBE之外,没有其他第三方可以使用Adobe的私钥来实现这一目标。