←Select platform

PdfCustomBookmark Structure

Summary

Options to use when creating custom bookmarks based when creating Adobe Portable Document Format (PDF) documents.

Syntax
C#
VB
Objective-C
C++
Java
[SerializableAttribute()] 
[DataContractAttribute()] 
public struct PdfCustomBookmark 
<DataContractAttribute()> 
<SerializableAttribute()> 
Public Structure PdfCustomBookmark  
   Inherits System.ValueType 
@interface LTPdfCustomBookmark : NSObject <NSCopying, NSCoding> 
public class PdfCustomBookmark 
[DataContractAttribute()] 
[SerializableAttribute()] 
public value class PdfCustomBookmark : public System.ValueType  

Remarks

Use the PdfCustomBookmark structure with PdfDocumentOptions when saving a document using the DocumentFormat.Pdf format.

Custom bookmarks will only be used if creating auto-bookmarks is disabled in the PDF options. So to use custom bookmarks, set the PdfDocumentOptions.AutoBookmarksEnabled property to false.

Example

This example will use OCR to convert an input multipage TIF file to searachble PDF creating a custom bookmark for each page in the output PDF file.

C#
VB
using Leadtools.Document.Writer; 
using Leadtools.Ocr; 
using Leadtools; 
using Leadtools.Codecs; 
 
public void OcrToPDFWithCustomBookmarksExample() 
{ 
   var tifFileName = Path.Combine(LEAD_VARS.ImagesDir, "Example.tif"); 
   var pdfFileName = Path.Combine(LEAD_VARS.ImagesDir, "Example.pdf"); 
 
   int pageCount; 
 
   // Get the input multi-page TIF file 
   using (var codecs = new RasterCodecs()) 
   { 
      codecs.Options.RasterizeDocument.Load.Resolution = 300; 
      CreateMultiPageTifFile(codecs, tifFileName); 
 
      // We are going to create a bookmark for each page, so get number of pages of input file 
      pageCount = codecs.GetTotalPages(tifFileName); 
   } 
 
   // Create the OCR engine 
   using (var ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, false)) 
   { 
      // Start re-using the RasterCodecs we have for performance 
      ocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir); 
 
      // Get the DocumentWriter instance used in this OCR engine  
      var docWriter = ocrEngine.DocumentWriterInstance; 
 
      // Get the current PDF options, modify and then set it back  
      var pdfOptions = docWriter.GetOptions(DocumentFormat.Pdf) as PdfDocumentOptions; 
 
      pdfOptions.DocumentType = PdfDocumentType.PdfA; 
      pdfOptions.ImageOverText = true; 
 
      // Set bookmark options 
      pdfOptions.AutoBookmarksEnabled = false; 
      for (var pageNumber = 1; pageNumber <= pageCount; pageNumber++) 
      { 
         var bookmark = new PdfCustomBookmark(); 
         bookmark.Name = string.Format("Page {0}", pageNumber); 
         bookmark.PageNumber = pageNumber; 
         bookmark.LevelNumber = 0; 
         bookmark.XCoordinate = 0; 
         bookmark.YCoordinate = 0; 
         pdfOptions.CustomBookmarks.Add(bookmark); 
      } 
 
      docWriter.SetOptions(DocumentFormat.Pdf, pdfOptions); 
 
      // ocr and save document with bookmark options applied 
      ocrEngine.AutoRecognizeManager.Run(tifFileName, pdfFileName, null, DocumentFormat.Pdf, null); 
   } 
} 
 
private void CreateMultiPageTifFile(RasterCodecs codecs, string tifFileName) 
{ 
   // Create a multi-page tif file from shipping Ocr1, Ocr2, Ocr3 and Ocr4.tif 
   var tifFileNameTemplate = Path.Combine(LEAD_VARS.ImagesDir, "Ocr{0}.tif"); 
 
   if (File.Exists(tifFileName)) 
      File.Delete(tifFileName); 
 
   RasterImage image = null; 
   for (var pageNumber = 1; pageNumber <= 4; pageNumber++) 
   { 
      var tempImage = codecs.Load(string.Format(tifFileNameTemplate, pageNumber)); 
 
      if (image == null) 
      { 
         image = tempImage; 
      } 
      else 
      { 
         image.AddPage(tempImage); 
         tempImage.Dispose(); 
      } 
   } 
 
   codecs.Save(image, tifFileName, RasterImageFormat.CcittGroup4, 1); 
   image.Dispose(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images"; 
   public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime"; 
} 
Imports Leadtools.Document.Writer 
Imports Leadtools.Ocr 
Imports Leadtools 
Imports Leadtools.Codecs 
 
Public Sub OcrToPDFWithCustomBookmarksExample() 
   Dim tifFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Example.tif") 
   Dim pdfFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "Example.pdf") 
 
   Dim pageCount As Integer 
 
   ' Get the input multi-page TIF file 
   Using codecs As New RasterCodecs() 
      codecs.Options.RasterizeDocument.Load.Resolution = 30 
      CreateMultiPageTifFile(codecs, tifFileName) 
 
      ' We are going to create a bookmark for each page, so get number of pages of input file 
      pageCount = codecs.GetTotalPages(tifFileName) 
   End Using 
 
   ' Create the OCR engine 
   Using ocrEngine As IOcrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD, False) 
      ' Start re-useing the RasterCodecs we have for performance 
      ocrEngine.Startup(Nothing, Nothing, Nothing, LEAD_VARS.OcrLEADRuntimeDir) 
 
      ' Get the DocumentWriter instance used in this OCR engine  
      Dim docWriter As DocumentWriter = ocrEngine.DocumentWriterInstance 
 
      ' Get the current PDF options, modify and then set it back  
      Dim pdfOptions As PdfDocumentOptions = DirectCast(docWriter.GetOptions(DocumentFormat.Pdf), PdfDocumentOptions) 
 
      pdfOptions.DocumentType = PdfDocumentType.PdfA 
      pdfOptions.ImageOverText = True 
 
      ' Set bookmark options 
      pdfOptions.AutoBookmarksEnabled = False 
      For pageNumber As Integer = 1 To pageCount 
         Dim bookmark As New PdfCustomBookmark() 
         bookmark.Name = String.Format("Page {0}", pageNumber) 
         bookmark.PageNumber = pageNumber 
         bookmark.LevelNumber = 0 
         bookmark.XCoordinate = 0 
         bookmark.YCoordinate = 0 
         pdfOptions.CustomBookmarks.Add(bookmark) 
      Next 
 
      docWriter.SetOptions(DocumentFormat.Pdf, pdfOptions) 
 
      ' ocr and save document with bookmark options applied 
      ocrEngine.AutoRecognizeManager.Run(tifFileName, pdfFileName, Nothing, DocumentFormat.Pdf, Nothing) 
   End Using 
End Sub 
 
Private Sub CreateMultiPageTifFile(codecs As RasterCodecs, tifFileName As String) 
   ' Create a multi-page tif file from shipping Ocr1, Ocr2, Ocr3 and Ocr4.tif 
   Dim tifFileNameTemplate As String = Path.Combine(LEAD_VARS.ImagesDir, "Ocr{0}.tif") 
 
   If File.Exists(tifFileName) Then File.Delete(tifFileName) 
 
   Dim image As RasterImage = Nothing 
   For pageNumber As Integer = 1 To 4 
      Dim tempImage As RasterImage = codecs.Load(String.Format(tifFileNameTemplate, pageNumber)) 
 
      If IsNothing(image) Then 
         image = tempImage 
      Else 
         image.AddPage(tempImage) 
         tempImage.Dispose() 
      End If 
   Next 
 
   codecs.Save(image, tifFileName, RasterImageFormat.CcittGroup4, 1) 
   image.Dispose() 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
   Public Const OcrLEADRuntimeDir As String = "C:\LEADTOOLS 20\Bin\Common\OcrLEADRuntime" 
End Class 

Requirements

Target Platforms

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

Leadtools.Document.Writer Assembly