书签是 PDF 中很有用的一个功能,特别是在阅读篇幅较长的 PDF 文档时,更能体现其作用。读者只需要点击书签,就可快速跳转到文档中相应的位置。书签还可以编排过后当作目录使用。本文将展示如何用 Spire.PDF for .NET 获取 PDF 书签。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
获取 PDF 文档中的所有书签
详细操作步骤如下:
- 创建 PdfDocument 的对象。
- 用 PdfDocument.LoadFromFile() 方法从磁盘加载 PDF 文档。
- 用 PdfDocument.Bookmarks 属性获取 PDF 文档中书签的集合。
- 用自定义的方法 GetBookmarks() 获取所有书签内容并保存到 TXT 文件中。
- C#
- VB.NET
using System;
using System.IO;
using System.Text;
using Spire.Pdf;
using Spire.Pdf.Bookmarks;
namespace GetBookmark
{
internal class Program
{
static void Main(string[] args)
{
// 创建 PdfDocument 的对象
PdfDocument pdf = new PdfDocument();
//从磁盘加载 PDF 文档
pdf.LoadFromFile(@"D:\testp\test.pdf");
//获取PDF文档中书签的集合
PdfBookmarkCollection bookmarks = pdf.Bookmarks;
//获取所有书签内容并保存到 TXT 文件中
String result = "GetPdfBookmarks.txt";
GetBookmarks(bookmarks, result);
}
public static void GetBookmarks(PdfBookmarkCollection bookmarks, string result)
{
//创建 StringBuilder 的对象
StringBuilder content = new StringBuilder();
//获取 PDF 文档书签的信息
if (bookmarks.Count > 0)
{
content.AppendLine("Pdf bookmarks:");
foreach (PdfBookmark parentBookmark in bookmarks)
{
//获取标题
content.AppendLine(parentBookmark.Title);
//获取文本样式
string textStyle = parentBookmark.DisplayStyle.ToString();
content.AppendLine(textStyle);
GetChildBookmark(parentBookmark, content);
}
}
//保存到TXT文件
File.WriteAllText(result, content.ToString());
}
public static void GetChildBookmark(PdfBookmark parentBookmark, StringBuilder content)
{
if (parentBookmark.Count > 0)
{
foreach (PdfBookmark childBookmark in parentBookmark)
{
//获取标题
content.AppendLine(childBookmark.Title);
//获取文本样式
string textStyle = childBookmark.DisplayStyle.ToString();
content.AppendLine(textStyle);
GetChildBookmark(childBookmark, content);
}
}
}
}
}
Imports System
Imports System.IO
Imports System.Text
Imports Spire.Pdf
Imports Spire.Pdf.Bookmarks
Module Program
Sub Main(args As String())
'创建 PdfDocument 的对象
Dim doc As New PdfDocument()
'从磁盘加载 PDF 文档
doc.LoadFromFile("D:\testp\test12.pdf")
'获取 PDF 文档中书签的集合
Dim bookmarks As PdfBookmarkCollection = doc.Bookmarks
'获取所有书签内容并保存到 TXT 文件中
Dim result As String = "GetPdfBookmarks.txt"
GetBookmarks(bookmarks, result)
End Sub
Private Sub GetBookmarks(ByVal bookmarks As PdfBookmarkCollection, ByVal result As String)
'创建 StringBuilder 的对象
Dim content As New StringBuilder()
'获取 PDF 文档书签的信息
If bookmarks.Count > 0 Then
content.AppendLine("Pdf bookmarks:")
For Each parentBookmark As PdfBookmark In bookmarks
'获取标题
content.AppendLine(parentBookmark.Title)
'获取文本样式
Dim textStyle As String = parentBookmark.DisplayStyle.ToString()
content.AppendLine(textStyle)
GetChildBookmark(parentBookmark, content)
Next parentBookmark
End If
'保存到 TXT 文件
File.WriteAllText(result, content.ToString())
End Sub
Private Sub GetChildBookmark(ByVal parentBookmark As PdfBookmark, ByVal content As StringBuilder)
If parentBookmark.Count > 0 Then
For Each childBookmark As PdfBookmark In parentBookmark
'获取标题
content.AppendLine(childBookmark.Title)
'获取文本样式
Dim textStyle As String = childBookmark.DisplayStyle.ToString()
content.AppendLine(textStyle)
GetChildBookmark(childBookmark, content)
Next childBookmark
End If
End Sub
End Module
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。