Imports SelectPdf
Imports System.Drawing

Namespace Controllers
    Public Class PdfTemplatesController
        Inherits Controller

        ' GET: PdfTemplates
        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")

            ' add a template containing an image
            ' the image should repeat on all pdf pages automatically
            Dim template1 As PdfTemplate =
                doc.AddTemplate(New RectangleF(100, 0, 400, 150))
            Dim img1 As New PdfImageElement(0, 0, imgFile)
            template1.Add(img1)

            ' add another template containing an image behind the existing page elements
            ' (under the text) the image should repeat on all pdf pages automatically
            Dim template2 As PdfTemplate =
                doc.AddTemplate(New RectangleF(100, 200, 400, 150))
            template2.Background = True
            Dim img2 As New PdfImageElement(0, 0, imgFile)
            template2.Add(img2)

            ' 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