SelectPdf for .NET - Pdf Bookmarks - C# / 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 C#



using System.Web.Mvc;

namespace SelectPdf.Samples.Controllers
{
    public class PdfBookmarksController : Controller
    {
        // GET: PdfBookmarks
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult SubmitAction(FormCollection collection)
        {

            // 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
         	byte[] pdf =  doc.Save();

            // close pdf document
            doc.Close();

            // return resulted pdf document
            FileResult fileResult = new FileContentResult(pdf, "application/pdf");
            fileResult.FileDownloadName = "Document.pdf";
            return fileResult;
        }
			
    }
}