Imports SelectPdf

Namespace Controllers
    Public Class HeadersAndFootersController
        Inherits Controller

        ' GET: HeadersAndFooters
        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()
            doc.Margins = New PdfMargins(10, 10, 0, 0)

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

            ' create a new pdf font
            Dim font2 As PdfFont = doc.AddFont(PdfStandardFont.Helvetica)
            font2.Size = 12
            font2.IsUnderline = True

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

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

            ' header template (100 points in height) with image element
            doc.Header = doc.AddTemplate(doc.Pages(0).ClientRectangle.Width, 100)
            Dim img1 As New PdfImageElement(0, 0, imgFile)
            doc.Header.Add(img1)

            ' footer template (100 points in height) with text element
            doc.Footer = doc.AddTemplate(doc.Pages(0).ClientRectangle.Width, 100)
            Dim text1 As New PdfTextElement(0, 50,
                    "Footer text: Document generated by SelectPdf", font2)
            text1.ForeColor = System.Drawing.Color.Blue
            doc.Footer.Add(text1)

            ' create a new text element and add it to the page if page elements are added 
            ' after header and footer is set, they will not be displayed in those areas.
            Dim text As New PdfTextElement(0, 0, Helper.SomeLongText(), font)
            page.Add(text)

            ' 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