Convert from HTML to PDF in CSharp VB and ASP.NET with a Free 3rd Party Library

Converting from html to pdf is not an easy task. There are some tools that can do that, but most of them cost thousands of dollars. SelectPdf offers a Community Edition (FREE) of the powerful Html To Pdf Converter for .NET that can be found in the full featured pdf library.

3.6 Star
52,885 times
Add to favorites
E-mail Twitter Digg Facebook

Solution explorer

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)

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

            ' close pdf document
        End Sub
    End Class
End Namespace