Digital signature implementation

Hi Everyone,

I would like to implement Document digital signing after generating PDF of report.

This involves certificate from third party. Overall, is this doable and which class I can refer as my starting point for this.

Kind regards,
Rocky

Yes, it is possible to implement document digital signing after generating a PDF report using a third-party certificate. The starting point for implementing this in your code will depend on the programming language and PDF generation library you are using.

For example, in Java, you can use the iText library to generate and sign PDF documents. You can start by creating a PdfSignature object and setting the necessary parameters, such as the certificate file, signature field location, and signing date. Then, you can use the PdfSignature.sign() method to sign the document.

Here’s a sample code snippet in Java using iText:

PdfReader reader = new PdfReader(“input.pdf”);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(“output.pdf”));

// create signature object
PdfSignature signature = new PdfSignature(PdfName.ADOBE_PPKLITE, PdfName.ADBE_PKCS7_DETACHED);
signature.setReason(“Document digitally signed”);
signature.setLocation(“Your location”);
signature.setContact(“Your contact information”);
signature.setDate(new GregorianCalendar());

// set certificate file
Certificate chain = { new JcaX509Certificate(certificate) };
PrivateKey key = … // load private key
signature.setCertificate(chain[0]);
signature.setCrypto(key, chain, null, PdfSignature.CryptoStandard.CMS);

// set signature field location
Rectangle rect = new Rectangle(36, 648, 144, 780);
PdfFormField field = PdfFormField.createSignature(stamper.getWriter());
field.setFieldName(“Signature”);
field.setWidget(rect, null);
stamper.addAnnotation(field, 1);

// sign the document
signature.preClose();
PdfSignatureAppearance appearance = signature.getAppearance();
appearance.setVisibleSignature(rect, 1, “Signature”);
appearance.setCertificate(chain[0]);
appearance.setRenderingMode(PdfSignatureAppearance.RenderingMode.DESCRIPTION);
appearance.setLayer2Text(“Digitally signed by Your Name”);
signature.close();

This is just an example using iText in Java. The specific implementation details will depend on the language and library you are using. You may need to consult the documentation or seek further guidance from the library’s support resources or community.