SelectPdf for .NET - Pdf Watermarks - VB.NET / ASP.NET MVC Sample

This sample shows how to create a new PDF document using SelectPdf, how to add several pages and watermark all the pages with a transparent image in the background.

Pdf watermarks are done using pdf templates that contain elements that repeat on each page of the pdf document.

Rendering Engine:


Sample Code VB.NET



Imports SelectPdf

Namespace Controllers
    Public Class PdfWatermarksController
        Inherits Controller

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

        <HttpPost>
        Public Function SubmitAction(collection As FormCollection) As ActionResult
            ' create a new pdf document
            Dim doc As New PdfDocument()

            ' create a new pdf font
            Dim font As PdfFont = doc.AddFont(PdfStandardFont.Helvetica)
            font.Size = 24

            ' add a new page to the document
            Dim page As PdfPage = doc.AddPage()

            ' create a new text element and add it to the page
            Dim text As New PdfTextElement(0, 0, Helper.SomeLongText(), font)
            page.Add(text)

            ' get image path
            Dim imgFile As String = Server.MapPath("~/files/logo.png")

            ' watermark all pages - add a template containing an image 
            ' to the bottom right of the page
            ' the image should repeat on all pdf pages automatically
            ' the template should be rendered behind the rest of the page elements
            Dim template As PdfTemplate = doc.AddTemplate(doc.Pages(0).ClientRectangle)
            Dim img As New PdfImageElement(doc.Pages(0).ClientRectangle.Width - 300,
                                           doc.Pages(0).ClientRectangle.Height - 150,
                                           imgFile)
            img.Transparency = 50
            template.Background = True
            template.Add(img)

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

            ' close pdf document
            doc.Close()

            ' 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