赞
踩
新建Winform项目,并且下载iTextSharp.dll,并在项目中引用。
using iTextSharp.text.pdf;
using System;
using System.Collections.Generic;
// 递归函数,用于获取指定书签下的所有子书签并保持结构
List<Dictionary<string, object>> GetAllSubBookmarks(List<Dictionary<string, object>> bookmarks, string parentTitle)
{
List<Dictionary<string, object>> result = new List<Dictionary<string, object>>();
foreach (var bookmark in bookmarks)
{
string title = (string)bookmark["Title"];
if (title == parentTitle)
{
if (bookmark.ContainsKey("Kids"))
{
List<Dictionary<string, object>> kids = (List<Dictionary<string, object>>)bookmark["Kids"];
foreach (var subBookmark in kids)
{
Dictionary<string, object> subBookmarkWithChildren = new Dictionary<string, object>();
subBookmarkWithChildren["Title"] = subBookmark["Title"];
subBookmarkWithChildren["Page"] = subBookmark["Page"];
subBookmarkWithChildren["Kids"] = GetAllSubBookmarks(kids, (string)subBookmark["Title"]);
result.Add(subBookmarkWithChildren);
}
}
}
}
return result;
}
// 加载PDF文件
PdfReader reader = new PdfReader("your_pdf_file_path.pdf");
// 获取PDF的目录信息
List<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(reader);
// 获取第一个书签下的所有子书签并保持结构
string parentTitle = (string)bookmarks[0]["Title"];
List<Dictionary<string, object>> allSubBookmarks = GetAllSubBookmarks(bookmarks, parentTitle);
// 输出所有子书签
foreach (var subBookmark in allSubBookmarks)
{
Console.WriteLine("Sub-Title: " + subBookmark["Title"] + ", Page: " + subBookmark["Page"]);
if (subBookmark.ContainsKey("Kids"))
{
foreach (var childBookmark in (List<Dictionary<string, object>>)subBookmark["Kids"])
{
Console.WriteLine(" Child Title: " + childBookmark["Title"] + ", Page: " + childBookmark["Page"]);
}
}
}
// 关闭PDF阅读器
reader.Close();
定义递归函数 GetAllSubBookmarks :
加载PDF文件和获取目录信息:
获取第一个书签下的所有子书签:
输出所有子书签:
关闭PDF阅读器:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。