2013-04-29 64 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