Winnovative HTML to PDF Converter

Add A Digital Signature to Generated PDF Document

Winnovative HTML to PDF Converter for .NET Documentation

Winnovative HTML to PDF Converter allows you to add digital signatures to the generated PDF document. In order to add digital signatures you need a certificate with private and public keys. These certificates are usually stored in a .pfx or a .p12 file in PKCS#12 format and they can be password protected. A digital signature is represented by a WinnovativeDigitalSignatureElement object which can be placed in any position in a PDF page. Below is a complete example of adding a digital signature to a PDF document.

Code Sample - Add A Digital Signature to Generated PDF Document

protected void convertToPdfButton_Click(object sender, EventArgs e)
{
    // Create a PDF document
    Document pdfDocument = new Document();

    // Set license key received after purchase to use the converter in licensed mode
    // Leave it not set to use the converter in demo mode
    pdfDocument.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";

    // Add a page to PDF document
    PdfPage pdfPage = pdfDocument.AddPage();

    try
    {
        string htmlWithDigitalSignatureMarker = htmlStringTextBox.Text;
        string baseUrl = baseUrlTextBox.Text;

        // Add a HTML string with a marker for digital signature to PDF document
        HtmlToPdfElement htmlToPdfElement = new HtmlToPdfElement(htmlWithDigitalSignatureMarker, baseUrl);
        pdfPage.AddElement(htmlToPdfElement);

        // Make the HTML element with 'digital_signature_element' mapping ID a link to digital signature properties
        HtmlElementMapping digitalSignatureMapping = htmlToPdfElement.HtmlElementsMappingOptions.HtmlElementsMappingResult.GetElementByMappingId("digital_signature_element");
        if (digitalSignatureMapping != null)
        {
            PdfPage digitalSignaturePage = digitalSignatureMapping.PdfRectangles[0].PdfPage;
            RectangleF digitalSignatureRectangle = digitalSignatureMapping.PdfRectangles[0].Rectangle;

            string certificateFilePath = Server.MapPath(@"~/DemoAppFiles/Input/Certificates/wnvpdf.pfx");

            // Get the certificate from password protected PFX file
            DigitalCertificatesCollection certificates = DigitalCertificatesStore.GetCertificates(certificateFilePath, "winnovative");
            DigitalCertificate certificate = certificates[0];

            // Create the digital signature
            DigitalSignatureElement signature = new DigitalSignatureElement(digitalSignatureRectangle, certificate);
            signature.Reason = "Protect the document from unwanted changes";
            signature.ContactInfo = "The contact email is support@winnovative-software.com";
            signature.Location = "Development server";
            digitalSignaturePage.AddElement(signature);
        }

        // Save the PDF document in a memory buffer
        byte[] outPdfBuffer = pdfDocument.Save();

        // Send the PDF as response to browser

        // Set response content type
        Response.AddHeader("Content-Type", "application/pdf");

        // Instruct the browser to open the PDF file as an attachment or inline
        Response.AddHeader("Content-Disposition", String.Format("attachment; filename=Digital_Signatures.pdf; size={0}", outPdfBuffer.Length.ToString()));

        // Write the PDF document buffer to HTTP response
        Response.BinaryWrite(outPdfBuffer);

        // End the HTTP response and stop the current page processing
        Response.End();
    }
    finally
    {
        // Close the PDF document
        pdfDocument.Close();
    }
}
HTML Code with a Region Marked to Become a Digital Signature

XML
<!DOCTYPE html>
<html>
<head>
    <title>Add Digital Signatures in PDF</title>
</head>
<body style="font-family: 'Times New Roman'; font-size: 14px">
    <span style="font-size: 24px; font-weight: bold">Digital Signatures</span><br />
    <br />
    <span>The image and the text below will become a link to digital signature properties:</span>
    <br />
    <br />
    <div data-mapping-enabled="true" data-mapping-id="digital_signature_element" style="width: 320px; padding: 5px 5px 5px 5px; border: 2px solid royalblue">
        <span style="font-size: 16px; font-weight: bold; text-decoration: underline; color: navy">Click to open the digital signature properties</span><br />
        <br />
        <img alt="Logo Image" style="width: 300px" src="img/logo.jpg" />
    </div>
    <br />
    <br />
</body>
</html>