SelectPdf for .NET - Digital Signatures - C# / ASP.NET MVC Sample

Digital signatures can be added to a PDF document using PdfDigitalSignatureElement objects. Adding a digital signature requires a PKCS#12 certificate (provided as a .pfx or a .p12 file).

Sample certificate file:
Certificate

The following sample shows how to add a digital signature to a pdf document using SelectPdf Library for .NET.

IMPORTANT: Please note that the certificate used is a self signed certificate generated for testing purposes only. The signature will appear as not valid in a pdf viewer. Using a valid certificate will result in a valid digital signature.


Sample Code C#



using System.Web.Mvc;

namespace SelectPdf.Samples.Controllers
{
    public class DigitalSignaturesController : Controller
    {
        // GET: DigitalSignatures
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult SubmitAction(FormCollection collection)
        {
            // create a new pdf document
            PdfDocument doc = new PdfDocument();

            // add a new page to the document
            PdfPage page = doc.AddPage();

            // get image path 
            // the image will be used to display the digital signature over it
            string imgFile = Server.MapPath("~/files/logo.png");

            // get certificate path
            string certFile = Server.MapPath("~/files/selectpdf.pfx");

            // define a rendering result object
            PdfRenderingResult result;

            // create image element from file path 
            PdfImageElement img = new PdfImageElement(0, 0, imgFile);
            result = page.Add(img);

            // get the #PKCS12 certificate from file
            PdfDigitalCertificatesCollection certificates =
                PdfDigitalCertificatesStore.GetCertificates(certFile, "selectpdf");
            PdfDigitalCertificate certificate = certificates[0];

            // create the digital signature object
            PdfDigitalSignatureElement signature =
                new PdfDigitalSignatureElement(result.PdfPageLastRectangle, certificate);
            signature.Reason = "SelectPdf";
            signature.ContactInfo = "SelectPdf";
            signature.Location = "SelectPdf";
            page.Add(signature);

            // save pdf document
            byte[] pdf = doc.Save();

            // close pdf document
            doc.Close();

            // return resulted pdf document
            FileResult fileResult = new FileContentResult(pdf, "application/pdf");
            fileResult.FileDownloadName = "Document.pdf";
            return fileResult;
        }
    }
}