[SerializableAttribute()][DataContractAttribute()]public struct PdfCustomBookmark
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.
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.
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, "out_Example.pdf");int pageCount;// Get the input multi-page TIF fileusing (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 filepageCount = codecs.GetTotalPages(tifFileName);}// Create the OCR engineusing (var ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD)){// Start re-using the RasterCodecs we have for performanceocrEngine.Startup(null, null, null, LEAD_VARS.OcrLEADRuntimeDir);// Get the DocumentWriter instance used in this OCR enginevar docWriter = ocrEngine.DocumentWriterInstance;// Get the current PDF options, modify and then set it backvar pdfOptions = docWriter.GetOptions(DocumentFormat.Pdf) as PdfDocumentOptions;pdfOptions.DocumentType = PdfDocumentType.PdfA;pdfOptions.ImageOverText = true;// Set bookmark optionspdfOptions.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 appliedocrEngine.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.tifvar 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:\LEADTOOLS22\Resources\Images";public const string OcrLEADRuntimeDir = @"C:\LEADTOOLS22\Bin\Common\OcrLEADRuntime";}