Crafting Page Tree in C# and .NET

A Page Tree is a hierarchical structure that organizes the pages of a PDF document. This allows PDF user applications to quickly access pages and display them even in documents with thousands of pages. The root of the page tree contains links to child nodes, which can be either separate pages or other nested nodes.

Creating and managing a page tree in a PDF document is a fundamental task when working with PDF files in C# and .NET. The page tree structure determines the order of the pages in the document, allowing applications to efficiently process large PDF files. In this article, we will look at how to create a page tree using the library of SautinSoft.PDF.

Step-by-step guide:

  1. Add SautinSoft.PDF from NuGet.
  2. Create a new PDF document.
  3. Get the root node of the page tree.
  4. Set page rotation for the entire document.
  5. Save the document.

Complete code

using System;
using System.IO;
using SautinSoft;
using SautinSoft.Pdf;
using SautinSoft.Pdf.Content;

namespace Sample
{
    class Sample
    {
        /// <summary>
        /// Create a page tree.
        /// </summary>
        /// <remarks>
        /// Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/page-tree.php
        /// </remarks>
        static void Main(string[] args)
        {
            // Before starting this example, please get a free 100-day trial key:
            // https://sautinsoft.com/start-for-free/

            // Apply the key here:
            // PdfDocument.SetLicense("...");

            using (var document = new PdfDocument())
            {
                using (var formattedText = new PdfFormattedText())
                {
                    // Get a page tree root node.
                    var rootNode = document.Pages;
                    // Set page rotation for a whole set of pages.
                    rootNode.Rotate = 90;

                    // Create a left page tree node.
                    var childNode = rootNode.Kids.AddPages();
                    // Overwrite a parent tree node rotation value.
                    childNode.Rotate = 0;

                    // Create a first page.
                    var page = childNode.Kids.AddPage();
                    formattedText.Append("FIRST PAGE");
                    page.Content.DrawText(formattedText, new PdfPoint(0, 0));

                    // Create a second page and set a page media box value.
                    page = childNode.Kids.AddPage();
                    page.SetMediaBox(0, 0, 200, 400);
                    formattedText.Clear();
                    formattedText.Append("SECOND PAGE");
                    page.Content.DrawText(formattedText, new PdfPoint(0, 0));

                    // Create a right page tree node.
                    childNode = rootNode.Kids.AddPages();
                    // Set a media box value.
                    childNode.SetMediaBox(0, 0, 100, 200);

                    // Create a third page.
                    page = childNode.Kids.AddPage();
                    formattedText.Clear();
                    formattedText.Append("THIRD PAGE");
                    page.Content.DrawText(formattedText, new PdfPoint(0, 0));

                    // Create a fourth page and overwrite a rotation value.
                    page = childNode.Kids.AddPage();
                    page.Rotate = 0;
                    formattedText.Clear();
                    formattedText.Append("FOURTH PAGE");
                    page.Content.DrawText(formattedText, new PdfPoint(0, 0));
                }

                document.Save("Page Tree.pdf");
            }

        }
    }
}

Download

Option Infer On

Imports System
Imports System.IO
Imports SautinSoft
Imports SautinSoft.Pdf
Imports SautinSoft.Pdf.Content

Namespace Sample
	Friend Class Sample
		''' <summary>
		''' Create a page tree.
		''' </summary>
		''' <remarks>
		''' Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/page-tree.php
		''' </remarks>
		Shared Sub Main(ByVal args() As String)
			' Before starting this example, please get a free license:
			' https://sautinsoft.com/start-for-free/

			' Apply the key here:
			' PdfDocument.SetLicense("...");

			Using document = New PdfDocument()
				Using formattedText = New PdfFormattedText()
					' Get a page tree root node.
					Dim rootNode = document.Pages
					' Set page rotation for a whole set of pages.
					rootNode.Rotate = 90

					' Create a left page tree node.
					Dim childNode = rootNode.Kids.AddPages()
					' Overwrite a parent tree node rotation value.
					childNode.Rotate = 0

					' Create a first page.
					Dim page = childNode.Kids.AddPage()
					formattedText.Append("FIRST PAGE")
					page.Content.DrawText(formattedText, New PdfPoint(0, 0))

					' Create a second page and set a page media box value.
					page = childNode.Kids.AddPage()
					page.SetMediaBox(0, 0, 200, 400)
					formattedText.Clear()
					formattedText.Append("SECOND PAGE")
					page.Content.DrawText(formattedText, New PdfPoint(0, 0))

					' Create a right page tree node.
					childNode = rootNode.Kids.AddPages()
					' Set a media box value.
					childNode.SetMediaBox(0, 0, 100, 200)

					' Create a third page.
					page = childNode.Kids.AddPage()
					formattedText.Clear()
					formattedText.Append("THIRD PAGE")
					page.Content.DrawText(formattedText, New PdfPoint(0, 0))

					' Create a fourth page and overwrite a rotation value.
					page = childNode.Kids.AddPage()
					page.Rotate = 0
					formattedText.Clear()
					formattedText.Append("FOURTH PAGE")
					page.Content.DrawText(formattedText, New PdfPoint(0, 0))
				End Using

				document.Save("Page Tree.pdf")
				System.Diagnostics.Process.Start(New System.Diagnostics.ProcessStartInfo("Page Tree.pdf") With {.UseShellExecute = True})

			End Using

		End Sub
	End Class
End Namespace

Download


If you need a new code example or have a question: email us at support@sautinsoft.com or ask at Online Chat (right-bottom corner of this page) or use the Form below:



Questions and suggestions from you are always welcome!

We are developing .Net components since 2002. We know PDF, DOCX, RTF, HTML, XLSX and Images formats. If you need any assistance with creating, modifying or converting documents in various formats, we can help you. We will write any code example for you absolutely free.