PDF书签常见于一些PDF格式的教程或文献等资料中,通过它,读者可以快速的知道每个章节讲述的内容,以此增加文档的可读性和结构性。本文将介绍如何使用C#快速读取一个PDF文档中的所有书签内容。
所需控件:
Spire.PDF for .NET是一个专业的PDF组件,能够在.NET应用程序中独立地创建、编辑、转换、操作和打印PDF文件,无需安装Adobe Acrobat。
PDF文档如下图:
在使用以下代码前,需在Visual studio中创建C#应用程序(vb.net, asp.net也可),并引用Spire.Pdf.dll文件。
具体步骤:
步骤1:创建PdfDocument实例并加载PDF文档。
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("JavaScript高级程序设计.pdf");
步骤2:获取文档的书签集合。
PdfBookmarkCollection bookmarks = doc.Bookmarks;
步骤3:调用GetBookmarkTitle方法,获取文档的父书签和子书签内容。
StringBuilder stringbuilder = new StringBuilder();
//获取父书签和子书签
GetBookmarkTitle(bookmarks, stringbuilder);
GetBookmarkTitle方法如下:
static voidGetBookmarkTitle(PdfBookmarkCollectionbookmarks, StringBuilder stringbuilder)
{
if (bookmarks.Count> 0)
{
foreach (PdfBookmark parentBookmark in bookmarks)
{
stringbuilder.AppendLine(parentBookmark.Title);
GetBookmarkTitle(parentBookmark,stringbuilder);
}
}
}
步骤4:将获取的父书签和子书签内容写入到文本文档。
File.WriteAllText("书签.txt",stringbuilder.ToString());
获取结果:
完整代码:
using System.IO;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Bookmarks;
namespace Get_PDF_Bookmarks
{
class Program
{
static void Main(string[] args)
{
//创建PdfDocument对象
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("JavaScript高级程序设计.pdf");
//获取文档的书签集合
PdfBookmarkCollection bookmarks =doc.Bookmarks;
StringBuilderstringbuilder = new StringBuilder();
//调用GetBookmarkTitle方法获取父书签和子书签内容
GetBookmarkTitle(bookmarks, stringbuilder);
//将获取的父书签和子书签内容写入文本文档
File.WriteAllText("书签.txt",stringbuilder.ToString());
}
static voidGetBookmarkTitle(PdfBookmarkCollectionbookmarks, StringBuilder stringbuilder)
{
if (bookmarks.Count > 0)
{
foreach (PdfBookmarkparentBookmark in bookmarks)
{
stringbuilder.AppendLine(parentBookmark.Title);
GetBookmarkTitle(parentBookmark, stringbuilder);
}
}
}
}
}