SelectPdf for .NET - Convert Current Web Page to Pdf - VB.NET / ASP.NET MVC Sample

This sample shows how to use SelectPdf Html to Pdf Converter to convert the current web page to pdf, preserving the values entered in the page controls before hitting the 'Convert' button.

Sample text field:

Sample drop down:


Sample check box:


Sample text field:
px

Sample text field:
px


Sample Code VB.NET



Imports System.IO
Imports SelectPdf

Namespace Controllers
    Public Class CurrentWebPageToPdfController
        Inherits Controller

        ' GET: /CurrentWebPageToPdf/
        Public Function Index() As ActionResult
            ViewData.Add("SampleText", "sample text")
            ViewData.Add("DropDownList1", "Value3")

            Dim DropDownList1 As New List(Of SelectListItem)()
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value1",
                 .Value = "Value1",
                 .Selected = ViewData("DropDownList1") IsNot Nothing _
                 AndAlso ViewData("DropDownList1").ToString() = "Value1"
            })
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value2",
                 .Value = "Value2",
                 .Selected = ViewData("DropDownList1") IsNot Nothing _
                 AndAlso ViewData("DropDownList1").ToString() = "Value2"
            })
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value3",
                 .Value = "Value3",
                 .Selected = ViewData("DropDownList1") IsNot Nothing _
                 AndAlso ViewData("DropDownList1").ToString() = "Value3"
            })
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value4",
                 .Value = "Value4",
                 .Selected = ViewData("DropDownList1") IsNot Nothing _
                 AndAlso ViewData("DropDownList1").ToString() = "Value4"
            })

            ViewData.Add("DropDownList1Items", DropDownList1)

            ViewData.Add("SampleCheckbox", "true")

            ViewData.Add("SampleText2", "1000")
            ViewData.Add("SampleText3", "800")

            Return View()
        End Function

        <HttpPost> _
        Public Function SubmitAction(collection As FormCollection) As ActionResult
            ' set data for the view
            Dim MyViewData As ViewDataDictionary = GetViewData(collection)

            ' render view to get html
            Dim html As New StringWriter()

            Dim viewEngineResult As ViewEngineResult =
                ViewEngines.Engines.FindView(ControllerContext, "Index", Nothing)
            Dim viewContext As New ViewContext(ControllerContext,
                    viewEngineResult.View, MyViewData, New TempDataDictionary(), html)
            viewEngineResult.View.Render(viewContext, html)

            Dim htmlString As String = html.ToString()

            ' get base url
            Dim baseUrl As String = Me.ControllerContext.HttpContext.Request.
                Url.AbsoluteUri.Substring(0, Me.ControllerContext.HttpContext.Request.
                Url.AbsoluteUri.Length - "CurrentWebPageToPdf/Convert".Length)

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

            ' create a new pdf document converting a html string
            Dim doc As PdfDocument = converter.ConvertHtmlString(htmlString, baseUrl)

            ' 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

        Private Function GetViewData(collection As FormCollection) As ViewDataDictionary
            Dim MyViewData As New ViewDataDictionary()

            MyViewData.Add("SampleText", collection("TxtSampleText"))
            MyViewData.Add("DropDownList1", collection("DropDownList1"))

            Dim DropDownList1 As New List(Of SelectListItem)()
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value1",
                 .Value = "Value1",
                 .Selected = MyViewData("DropDownList1") IsNot Nothing _
                 AndAlso MyViewData("DropDownList1").ToString() = "Value1"
            })
            DropDownList1.Add(New SelectListItem() With {
                .Text = "Value2",
                .Value = "Value2",
                .Selected = MyViewData("DropDownList1") IsNot Nothing _
                AndAlso MyViewData("DropDownList1").ToString() = "Value2"
            })
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value3",
                 .Value = "Value3",
                 .Selected = MyViewData("DropDownList1") IsNot Nothing _
                 AndAlso MyViewData("DropDownList1").ToString() = "Value3"
            })
            DropDownList1.Add(New SelectListItem() With {
                 .Text = "Value4",
                 .Value = "Value4",
                 .Selected = MyViewData("DropDownList1") IsNot Nothing _
                 AndAlso MyViewData("DropDownList1").ToString() = "Value4"
            })

            MyViewData.Add("DropDownList1Items", DropDownList1)

            MyViewData.Add("SampleCheckbox", collection("ChkSampleCheckbox") = "on")

            MyViewData.Add("SampleText2", collection("TxtSampleText2"))
            MyViewData.Add("SampleText3", collection("TxtSampleText3"))

            Return MyViewData

        End Function
    End Class
End Namespace