SelectPdf for .NET - Pdf Bookmarks - VB.NET / ASP.NET MVC Sample

This sample shows how to create a new PDF document using SelectPdf, how to add several pages, texts and bookmarks to the document.

A bookmark is a special link related to the pdf document that appears in the Bookmarks panel of the pdf viewer. If the pdf document that is created is very long, pdf bookmarks are a must.

Pdf bookmarks can be created with multi-levels and different styles.


Sample Code VB.NET



Imports SelectPdf

Namespace Controllers
    Public Class PdfBookmarksController
        Inherits Controller

        ' GET: PdfBookmarks
        Public Function Index() As ActionResult
            Return View()
        End Function

        <HttpPost>
        Public Function SubmitAction(collection As FormCollection) As ActionResult
            ' create a new pdf document
            Dim doc As New PdfDocument()

            ' instruct the document to show the bookmarks panel when opened in a viewer
            doc.ViewerPreferences.PageMode = PdfViewerPageMode.UseOutlines

            ' 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()

            ' add a third page to the document
            Dim page3 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

            ' create a new text element and add it to the first page
            Dim text1 As New PdfTextElement(0, 0, "First page", 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", font)
            page2.Add(text2)

            ' create a new text element and add it to the third page
            Dim text3 As New PdfTextElement(0, 0, "Third page", font)
            page3.Add(text3)

            ' create a first level bookmark pointing to the first page
            Dim book1 As PdfBookmark = doc.AddBookmark("First page",
                    New PdfDestination(page1, New System.Drawing.PointF(0, 0)))

            ' create a first level bookmark pointing to the second page
            Dim book2 As PdfBookmark = doc.AddBookmark("Second page",
                    New PdfDestination(page2, New System.Drawing.PointF(0, 0)))

            ' create a first level bookmark pointing to the third page
            Dim book3 As PdfBookmark = doc.AddBookmark("Third page",
                    New PdfDestination(page3, New System.Drawing.PointF(0, 0)))

            ' other text on page 2
            Dim text21 As New PdfTextElement(0, 100, "Text 1 on page 2", font)
            result = page2.Add(text21)

            ' add a level 2 bookmark to this text 
            ' (using the bookmark for the page 2 as parent and 
            ' the text rendering location as bookmark destination)
            doc.AddBookmark("Text 1",
                New PdfDestination(page2, result.PdfPageLastRectangle.Location), book2)

            ' other text on page 2
            Dim text22 As New PdfTextElement(0, 400, "Text 2 on page 2", font)
            result = page2.Add(text22)

            ' add a level 2 bookmark to this text 
            ' (using the bookmark for the page 2 as parent and the text rendering 
            ' location as bookmark destination) some styles are set for this bookmark
            Dim book As PdfBookmark = doc.AddBookmark("Text 2",
                New PdfDestination(page2, result.PdfPageLastRectangle.Location), book2)
            book.Color = System.Drawing.Color.Red
            book.Style = PdfBookmarkStyle.Italic

            ' 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
    End Class
End Namespace