Parses the Table of Content and internal links or jumps between the pages of the PDF file associated with this PDFDocument.
public void ParseDocumentStructure(PDFParseDocumentStructureOptions options)
Public Sub ParseDocumentStructure( _ByVal options As PDFParseDocumentStructureOptions _)
public void parseDocumentStructure(int pdfParseDocumentStructureOptions) public:void ParseDocumentStructure(PDFParseDocumentStructureOptions options)
options
Document structure parsing options.
Use ParseDocumentStructure to parse the document structure of the PDF document. The document structure is the Table of Contents (TOC) represented by a list of PDF bookmark objects stored in the Bookmarks property and the internal links between pages (or jumps) found in the document stored in the InternalLinks property.
When you create a new PDFDocument object from a PDF file on disk, the Bookmarks and InternalLinks properties will not be parsed automatically and their values will be null. To read these values, you must use ParseDocumentStructure. When this method returns, the Bookmarks property will be populated with a list of PDFBookmark objects for each bookmark item found in the document (or an empty list if the document does not contain any bookmarks). Similarly, the InternalLinks property will be populated with a list of PDFInternalLink objects for each internal link or jump between the pages found in the document (or an empty list of no such items exist).
options controls which items to parse. You can parse the bookmarks only, internal links only, any other values or all.
To write bookmarks to a PDF file, use the PDFFile.WriteBookmarks method.
This example will read the document structure of a PDF file.
using Leadtools;using Leadtools.Codecs;using Leadtools.Controls;using Leadtools.Pdf;using Leadtools.Svg;using Leadtools.WinForms;public void PDFDocumentParseDocumentStructureExample(){string pdfFileName1 = Path.Combine(LEAD_VARS.ImagesDir, @"Leadtools.pdf");string pdfFileName2 = Path.Combine(LEAD_VARS.ImagesDir, @"Bookmarks.pdf");// Create a version of the source file with a few bookmarksPDFFile file = new PDFFile(pdfFileName1);// Load the pagesfile.Load();List<PDFBookmark> bookmarks = new List<PDFBookmark>();// We will bookmarks for each page, cascading levels:// Goto page 1// Goto page 2// Goto page 3// Goto page 4int level = 0;for (int i = 0; i < file.Pages.Count; i++){PDFFilePage page = file.Pages[i];PDFBookmark bookmark = new PDFBookmark();bookmark.Title = "Goto page " + page.PageNumber.ToString();bookmark.BookmarkStyle = PDFBookmarkStyle.Plain;bookmark.Level = level;bookmark.TargetPageNumber = page.PageNumber;bookmark.TargetPageFitType = PDFPageFitType.Default;bookmark.TargetPosition = new PDFPoint(0, page.Height);bookmark.TargetZoomPercent = 0;bookmarks.Add(bookmark);level++;if (level > 8){// Reset levelslevel = 0;}}file.WriteBookmarks(bookmarks, pdfFileName2);// Create a document for the output fileusing (PDFDocument document = new PDFDocument(pdfFileName2)){// Now read the bookmarks and internal links in the documentdocument.ParseDocumentStructure(PDFParseDocumentStructureOptions.InternalLinks | PDFParseDocumentStructureOptions.Bookmarks);Console.WriteLine("{0} bookmarks found:", document.Bookmarks.Count);foreach (PDFBookmark bookmark in document.Bookmarks){Console.WriteLine(" Title: {0}, Level: {1}, Target page: {2}", bookmark.Title, bookmark.Level, bookmark.TargetPageNumber);}Console.WriteLine("{0} Internal links found:", document.InternalLinks.Count);foreach (PDFInternalLink internalLink in document.InternalLinks){Console.WriteLine(" Source bounds: {0}, Target page: {1}", internalLink.SourceBounds, internalLink.TargetPageNumber);}}}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsImports Leadtools.CodecsImports Leadtools.ControlsImports Leadtools.PdfImports Leadtools.SvgImports Leadtools.WinFormsPublic Sub PDFDocumentParseDocumentStructureExample()Dim pdfFileName1 As String = Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf")Dim pdfFileName2 As String = Path.Combine(LEAD_VARS.ImagesDir, "Bookmarks.pdf")' Create a version of the source file with a few bookmarksDim file As PDFFile = New PDFFile(pdfFileName1)' Load the pagesfile.Load()Dim bookmarks As List(Of PDFBookmark) = New List(Of PDFBookmark)()' We will bookmarks for each page, cascading levels:' Goto page 1' Goto page 2' Goto page 3' Goto page 4Dim level As Integer = 0Dim i As Integer = 0Do While i < file.Pages.CountDim page As PDFFilePage = file.Pages(i)Dim bookmark As PDFBookmark = New PDFBookmark()bookmark.Title = "Goto page " & page.PageNumber.ToString()bookmark.BookmarkStyle = PDFBookmarkStyle.Plainbookmark.Level = levelbookmark.TargetPageNumber = page.PageNumberbookmark.TargetPageFitType = PDFPageFitType.Defaultbookmark.TargetPosition = New PDFPoint(0, page.Height)bookmark.TargetZoomPercent = 0bookmarks.Add(bookmark)level += 1If level > 8 Then' Reset levelslevel = 0End Ifi += 1Loopfile.WriteBookmarks(bookmarks, pdfFileName2)' Create a document for the output fileUsing document As PDFDocument = New PDFDocument(pdfFileName2)' Now read the bookmarks and internal links in the documentdocument.ParseDocumentStructure(PDFParseDocumentStructureOptions.InternalLinks Or PDFParseDocumentStructureOptions.Bookmarks)Console.WriteLine("{0} bookmarks found:", document.Bookmarks.Count)For Each bookmark As PDFBookmark In document.BookmarksConsole.WriteLine(" Title: {0}, Level: {1}, Target page: {2}", bookmark.Title, bookmark.Level, bookmark.TargetPageNumber)Next bookmarkConsole.WriteLine("{0} Internal links found:", document.InternalLinks.Count)For Each internalLink As PDFInternalLink In document.InternalLinksConsole.WriteLine(" Source bounds: {0}, Target page: {1}", internalLink.SourceBounds, internalLink.TargetPageNumber)Next internalLinkEnd UsingEnd SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
