Manages the structure of the document.
[DataContractAttribute()]public class DocumentStructure
DocumentStructure manages the structure of the document. This includes the bookmarks that represents the table of content. It can be accessed through the Structure property of LEADDocument.
Not all document types contain support for document structure. For these types of documents (such as TIF file or Text document), the value of IsStructureSupported of Document will be false and the Structure is null and should not be used. The rest of the discussion of this section is related to when IsStructureSupported is true.
When the structure is supported (for example, PDF documents), the value of IsStructureSupported is true and Structure is a valid object can be used.
Loading the document structure can take some time, therefore, it is not read automatically when a new LEADDocument is created from a disk or URL document. This is done so that the document is loaded as quick as possible and to not make the user wait if the bookmarks or table of content is not needed in your application.
To parse the document for bookmarks and table of content, use the Parse method while the value of ParseBookmarks is true (the default value). Usually you can call this method once after the LEADDocument is loaded. The IsParsed property can be used to check if the structure has been parsed.
If Parse is not called or the value of ParseBookmarks is false, then Bookmarks is an empty list. You can use it to add bookmarks if this is a brand new document that was obtained through DocumentFactory.Create in preparation to save.
When Parse is called and ParseBookmarks is true (the default value), the Bookmarks list will be updated with all the bookmarks and table of content items found in the original document. You can then read and modify these bookmarks if needed. If the value of ParseBookmarks is set to false, then Parse will not try to parse the bookmarks in the document.
Parse will also parse the document for any links found in the pages if the value of ParsePageLinks is true (the default value), these links can be obtain through the DocumentPage.GetLinks method. If the value of ParsePageLinks is set to false, then Parse will not try to parse the links found in the pages.
Setting ParseBookmarks or ParsePageLinks to false can help with increasing the speed of the Parse method if the user is not interested in one or the other.
using Leadtools;using Leadtools.Caching;using Leadtools.Document;public void DocumentExample(){var cache = GetCache();var policy = new CacheItemPolicy();policy.AbsoluteExpiration = DateTime.Now + new TimeSpan(0, 0, 1);policy.SlidingExpiration = new TimeSpan(0, 0, 1);var options = new LoadDocumentOptions();options.CachePolicy = policy;options.Cache = cache;if(options.Cache == null){options.Cache = DocumentFactory.Cache;}string documentId = null;using (var document = DocumentFactory.LoadFromFile(Path.Combine(LEAD_VARS.ImagesDir, "Leadtools.pdf"), options)){document.GetDocumentFileName();document.IsReadOnly = false;document.AutoDeleteFromCache = false;// DocumentImages referencedocument.Images.DefaultBitsPerPixel = 24;Console.WriteLine(document.Images.IsResolutionsSupported);Console.WriteLine(document.Images.IsSvgSupported);// Check if the document has a stream in memoryif (document.HasStream){// Get the document streamdocument.GetDocumentStream();}// Indicate whether the document is using the cache or notConsole.WriteLine(document.HasCache);//Indicate if the document was downloadedConsole.WriteLine(document.IsDownloaded);// Gets a value that determines whether the document structure is supportedConsole.WriteLine(document.IsStructureSupported);// Output metadata values (DocumentMetadata reference)Console.WriteLine(document.Metadata.Values.Count);// Get the Mime type of the documentConsole.WriteLine(document.MimeType);// Parse document structure data (DocumentStructure reference)foreach(DocumentBookmark bookmark in document.Structure.Bookmarks){bookmark.Title = null;bookmark.FontStyles = DocumentFontStyles.Normal;document.Structure.Bookmarks.Add(bookmark);Console.WriteLine(bookmark.Children);Console.WriteLine(bookmark.Target);Console.WriteLine(document.Structure.Bookmarks.Count);Console.WriteLine(document.Structure.IsParsed);Console.WriteLine(document.Structure.ParseBookmarks);}document.Structure.Parse();// Get the document URIConsole.WriteLine(document.Uri);// Get each DocumentPage object (DocumentPage & DocumentPages reference)foreach (DocumentPage page in document.Pages){// Get the page as a raster image at the specified resolutionpage.GetImage(0);// Get the page as an Svg with specified optionspage.GetSvg(null);// Flip this page horizontallypage.Reverse();// Use this method to add an array of links for this pagepage.SetLinks(null);page.IsLinksModified = false;page.Resolution = 0;page.ViewPerspective = RasterViewPerspective.TopLeft;page.SetLinks(page.GetLinks());Console.WriteLine($"Page Number: {page.PageNumber}, Original PageNumber: {page.OriginalPageNumber}, Size of the page: {page.Size}");}PrintOutDocumentInfo(document);documentId = document.DocumentId;document.SaveToCache();}System.Threading.Thread.Sleep(2000);var loadFromCacheOptions = new LoadFromCacheOptions();loadFromCacheOptions.Cache = cache;loadFromCacheOptions.DocumentId = documentId;using (var document = DocumentFactory.LoadFromCache(loadFromCacheOptions)){if (null == document){Console.WriteLine("Cached document was expired and deleted!");}}}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}