VintaSoft Imaging .NET SDK 15.2: Documentation for .NET developer
In This Topic
PDF: How to add digital signature to a PDF document?
In This Topic
PDF document can be signed using the digital certificate, which can be obtained from a trusted Certificate Authority (CA) such as DigiCert or GlobalSign. Also it is possible to create self-signed digital certificate for internal or testing purposes.

VintaSoft Imaging .NET SDK can sign PDF document using digital certificate. SDK uses "byte range" technology to a sign a PDF document, i.e. SDK calculates the checksum for binary data of the entire document. Calculated checksum and digital signature is stored in the signature field of the interactive form of PDF document.

If PDF document should be signed using digital signature, the following steps must be done:
If PDF document should contain signature field for further document signing by other person, the following steps must be done:
Here is C#/VB.NET code that demonstrates how to add digital signature to a PDF document:
/// <summary>
/// Signs a PDF or PDF/A document using X509 Certificate.
/// </summary>
/// <param name="inputFilename">The filename of input PDF document.</param>
/// <param name="outputFilename">The filename of output PDF document.</param>
/// <param name="certificate">The X509 certificate.</param>
/// <param name="conformance">PDF/A conformance.</param>
public static void SignDocument(
    string inputFilename,
    string outputFilename,
    X509Certificate2 certificate,
    PdfDocumentConformance conformance)
{
    // create digital signature helper
    PdfPageDigitalSignatureHelper digitalSignatureHelper = new PdfPageDigitalSignatureHelper(certificate, new RectangleF(10, 10, 250, 75));

    // set signing reason
    digitalSignatureHelper.SigningReason = "Test signing";

    // set text
    digitalSignatureHelper.SignatureText = string.Format("Digitally signed by\n{0}", digitalSignatureHelper.SignerName);

    PdfAConverter pdfAConverter = null;
    // if specified PDF/A conformance
    if (conformance != PdfDocumentConformance.Undefined)
    {
        // create PDF/A converter
        pdfAConverter = (PdfAConverter)PdfDocumentConverter.Create(conformance);
        //pdfAConverter.DefaultCmykIccProfileFilename = "DefaultCMYK.icc";
        //pdfAConverter.DefaultRgbIccProfileFilename = "DefaultRGB.icc";
    }

    // sign PDF document and save PDF document to the output file
    digitalSignatureHelper.SignDocument(inputFilename, outputFilename, 0, pdfAConverter);
}
''' <summary>
''' Signs a PDF or PDF/A document using X509 Certificate.
''' </summary>
''' <param name="inputFilename">The filename of input PDF document.</param>
''' <param name="outputFilename">The filename of output PDF document.</param>
''' <param name="certificate">The X509 certificate.</param>
''' <param name="conformance">PDF/A conformance.</param>
Public Shared Sub SignDocument(inputFilename As String, outputFilename As String, _
    certificate As X509Certificate2, conformance As PdfDocumentConformance)

    ' create digital signature helper
    Dim digitalSignatureHelper As New PdfPageDigitalSignatureHelper(certificate, New RectangleF(10, 10, 250, 75))

    ' set signing reason
    digitalSignatureHelper.SigningReason = "Test signing"

    ' set text
    digitalSignatureHelper.SignatureText = String.Format("Digitally signed by" & vbLf & "{0}", digitalSignatureHelper.SignerName)

    Dim pdfAConverter As PdfAConverter = Nothing
    ' if specified PDF/A conformance
    If conformance <> PdfDocumentConformance.Undefined Then
        ' create PDF/A converter
            'pdfAConverter.DefaultCmykIccProfileFilename = "DefaultCMYK.icc";
            'pdfAConverter.DefaultRgbIccProfileFilename = "DefaultRGB.icc";
        pdfAConverter = DirectCast(PdfDocumentConverter.Create(conformance), PdfAConverter)
    End If

    ' sign PDF document and save PDF document to the output file
    digitalSignatureHelper.SignDocument(inputFilename, outputFilename, 0, pdfAConverter)
End Sub


Here is C#/VB.NET code that demonstrates how to add digital signature with timestamp to a PDF document:
using System.Drawing;
using System.Security.Cryptography.X509Certificates;
using Vintasoft.Imaging.Pdf;

/// <summary>
/// Adds digital signature with timestamp to a PDF page.
/// </summary>
public class PdfPageDigitalSignatureHelper_Timestamp
{
    public static void Run()
    {
        // get the X509 certificate from .pfx-file
        using (X509Certificate2 certificate = new X509Certificate2("TestCertificate.pfx", "test"))
        {
            // create a helper that alows to add digital signature to a PDF document
            PdfPageDigitalSignatureHelper digitalSignatureHelper =
                new PdfPageDigitalSignatureHelper(certificate, new RectangleF(20, 20, 250, 100));

            // set the reason for signing
            digitalSignatureHelper.SigningReason = "Approve document";

            // set the name of image file that defines the signature appearance
            digitalSignatureHelper.SignatureImageFilename = "SignatureImage.svg";

            // set the URL to the timestamp server
            digitalSignatureHelper.TimestampServerUrl = "http://timestamp.comodoca.com/";

            // add digital signature to the first PDF page, sign PDF document and save PDF document to the output file
            digitalSignatureHelper.SignDocument("TestDocumentToSign.pdf", "TestDocumentToSign-signed.pdf", 0);
        }
    }
}

Imports System.Drawing
Imports System.Security.Cryptography.X509Certificates
Imports Vintasoft.Imaging.Pdf

''' <summary>
''' Adds digital signature with timestamp to a PDF page.
''' </summary>
Public Class PdfPageDigitalSignatureHelper_Timestamp
    Public Shared Sub Run()
        ' get the X509 certificate from .pfx-file
        Using certificate As New X509Certificate2("TestCertificate.pfx", "test")
            ' create a helper that alows to add digital signature to a PDF document
            Dim digitalSignatureHelper As New PdfPageDigitalSignatureHelper(certificate, New RectangleF(20, 20, 250, 100))

            ' set the reason for signing
            digitalSignatureHelper.SigningReason = "Approve document"

            ' set the name of image file that defines the signature appearance
            digitalSignatureHelper.SignatureImageFilename = "SignatureImage.svg"

            ' set the URL to the timestamp server
            digitalSignatureHelper.TimestampServerUrl = "http://timestamp.comodoca.com/"

            ' add digital signature to the first PDF page, sign PDF document and save PDF document to the output file
            digitalSignatureHelper.SignDocument("TestDocumentToSign.pdf", "TestDocumentToSign-signed.pdf", 0)
        End Using
    End Sub
End Class



Please read how to verify the digital signatures in PDF document here.
Please read how to remove digital signature from PDF document here.