Adding ink eSignatures to PDFs in UWP

This guide covers how to add an electronic signature (eSignature) to a document, both using the PSPDFKit user interface and programmatically.

Adding a Signature Programmatically

Electronic signatures are modeled using annotations, so they may sometimes be referred to as signature annotations.

Signatures can be ink or image annotations with the IsSignature property set to true. Thus, to programmatically create signatures, you should use instances of PSPDFKit.Pdf.Annotation.Ink or PSPDFKit.Pdf.Annotation.Image. You can add these to your document like you would with any other annotation by using the CreateAnnotationAsync method.

Signature annotations can be created, updated, and deleted if your license includes either the Annotations component or the Electronic Signatures component. If your license includes Electronic Signatures but not Annotations, then signatures are the only type of annotation that can be modified: Modifications to ink or image annotations where isSignature is false, or to annotations of any other type, will be disallowed.

For example, to create an ink signature:

var annotation = new Ink
{
    PageIndex = 0,
    IsSignature = true,
    Lines = new List<IList<DrawingPoint>>
    {
        new List<DrawingPoint>
        {
            new DrawingPoint(x: 5, y: 5),
            new DrawingPoint(x: 95, y: 95)
        },
        new List<DrawingPoint>
        {
            new DrawingPoint(x: 95, y: 5),
            new DrawingPoint(x: 5, y: 95)
        }
    },
    BoundingBox = new Rect(
        x: 0,
        y: 0,
        width: 100,
        height: 100
    )
};

await PdfView.Controller.CreateAnnotationAsync(annotation);

For example, to create an image signature:

// Read the image in a buffer.
var buffer = await FileIO.ReadBufferAsync(file);

// Create an annotation attachment for the image in the document.
var attachment = await PdfView.Document.CreateAttachmentAsync(buffer, file.ContentType);

// Create the annotation template and set the image attachment ID and the content type.
var annotation = new Image
{
    PageIndex = 0
    IsSignature = true,
    // In this case, "image/png".
    ContentType = file.ContentType,
    ImageAttachmentId = attachment,
    Description = "Signature Image",
    BoundingBox = new Rect(100, 100, 100, 100),
};

await PDFView.Controller.CreateAnnotationAsync(annotation);

Using the PSPDFKit User Interface

If you’re using PSPDFKit with Forms, users can show the signature creation modal view by tapping a signature form field in the document. Without a signature form field, users can add signatures by selecting the signature tool button.

Screenshot of PSPDFKit for Windows toolbar with the sign button highlighted.

When the signature creation modal view is shown, the user can add their signature by drawing, selecting an image, or typing. The Draw option allows users to add their signature in their own handwriting as they would on paper. This is especially suited to using a touchscreen and stylus such as the Surface Pen.

The Image option allows users to select an existing saved image. This is ideal for use on a user’s main device where they have their files available. With compatible hardware, the user can also take a photo to scan their signature from paper.

The Type option allows users to enter their name and select a signature style. Typing a signature is a safe option in any situation, and it’s the most accessible way to sign: It’s compatible with screen readers such as VoiceOver, TalkBack, NVDA, and JAWS, as well as other accessibility technologies like Switch Control on Mac and iOS. PSPDFKit provides four signature styles out of the box, and your app can easily change the available styles by setting a list of fonts.

With the Draw and Type options, the user can choose between black and two shades of blue, which is useful when it’s necessary for the signature to stand out against the form itself.