2012-03-22 35 views
3

我有一个由2人签名的PDF(Eid)。如何使用ItextSharp检索数字签名信息(名称,日期,...)

我试图检索这些信息,但目前为止我还无法找到。

这是我到目前为止有:

namespace ConsoleApplication1 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       string workingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
       string inputFile = Path.Combine(workingFolder, "Tax Return.pdf");    

       PdfReader reader = new PdfReader(inputFile); 

       Console.ReadLine(); 
      } 
     } 
    } 

如果我在运行时检查“读者”我可以看到AcroForm有2场指向签名,但我看不到任何具体信息关于这些签名。

回答

7

短的例子:

StringBuilder sb = new StringBuilder(); 
PdfReader reader = new PdfReader(pdf); 
AcroFields af = reader.AcroFields; 
ArrayList names = af.GetSignatureNames(); 
for (int i = 0; i < names.Count; ++i) { 
    String name = (string)names[i]; 
    PdfPKCS7 pk = af.VerifySignature(name); 
    sb.AppendFormat("Signature field name: {0}\n", name); 
    sb.AppendFormat("Signature signer name: {0}\n", pk.SignName); 
    sb.AppendFormat("Signature date: {0}\n", pk.SignDate); 
    sb.AppendFormat("Signature country: {0}\n", 
    PdfPKCS7.GetSubjectFields(pk.SigningCertificate).GetField("C") 
); 
    sb.AppendFormat("Signature organization: {0}\n", 
    PdfPKCS7.GetSubjectFields(pk.SigningCertificate).GetField("O") 
); 
    sb.AppendFormat("Signature unit: {0}\n", 
    PdfPKCS7.GetSubjectFields(pk.SigningCertificate).GetField("OU") 
); 
} 
相关问题