1

我正在使用 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);
        }
4

1 回答 1

1

我认为这里有一个误解。

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

只有 Adob​​e Reader 的人无法通过单击注释来签署文件。这是正常的:PDF 没有“启用阅读器”。只能在 Acrobat(和一些其他 Adob​​e 产品)中启用阅读器。使用 Adob​​e 的私钥,应用特殊的“使用权”签名。当 Adob​​e Reader 可以使用 Adob​​e 的公钥验证此特殊签名时,Adobe Reader 会解锁特定功能,例如:能够像 Reader 是 Acrobat 一样签署文档。

不言而喻,ADOBE 以外的任何第三方都不允许使用 Adob​​e 的私钥来实现此目的。

于 2013-04-30T05:57:27.457 回答