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);
        }

iTextSharp -数字签名问题的Pdf文件

我认为这是一个误解。

当您使用iText或iTextSharp向PDF添加签名字段时,拥有完整版Adobe Acrobat的人员可以使用该字段对PDF进行签名。或者,您可以使用iText(Sharp)以编程方式对文档进行签名。

仅使用adobereader的用户将无法通过单击注释对文件进行签名。这很正常:PDF不是"Reader-enabled"。启用阅读器只能在Acrobat(和其他一些Adobe产品)中完成。使用Adobe的私钥,应用一个特殊的"使用权"签名。当adobereader可以使用adobereader的公开密钥验证此特殊签名时,adobereader将解锁特定功能,例如:像adobereader是Acrobat一样签署文档的能力。

不用说,ADOBE以外的任何第三方都不允许使用ADOBE的私钥来实现这一点。