书签不仅可以帮助我们跳转到文档中相应的位置,还可以让我们快速地了解文档所讲述的内容。
这篇文章将介绍如何使用Spire.PDF组件给PDF文档添加书签,以及修改和删除现有PDF文档中的指定书签。
添加书签
在Spire.PDF中,每个PDF文档都有一个书签列表(PdfBookmarkCollection)。我们可以通过PdfDocument对象的Bookmarks属性来获取该列表,然后通过Add () 方法将书签添加到列表中。
C#
//新建PDF文档
PdfDocument pdf = new PdfDocument();
//添加页面
PdfPageBase page = pdf.Pages.Add();
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add("第一页");
//设置书签所指向的页面和位置,(0,0)表示页面的开始位置
bookmark.Destination = new PdfDestination(page);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Black;
//保存文档
pdf.SaveToFile("Bookmark2.pdf");
VB.NET
'新建PDF文档
Dim pdf As New PdfDocument()
'添加页面
Dim page As PdfPageBase = pdf.Pages.Add()
'添加书签
Dim bookmark As PdfBookmark = pdf.Bookmarks.Add("第一页")
'设置书签所指向的页面和位置,(0,0)表示页面的开始位置
bookmark.Destination = New PdfDestination(page)
bookmark.Destination.Location = New PointF(0, 0)
'设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold
bookmark.Color = Color.Black
'保存文档
pdf.SaveToFile("Bookmark2.pdf")
添加子书签
添加子书签和添加普通书签的方式基本一样,不同的是普通书签是直接添加到文档的书签列表里,而子书签则是添加到父书签的列表里。
C#
//新建PDF文档
PdfDocument pdf = new PdfDocument();
//添加页面
PdfPageBase page = pdf.Pages.Add();
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add("第一章 热传导");
//设置书签指向的页面和位置
bookmark.Destination = new PdfDestination(page);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.SeaGreen;
//添加子书签
PdfBookmark childBookmark = bookmark.Insert(0, "1.1 热传导基本知识");
//设置子书签指向的页面和位置
childBookmark.Destination = new PdfDestination(page);
childBookmark.Destination.Location = new PointF(400, 300);
//设置子书签的文本格式和颜色
childBookmark.DisplayStyle = PdfTextStyle.Regular;
childBookmark.Color = Color.Black;
//保存文档
pdf.SaveToFile("ChildBookmark.pdf");
VB.NET
'新建PDF文档
Dim pdf As New PdfDocument()
'添加页面
Dim page As PdfPageBase = pdf.Pages.Add()
'添加书签
Dim bookmark As PdfBookmark = pdf.Bookmarks.Add("第一章 热传导")
'设置书签指向的页面和位置
bookmark.Destination = New PdfDestination(page)
bookmark.Destination.Location = New PointF(0, 0)
'设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold
bookmark.Color = Color.SeaGreen
'添加子书签
Dim childBookmark As PdfBookmark = bookmark.Insert(0, "1.1 热传导基本知识")
'设置子书签指向的页面和位置
childBookmark.Destination = New PdfDestination(page)
childBookmark.Destination.Location = New PointF(400, 300)
'设置子书签的文本格式和颜色
childBookmark.DisplayStyle = PdfTextStyle.Regular
childBookmark.Color = Color.Black
'保存文档
pdf.SaveToFile("ChildBookmark.pdf")
添加书签到现有文档
除了在新建的PDF文档里添加书签,我们还可以给现有的PDF文档添加书签。加载PDF文档的方法除LoadFromFile以外,还有LoadFromStream (从流加载),LoadFromHTML(从HTML加载)等,可根据自己的需求选择相应的加载方式。
C#
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("示例.pdf");
for (int i = 0; i < pdf.Pages.Count; i++)
{
//添加书签
PdfBookmark bookmark = pdf.Bookmarks.Add(string.Format("第{0}章", i+1));
//设置书签指向的页面和位置
bookmark.Destination = new PdfDestination(pdf.Pages[i]);
bookmark.Destination.Location = new PointF(0, 0);
//设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Black;
}
//保存文档
pdf.SaveToFile("Bookmark2.pdf");
VB.NET
'加载文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("示例.pdf")
For i As Integer = 0 To pdf.Pages.Count - 1
'添加书签
Dim bookmark As PdfBookmark = pdf.Bookmarks.Add(String.Format("第{0}章", i + 1))
'设置书签指向的页面和位置
bookmark.Destination = New PdfDestination(pdf.Pages(i))
bookmark.Destination.Location = New PointF(0, 0)
'设置书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold
bookmark.Color = Color.Black
Next
'保存文档
pdf.SaveToFile("Bookmark2.pdf")
修改书签
Spire.PDF支持多种书签修改方式,例如修改现有书签的内容,插入新书签到现有书签列表,插入子书签到现有书签等。这里我们选取修改书签内容和插入新书签到现有书签列表进行介绍。
修改现有书签内容
C#
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//获取书签列表
PdfBookmarkCollection bookmarks = pdf.Bookmarks;
//获取第一个书签
PdfBookmark bookmark = bookmarks[0];
//修改书签指向的页面
bookmark.Destination = new PdfDestination(document.Pages[1]);
//修改书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold;
bookmark.Color = Color.Green;
//修改书签的title
bookmark.Title = "修改";
//保存文档
pdf.SaveToFile("ModifyBookmark.pdf");
VB.NET
'加载文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("Bookmark2.pdf")
'获取书签列表
Dim bookmarks As PdfBookmarkCollection = pdf.Bookmarks
'获取第一个书签
Dim bookmark As PdfBookmark = bookmarks(0)
'修改书签指向的页面
bookmark.Destination = New PdfDestination(document.Pages(1))
'修改书签的文本格式和颜色
bookmark.DisplayStyle = PdfTextStyle.Bold
bookmark.Color = Color.Green
'修改书签的title
bookmark.Title = "修改"
'保存文档
pdf.SaveToFile("ModifyBookmark.pdf")
插入新书签到现有书签列表
C#
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//插入新书签到指定位置
PdfBookmark bookmark = pdf.Bookmarks.Insert(2, "新增第三章");
//设置书签所指向的页面和位置
bookmark.Destination = new PdfDestination(document.Pages[1]);
bookmark.Destination.Location = new PointF(0, 300);
//保存文档
pdf.SaveToFile("InsertBookmark.pdf");
VB.NET
'加载文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("Bookmark2.pdf")
'插入新书签到指定位置
Dim bookmark As PdfBookmark = pdf.Bookmarks.Insert(2, "新增第三章")
'设置书签所指向的页面和位置
bookmark.Destination = New PdfDestination(document.Pages(1))
bookmark.Destination.Location = New PointF(0, 300)
'保存文档
pdf.SaveToFile("InsertBookmark.pdf")
删除书签
C#
删除书签时,可以使用书签的序号,也可以使用书签的名称。这里所使用的是序号的方式。
//加载文档
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Bookmark2.pdf");
//获取所有书签
PdfBookmarkCollection bookmarks = document.Bookmarks;
//删除第一个书签
bookmarks.RemoveAt(0);
//保存文档
pdf.SaveToFile("DeleteBookmark.pdf");
VB.NET
'加载文档
Dim pdf As New PdfDocument()
pdf.LoadFromFile("Bookmark2.pdf")
'获取所有书签
Dim bookmarks As PdfBookmarkCollection = document.Bookmarks
'删除第一个书签
bookmarks.RemoveAt(0)
'保存文档
pdf.SaveToFile("DeleteBookmark.pdf")