2014-01-31 118 views
1

目前我升级我这是使用iTextSharp的5.0.0至5.4.5(最新)做旧的应用程序......但我在获得同等代码签名PDF文档

PdfSignatureAppearance.SetCrypto(this.myCert.Akp, this.myCert.Chain, null, PdfSignatureAppearance.SELF_SIGNED); 

问题有谁能帮我解决这个问题吗?

在此先感谢...

+0

签名API(至少是您期望使用的最高级别)已经发生了一些变化。您可能需要阅读[PDF文档的数字签名](http://itextpdf.com/book/digitalsignatures),*由Bruno Lowagie(iText Software)*编写的白皮书*与iText(Sharp)签署。其中的代码示例使用Java,但C#版本也可用。 – mkl

+0

你可以给我提供C#链接吗? –

+0

它们至少可以在[tutorial](http://svn.code.sf.net/p/itextsharp/code/tutorial)中的subversion版本库中找到;不过,我不知道是否有任何美化版本。 – mkl

回答

3

我签使用5.5版本的iTextSharp的的PDF文档。 以下是示例代码。

 // Set the reader (PdfReader) and output (Stream) first 
     PdfStamper stamper = PdfStamper.CreateSignature(reader, output, '\0'); 

     PdfSignatureAppearance signatureAppearance = stamper.SignatureAppearance; 
     signatureAppearance.SignatureRenderingMode = PdfSignatureAppearance.RenderingMode.GRAPHIC_AND_DESCRIPTION; 
     signatureAppearance.Reason = "I love signing"; 
     signatureAppearance.LocationCaption = ""; 
     signatureAppearance.SignatureGraphic = Image.GetInstance(this.imageFolderPath + "sign.png"); 

     signatureAppearance.SetVisibleSignature(
      new Rectangle(100, 100, 300, 200), 
      reader.NumberOfPages, 
      "Signature"); 

     // Get certificate from store, here I am reading file 
     X509Certificate2 cert = new X509Certificate2(certFile, certPassword); 
     var keyPair = DotNetUtils.GetKeyPair(cert.PrivateKey).Private; 
     BcX509.X509Certificate bcCert = DotNetUtils.FromX509Certificate(cert); 
     var chain = new List<BcX509.X509Certificate> { bcCert }; 
     IExternalSignature signature = new PrivateKeySignature(keyPair, "SHA-256"); 

     MakeSignature.SignDetached(signatureAppearance, signature, chain, null, null, null, 0, CryptoStandard.CMS); 

     stamper.Close();