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 PdfLinks
        Inherits Form

        Private Sub BtnCreatePdf_Click(sender As Object, e As EventArgs) _
            Handles BtnCreatePdf.Click
            Cursor = Cursors.WaitCursor
            Dim file As String = "Document.pdf"

            Try
                ' create a new pdf document
                Dim doc As New PdfDocument()

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

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

                ' define a rendering result object
                Dim result As PdfRenderingResult

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

                ' create a new text element and add it to the first page
                Dim text1 As New PdfTextElement(0, 0, _
                        "First page (no link on this text)", font)
                page1.Add(text1)

                ' create a new text element and add it to the second page
                Dim text2 As New PdfTextElement(0, 0, _
                        "Second page (no link on this text)", font)
                page2.Add(text2)

                ' create external link in 2 steps

                ' 1 - create the link text
                Dim linkText1 As New PdfTextElement(0, 50, _
                        "External link (click to go to selectpdf.com)", font)
                result = page1.Add(linkText1)

                ' 2 - add the link using the text rendering rectangle
                Dim extLink1 As New PdfExternalLinkElement(result.PdfPageLastRectangle, _
                                                           "https://selectpdf.com")
                page1.Add(extLink1)

                ' create internal link in 2 steps

                ' 1 - create the link text
                Dim linkText2 As New PdfTextElement(0, 100, _
                    "Internal link (click to go to the second page)", font)
                result = page1.Add(linkText2)

                ' 2 - add the link using the text rendering rectangle
                Dim intLink1 As New PdfInternalLinkElement(result.PdfPageLastRectangle, _
                                                           New PdfDestination(page2))
                page1.Add(intLink1)

                ' 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()
            Try
                ' display highlighted sample code
                Dim code As String = Helper.ReadSourceCode("PdfLinks.vb")
                WBSampleCode.DocumentText = New CodeColorizer().Colorize(code, Languages.VbDotNet)
            Catch
                WBSampleCode.DocumentText = "Sample code not available"
            End Try
        End Sub

    End Class
End Namespace
