How to Create a Table of Contents Based on Bookmark Information in PDFs
This article contains sample code that enables you to create a table of contents based on bookmark Information in PDFs. We use Foxit PDF SDK to do it and you can get a free 30 day trial here. Platform: Windows, Mac, Linux Programming Language: C++, Java, C#, Objective-C, C License Key requirement: StandardC++
void AddTOCToPDF(PDFDoc doc) { //Set the table of contents configuration. Int32Array intarray; int depth = doc.GetBookmarkLevelDepth(); if (depth > 0) { for (int i = 1; i <= depth; i++) { intarray.Add(i); } } WString title = L""; TableOfContentsConfig toc_config = TableOfContentsConfig(title, intarray, true, false); //Add the table of contents doc.AddTableOfContents(toc_config); }
Standard Java:
static void AddTOCToPDF(PDFDoc doc) throws PDFException { Int32Array intarray = new Int32Array(); int depth = doc.getBookmarkLevelDepth(); if (depth > 0) { for (int i = 1; i <= depth; i++) { intarray.add(i); } } String title = ""; TableOfContentsConfig toc_config = new TableOfContentsConfig(title, intarray, true, false); //Add the table of contents doc.addTableOfContents(toc_config); }
C#:
static void AddTOCToPDF(PDFDoc doc) { //Set the table of contents configuration. using (var intarray = new Int32Array()) { int depth = doc.GetBookmarkLevelDepth(); if (depth > 0) { for (int i = 1; i <= depth; i++) { intarray.Add(i); } } string title = ""; using (var toc_config = new TableOfContentsConfig(title, intarray, true, false)) { //Add the table of contents doc.AddTableOfContents(toc_config); } } }
Objective-C:
void addTOCToPDF(FSPDFDoc* doc) { @autoreleasepool { //Set the table of contents configuration. FSInt32Array* intarray = [[FSInt32Array alloc] init]; int depth = [doc getBookmarkLevelDepth]; if (depth > 0) { for (int i = 1; i <= depth; i++) { [intarray add:i]; } } NSString* title = @""; FSTableOfContentsConfig* toc_config = [[FSTableOfContentsConfig alloc] initWithTitle:title bookmark_level_array:intarray is_show_serial_number:true include_toc_pages:false]; //Add the table of contents [doc addTableOfContentsWithTableOfContentsConfig:toc_config]; } }
C:
void AddTOCToPDF(FS_PDFDOC_HANDLE &doc) { //Set the table of contents configuration. int depth = 0; FSDK_PDFDoc_GetBookmarkLevelDepth(doc, depth); int* intarray = (int*)malloc(depth * sizeof(int)); if (depth > 0) { for (int i = 1; i <= depth; i++) { intarray[i - 1] = i; } } FS_WSTR title; title.str = L""; title.len = 0; FSTableOfContentsConfig toc_config; toc_config.bookmark_level_array = intarray; toc_config.bookmark_level_array_length = depth; toc_config.title = title; toc_config.is_show_serial_number = true; toc_config.include_toc_pages = false; //Add the table of contents FSDK_PDFDoc_AddTableOfContents0(doc, toc_config); free(intarray); }
Updated on April 29, 2022