SelectPdf for .NET - Pdf Headers and Footers with Html to Pdf Converter - VB.NET / ASP.NET Sample

This sample shows how to convert an url to pdf using SelectPdf Pdf Library for .NET and how to set html headers and footers for the generated pdf document.

This sample will also show how to add page numbers in the footer of the generated pdf document and how to modify the document header to be different for a specific page.



Height:  px
Sample header


Height:  px

Sample footer

Sample Code Vb.Net

Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports SelectPdf

Namespace SelectPdf.Samples
    Partial Public Class html_to_pdf_headers_and_footers
        Inherits System.Web.UI.Page

        Protected Sub BtnCreatePdf_Click(sender As Object, e As EventArgs)
            ' get parameters
            Dim headerUrl As String = Server.MapPath("~/files/header.html")
            Dim footerUrl As String = Server.MapPath("~/files/footer.html")

            Dim showHeaderOnFirstPage As Boolean = ChkHeaderFirstPage.Checked
            Dim showHeaderOnOddPages As Boolean = ChkHeaderOddPages.Checked
            Dim showHeaderOnEvenPages As Boolean = ChkHeaderEvenPages.Checked

            Dim headerHeight As Integer = 50
                headerHeight = Convert.ToInt32(TxtHeaderHeight.Text)
            End Try

            Dim showFooterOnFirstPage As Boolean = ChkFooterFirstPage.Checked
            Dim showFooterOnOddPages As Boolean = ChkFooterOddPages.Checked
            Dim showFooterOnEvenPages As Boolean = ChkFooterEvenPages.Checked

            Dim footerHeight As Integer = 50
                footerHeight = Convert.ToInt32(TxtFooterHeight.Text)
            End Try

            ' instantiate a html to pdf converter object
            Dim converter As New HtmlToPdf()

            ' header settings
            converter.Options.DisplayHeader = showHeaderOnFirstPage OrElse _
                showHeaderOnOddPages OrElse showHeaderOnEvenPages
            converter.Header.DisplayOnFirstPage = showHeaderOnFirstPage
            converter.Header.DisplayOnOddPages = showHeaderOnOddPages
            converter.Header.DisplayOnEvenPages = showHeaderOnEvenPages
            converter.Header.Height = headerHeight

            Dim headerHtml As New PdfHtmlSection(headerUrl)
            headerHtml.AutoFitHeight = HtmlToPdfPageFitMode.AutoFit

            ' footer settings
            converter.Options.DisplayFooter = showFooterOnFirstPage OrElse _
                showFooterOnOddPages OrElse showFooterOnEvenPages
            converter.Footer.DisplayOnFirstPage = showFooterOnFirstPage
            converter.Footer.DisplayOnOddPages = showFooterOnOddPages
            converter.Footer.DisplayOnEvenPages = showFooterOnEvenPages
            converter.Footer.Height = footerHeight

            Dim footerHtml As New PdfHtmlSection(footerUrl)
            footerHtml.AutoFitHeight = HtmlToPdfPageFitMode.AutoFit

            ' add page numbering element to the footer
            If ChkPageNumbering.Checked Then
                ' page numbers can be added using a PdfTextSection object
                Dim text As New PdfTextSection(0, 10, "Page: {page_number} of {total_pages}  ", _
                                               New System.Drawing.Font("Arial", 8))
                text.HorizontalAlign = PdfTextHorizontalAlign.Right
            End If

            ' create a new pdf document converting an url
            Dim doc As PdfDocument = converter.ConvertUrl(TxtUrl.Text)

            ' custom header on page 3
            If doc.Pages.Count >= 3 Then
                Dim page As PdfPage = doc.Pages(2)

                Dim customHeader As PdfTemplate = doc.AddTemplate( _
                    page.PageSize.Width, headerHeight)
                Dim customHtml As New PdfHtmlElement( _
                    "<div><b>This is the custom header that " + _
                    "will appear only on page 3!</b></div>", _

                page.CustomHeader = customHeader
            End If

            ' save pdf document
            doc.Save(Response, False, "Sample.pdf")

            ' close pdf document
        End Sub
    End Class
End Namespace