Проектирование дерева страниц в PDF-документе на C# и .NET

Дерево страниц — это иерархическая структура, которая упорядочивает страницы PDF-документа. Это позволяет пользовательским приложениям PDF быстро получать доступ к страницам и отображать их даже в документах с тысячами страниц. Корень дерева страниц содержит ссылки на дочерние узлы, которые могут быть как отдельными страницами, так и другими вложенными узлами.

Создание дерева страниц в PDF-документе и управление им является фундаментальной задачей при работе с PDF-файлами в C# и .NET. Древовидная структура страниц определяет порядок расположения страниц в документе, позволяя приложениям эффективно обрабатывать большие файлы в формате PDF. В этой статье мы рассмотрим как создать дерево страниц, используя библиотеку SautinSoft.PDF.

Пошаговое руководство:

  1. Добавить SautinSoft.PDF из NuGet.
  2. Создать новый PDF-документ.
  3. Получить корневой узел дерева страниц.
  4. Установить поворот страницы для всего документа.
  5. Сохранить документ.

Полный код

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


Если вам нужен пример кода или у вас есть вопрос: напишите нам по адресу support@sautinsoft.ru или спросите в онлайн-чате (правый нижний угол этой страницы) или используйте форму ниже:



Вопросы и предложения всегда приветствуются!

Мы разрабатываем компоненты .Net с 2002 года. Мы знаем форматы PDF, DOCX, RTF, HTML, XLSX и Images. Если вам нужна помощь в создании, изменении или преобразовании документов в различных форматах, мы можем вам помочь. Мы напишем для вас любой пример кода абсолютно бесплатно.