←Select platform

PDFInternalLink Structure

Summary
Provides information about the PDF internal link properties.
Syntax
C#
C++/CLI
Java
Python
[SerializableAttribute()] 
public struct PDFInternalLink 
public class PDFInternalLink 
[SerializableAttribute()] 
public value class PDFInternalLink : public System.ValueType  
class PDFInternalLink: 
Remarks

The PDFInternalLink structure contains the properties of a single PDF internal link. An internal link in a PDF file is a location on a page that defines a hot area, when this location is clicked with the mouse. An external viewer should read the properties of the link and proceed to go to the page defined by the properties of the internal link while optionally change the view parameters (zoom factor, fit page mode and scroll position).

The bookmarks and internal links of a PDF has a document (global) scope and are not part of any page. As a result, to read the bookmarks of a document use the PDFDocument.ParseDocumentStructure method and then access the PDFDocument.Bookmarks and PDFDocument.InternalLinks collections.

The internal link has the following properties for the source hot spot:

  • SourcePageNumber: This is the 1-based number of the page where the link is located.

  • SourceBounds: This is the location and size on the source page of the link hot spot. An external viewer may choose to change the mouse cursor shape to a "Hand" when the user hovers over this link and proceed to perform the action of the link when the user clicks the link.

  • BorderWidth: The width of the border of the internal link. An external viewer may choose to frame the source bounds of the link with the width of border specified by this property.

  • BorderColor: The color of the border of the internal link. An external viewer may choose to frame the source bounds of the link with the color of the frame specified by this property.

  • BorderDashLength: The length of dash marks of the border of the internal link. An external viewer may choose to frame the source bounds of the link with the dash length of the frame specified by this property.

The action of an internal link consists of the following:

  • TargetPageNumber: This the 1-based integer to go to. External viewers should scroll to this page when this internal link is activated.

  • TargetPosition: The position in PDF units (1/72 of an inch and bottom-left) of the target page to scroll to. External viewers should scroll to this position when the internal link is activated.

  • TargetZoomPercent: The zoom percent (100 equals to no zoom) of the target page. External viewers should zoom to this value when the internal link is activated

  • TargetPageFitType: The page fit type of the target page. External viewers should set the page view properties based on this value when this internal link is activated.

Example
C#
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 bookmarks 
   PDFFile file = new PDFFile(pdfFileName1); 
   // Load the pages 
   file.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 4 
   int 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 levels 
         level = 0; 
      } 
   } 
 
   file.WriteBookmarks(bookmarks, pdfFileName2); 
 
   // Create a document for the output file 
   using (PDFDocument document = new PDFDocument(pdfFileName2)) 
   { 
      // Now read the bookmarks and internal links in the document 
      document.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:\LEADTOOLS22\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.7.10
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Pdf Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.