protected void ManipulatePdf(String dest) { ElectronicSignatureInfoDTO signatureInfo = new ElectronicSignatureInfoDTO(); signatureInfo.Bottom = 25; signatureInfo.Left = 25; signatureInfo.PageNumber = 1; SignDocumentSignature(dest, signatureInfo); }
protected void SignDocumentSignature(string filePath, ElectronicSignatureInfoDTO signatureInfo) { PdfSigner pdfSigner = new PdfSigner(new PdfReader(SRC), new FileStream(filePath, FileMode.Create), new StampingProperties()); pdfSigner.SetCertificationLevel(PdfSigner.CERTIFIED_NO_CHANGES_ALLOWED); // Set the name indicating the field to be signed. // The field can already be present in the document but shall not be signed pdfSigner.SetFieldName("signature"); ImageData clientSignatureImage = ImageDataFactory.Create(IMAGE_PATH); // If you create new signature field (or use SetFieldName(System.String) with // the name that doesn't exist in the document or don't specify it at all) then // the signature is invisible by default. PdfSignatureAppearance signatureAppearance = pdfSigner.GetSignatureAppearance(); signatureAppearance.SetRenderingMode(PdfSignatureAppearance.RenderingMode.GRAPHIC); signatureAppearance.SetReason(""); signatureAppearance.SetLocationCaption(""); signatureAppearance.SetSignatureGraphic(clientSignatureImage); signatureAppearance.SetPageNumber(signatureInfo.PageNumber); signatureAppearance.SetPageRect(new Rectangle(signatureInfo.Left, signatureInfo.Bottom, 25, 25)); char[] password = "******".ToCharArray(); IExternalSignature pks = GetPrivateKeySignature(CERT_PATH, password); X509Certificate[] chain = GetCertificateChain(CERT_PATH, password); OCSPVerifier ocspVerifier = new OCSPVerifier(null, null); OcspClientBouncyCastle ocspClient = new OcspClientBouncyCastle(ocspVerifier); List <ICrlClient> crlClients = new List <ICrlClient>(new[] { new CrlClientOnline() }); // Sign the document using the detached mode, CMS or CAdES equivalent. // This method closes the underlying pdf document, so the instance // of PdfSigner cannot be used after this method call pdfSigner.SignDetached(pks, chain, crlClients, ocspClient, null, 0, PdfSigner.CryptoStandard.CMS); }