Click or drag to resize
Pdf Library for .NET

Pdf Bookmarks

Large documents are difficult to navigate. To make the navigation and content finding easier in a pdf document, pdf viewers can display a document outline associated with the pdf document. The document outline consists of a tree-structured hierarchy of bookmarks. This bookmarks tree serves as a table of contents for the pdf document, displaying its entire structure. When a bookmark item is clicked, the destination associated with it is displayed in the viewer.

Select.Pdf offers support for bookmarks creation and manipulation. A bookmark is handled by the PdfBookmark class. PdfDocument object handles the collection of bookmarks associated with it through the Bookmarks property and the corresponding PdfBookmarksCollection class.

A bookmark can be added to a pdf document using one of the following methods:

  • AddBookmark(String, PdfDestination) - can be used to create a top level bookmark in the pdf document. When the bookmark is clicked, the pdf viewer will jump to the destination specified in second parameter of the method.

  • AddBookmark(String, PdfDestination, PdfBookmark) - can be used to create a bookmark in the pdf document that has another existing bookmark as parent. When the bookmark is clicked, the pdf viewer will jump to the destination specified in second parameter of the method.

The bookmarks hierarchy can be changed using the Parent and ChildNodes properties of the PdfBookmark object.

Bookmarks can be removed using the Bookmarks collection of the PdfDocument object.

Bookmarks have styles and colors that can be specified using the Style and Color properties of the PdfBookmark object.

Sample Code

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

// create a new pdf document
PdfDocument doc = 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
PdfPage page1 = doc.AddPage();

// add a second page to the document
PdfPage page2 = doc.AddPage();

// add a third page to the document
PdfPage page3 = doc.AddPage();

// define a rendering result object
PdfRenderingResult result;

// create a new pdf font
PdfFont font = doc.AddFont(PdfStandardFont.Helvetica);
font.Size = 14;

// create a new text element and add it to the first page
PdfTextElement text1 = new PdfTextElement(0, 0, "First page", font);
page1.Add(text1);

// create a new text element and add it to the second page
PdfTextElement text2 = new PdfTextElement(0, 0, "Second page", font);
page2.Add(text2);

// create a new text element and add it to the third page
PdfTextElement text3 = new PdfTextElement(0, 0, "Third page", font);
page3.Add(text3);

// create a first level bookmark pointing to the first page
PdfBookmark book1 = doc.AddBookmark("First page", new PdfDestination(page1, 
    new System.Drawing.PointF(0, 0)));

// create a first level bookmark pointing to the second page
PdfBookmark book2 = doc.AddBookmark("Second page", new PdfDestination(page2, 
    new System.Drawing.PointF(0, 0)));

// create a first level bookmark pointing to the third page
PdfBookmark book3 = doc.AddBookmark("Third page", new PdfDestination(page3, 
    new System.Drawing.PointF(0, 0)));

// other text on page 2
PdfTextElement text21 = 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
PdfTextElement text22 = 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
PdfBookmark book = doc.AddBookmark("Text 2", new PdfDestination(page2, 
    result.PdfPageLastRectangle.Location), book2);
book.Color = System.Drawing.Color.Red;
book.Style = PdfBookmarkStyle.Italic;

// save pdf document
doc.Save(Response, false, "Sample.pdf");

// close pdf document
doc.Close();