Create a new digitally signed PDF document

Instead of taking an existing PDF document that already has a signature field and signing it, this code sample creates a new PDF document, adds a signature fields, and then digitally signs it.

Create PDF with signature field

The following code creates a new document and adds a page with a signature field.

Document document = new Document();
Page page = new Page(PageSize.A4);
document.Pages.Add(page);

//create a new SignatureField
SignatureField signField = new SignatureField("SignatureField");

//create widget, which specifies the location and size.
SignatureWidget widget = new SignatureWidget(45, page.Height - 200, 150, 40);
signField.Widgets.Add(widget);
page.Widgets.Add(widget);
document.Fields.Add(signField);
Dim document As New Document()
Dim page As New Page(PageSize.A4)
document.Pages.Add(page)

'create a new SignatureField
Dim signField As New SignatureField("SignatureField")

'create widget, which specifies the location and size.
Dim widget As New SignatureWidget(45, page.Height - 200, 150, 40)
signField.Widgets.Add(widget)
page.Widgets.Add(widget)
document.Fields.Add(signField)

Here is the result:

Create Digitally Signed Pdf

Sign PDF using signature handler

The following code signs the new signature field using a signature handler and a certificate store.

 

//open certificate store.
Pkcs12Store ks = null;
using (FileStream file = new FileStream("ChrisSharp.pfx", FileMode.Open, FileAccess.Read))
{
    ks = new Pkcs12Store(file, "Sample");
}

//let the Create factory decide which type should be used.
SignatureHandler handler = StandardSignatureHandler.Create(ks);

signField.SignatureHandler = handler;

//the document is signed. The following code will 
//set some optional info.
signField.ContactInfo = "+31 (0)77 4748677";
signField.Location = "The Netherlands";
signField.Reason = "I fully agree!";

//optional code to set image;
SignatureAppearance signedAppearance = new SignatureAppearance();
signedAppearance.Style = SignatureAppearanceStyle.ImageAndText;
using (System.Drawing.Bitmap bmp = new System.Drawing.Bitmap("logo_pdfkit.gif"))
{
    signedAppearance.Bitmap = bmp;
}
widget.SignedAppearance = signedAppearance;
widget.BackgroundColor = System.Drawing.Color.LightPink;

//don't forget: when writing documents which are signed, you also need access to reading!
using (FileStream fs = new FileStream(@"signature_document.pdf", FileMode.Create, FileAccess.ReadWrite))
{
    document.Write(fs);
}
'open certificate store.
Dim ks As Pkcs12Store = Nothing
Using file As New FileStream("ChrisSharp.pfx", FileMode.Open, FileAccess.Read)
	ks = New Pkcs12Store(file, "Sample")
End Using

'let the Create factory decide which type should be used.
Dim handler As SignatureHandler = StandardSignatureHandler.Create(ks)

signField.SignatureHandler = handler

'the document is signed. The following code will 
'set some optional info.
signField.ContactInfo = "+31 (0)77 4748677"
signField.Location = "The Netherlands"
signField.Reason = "I fully agree!"

'optional code to set image;
Dim signedAppearance As New SignatureAppearance()
signedAppearance.Style = SignatureAppearanceStyle.ImageAndText
Using bmp As New System.Drawing.Bitmap("logo_pdfkit.gif")
	signedAppearance.Bitmap = bmp
End Using
widget.SignedAppearance = signedAppearance
widget.BackgroundColor = System.Drawing.Color.LightPink

'don't forget: when writing documents which are signed, you also need access to reading!
Using fs As New FileStream("signature_document.pdf", FileMode.Create, FileAccess.ReadWrite)
	document.Write(fs)
End Using

Here is the result:

Result Create Digitally Signed Pdf

Download PDFKit.NET 4.0
We will send you a download link
  • This field is for validation purposes and should be left unchanged.
Why do we ask your email address?
We send tips that speed up your evaluation
We let you know about bug fixes
You can always unsubscribe with one click
We never share your address with a 3rd party
Thank you for your download

We have sent an email with a download link.