2013-04-29 62 views
1

我正在使用iTextSharp将数字签名添加到新的pdf中。数字签名按预期放置在文件上。但是,当我在框中单击它实际上不允许我选择我的数字签名签名。iTextSharp - 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

使用您发布的确切代码和iTextSharp 5.4.0签名字段为我出现,并允许我选择签名并签署文档。你可以将PDF发布到我们可以检查的地方吗?进一步研究后,问题 – 2013-04-29 20:38:42

+0

。我是否需要安装adobe pro,才能启用扩展功能? – famousKaneis 2013-04-29 20:45:32

+0

请举例说明你的意思。 – mkl 2013-04-29 22:22:06

回答

1

我想这里有一个误解。

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

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

不言而喻没有第三方以外的其他ADOBE被允许使用Adobe的私钥来实现这一目标。

+0

好的..谢谢。阅读更多后,这听起来像。只是想验证和你的答案帮助。 – famousKaneis 2013-04-30 12:34:33