SelectPdf for .NET - Advanced Pdf Security Settings and Digital Signatures - VB.NET / ASP.NET MVC Sample

This sample shows how to modify security settings of an existing PDF document using SelectPdf, how to set a password to be able to view or modify the document (password: 'test1' and 'test2') and also specifies user permissions for the pdf document (if the user can print, copy content, fill forms, modify, etc).

Here is our initial test pdf document:
Test file

The pdf document encryption can be done using either RC4 or AES algorithm, using 40 bit, 128 bit or 256 bit encryption keys.

The sample also show how to sign an existing PDF document using a PFX certificate.

Sample PFX certificate file:

IMPORTANT: Please note that the certificate used is a self signed certificate generated for testing purposes only. The signature will appear as not valid in a pdf viewer. Using a valid certificate will result in a valid digital signature.

Sample Code VB.NET

Imports SelectPdf

Namespace Controllers
    Public Class AdvancedPdfSecurityController
        Inherits Controller

        ' GET: AdvancedPdfSecurity
        Public Function Index() As ActionResult
            Return View()
        End Function

        Public Function SubmitAction(collection As FormCollection) As ActionResult
            ' the initial file
            Dim file As String = Server.MapPath("~/files/doc1.pdf")

            ' the certificate
            Dim certFile As String = Server.MapPath("~/files/selectpdf.pfx")

            ' load the pdf document using the advanced security manager
            Dim security As New PdfSecurityManager()

            ' encryption algorithm and key length
            security.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES
            security.EncryptionKeySize = PdfEncryptionKeySize.EncryptKey256Bit

            ' set document passwords
            security.OwnerPassword = "test1"
            security.UserPassword = "test2"

            'set document permissions
            security.CanAssembleDocument = False
            security.CanCopyContent = True
            security.CanEditAnnotations = True
            security.CanEditContent = True
            security.CanFillFields = True
            security.CanPrint = True

            ' add the digital signature
            security.Sign(certFile, "selectpdf")

            ' save pdf document
            Dim pdf As Byte() = security.Save()

            ' close pdf document

            ' return resulted pdf document
            Dim fileResult As FileResult = New FileContentResult(pdf, "application/pdf")
            fileResult.FileDownloadName = "Document.pdf"
            Return fileResult
        End Function
    End Class
End Namespace