EVO HTML to PDF Converter

Add A Digital Signature to Generated PDF Document

EVO PDF Client for .NET Documentation

EVO 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 EvoPdf.HtmlToPdfClientDigitalSignatureElement 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

C#
protected void convertToPdf()
{
    // Get the server IP and port
    String serverIP = textBoxServerIP.Text;
    uint serverPort = uint.Parse(textBoxServerPort.Text);

    // Create a HTML to PDF converter object
    HtmlToPdfConverter htmlToPdfConverter = null;
    if (radioButtonUseTcpService.Checked)
        htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort);
    else
        htmlToPdfConverter = new HtmlToPdfConverter(true, textBoxWebServiceUrl.Text);

    // Set optional service password
    if (textBoxServicePassword.Text.Length > 0)
        htmlToPdfConverter.ServicePassword = textBoxServicePassword.Text;

    // Set license key received after purchase to use the converter in licensed mode
    // Leave it not set to use the converter in demo mode
    htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";

    // Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
    // Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
    htmlToPdfConverter.ConversionDelay = 2;

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

    // Convert a HTML string with a marker for digital signature to a PDF document object
    Document pdfDocument = htmlToPdfConverter.ConvertHtmlToPdfDocumentObject(htmlWithDigitalSignatureMarker, baseUrl);

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

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

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

    // Save the PDF document in a memory buffer
    byte[] outPdfBuffer = pdfDocument.Save();
}
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>