Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports System.Windows.Forms
Imports System.IO
Imports ColorCode
Imports SelectPdf

Namespace SelectPdf.Samples
    Partial Public Class ConvertHtmlCodeToPdf
        Inherits Form

        Private Sub BtnCreatePdf_Click(sender As Object, e As EventArgs) Handles BtnCreatePdf.Click
            Dim renderingEngine As RenderingEngine = CType([Enum].Parse(GetType(RenderingEngine), DdlRenderingEngine.SelectedItem.ToString(), True), RenderingEngine)
            Cursor = Cursors.WaitCursor
            Dim file As String = "Document.pdf"

            Try
                ' read parameters from the form
                Dim htmlString As String = TxtHtmlCode.Text
                Dim baseUrl As String = TxtBaseUrl.Text

                Dim pdf_page_size As String = DdlPageSize.SelectedItem.ToString()
                Dim pageSize As PdfPageSize = DirectCast([Enum].Parse(GetType(PdfPageSize), _
                        pdf_page_size, True), PdfPageSize)

                Dim pdf_orientation As String = DdlPageOrientation.SelectedItem.ToString()
                Dim pdfOrientation As PdfPageOrientation = _
                    DirectCast([Enum].Parse(GetType(PdfPageOrientation), _
                        pdf_orientation, True), PdfPageOrientation)

                Dim webPageWidth As Integer = 1024
                Try
                    webPageWidth = Convert.ToInt32(TxtWidth.Text)
                Catch
                End Try

                Dim webPageHeight As Integer = 0
                Try
                    webPageHeight = Convert.ToInt32(TxtHeight.Text)
                Catch
                End Try

                ' instantiate a html to pdf converter object
                Dim converter As New HtmlToPdf()
                converter.Options.RenderingEngine = renderingEngine

                ' set converter options
                converter.Options.PdfPageSize = pageSize
                converter.Options.PdfPageOrientation = pdfOrientation
                converter.Options.WebPageWidth = webPageWidth
                converter.Options.WebPageHeight = webPageHeight

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

                ' save pdf document
                doc.Save(file)

                ' close pdf document
                doc.Close()
            Catch ex As Exception
                MessageBox.Show([String].Format("Error: {0}", ex.Message), _
                                "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
                Return
            Finally
                Cursor = Cursors.Arrow
            End Try

            ' open generated pdf
            Try
                System.Diagnostics.Process.Start(file)
            Catch
                MessageBox.Show("Could not open generated pdf document", "Error", _
                                MessageBoxButtons.OK, MessageBoxIcon.[Error])
            End Try
        End Sub
        Public Sub New()
            InitializeComponent()            ' initial values
            TxtHtmlCode.Text = "<html>" & vbCr & vbLf & " <body>" & _
                vbCr & vbLf & "  Hello World from selectpdf.com." _
                & vbCr & vbLf & " </body>" & vbCr & vbLf & "</html>" & vbCr & vbLf
            DdlPageSize.SelectedIndex = DdlPageSize.Items.IndexOf("A4")
            DdlPageOrientation.SelectedIndex = DdlPageOrientation.Items.IndexOf("Portrait")

            Try
                ' display highlighted sample code
                Dim code As String = Helper.ReadSourceCode("ConvertHtmlCodeToPdf.vb")
                WBSampleCode.DocumentText = New CodeColorizer().Colorize(code, Languages.VbDotNet)
            Catch
                WBSampleCode.DocumentText = "Sample code not available"
            End Try
        End Sub

        Private Sub TxtHtmlCode_KeyDown(sender As Object, e As KeyEventArgs) _
            Handles TxtHtmlCode.KeyDown
            If e.Control AndAlso e.KeyCode = Keys.A Then
                TxtHtmlCode.SelectAll()
                e.SuppressKeyPress = True
            End If
        End Sub

    End Class
End Namespace
