书签可以用于标识指定文本的位置。在Word文档中,我们可以对指定内容添加书签,修改或替换现有书签的内容,如果不再需要一个书签了,也可以很容易的删除它。Spire.Doc组件同样为开发人员提供了相应的功能来实现Word中对书签的操作。以下内容将介绍如何使用Spire.Doc在Word文档中添加,替换和删除书签。
添加书签
Spire.Doc提供了一个类Paragraph,在该类中有两个方法AppendBookmarkStart (string name) 和 AppendBookmarkEnd (string name) 可以帮助我们添加书签到指定的段落,其中BookmarkStart代表书签的起始位置,BookmarkEnd代表书签的结束位置。
C#
//加载文档
Document document = new Document();
document.LoadFromFile(@"向日葵.docx");
//添加书签 “bookmark”
Section section = document.Sections[0];
section.Paragraphs[5].AppendBookmarkStart("bookmark");
section.Paragraphs[6].AppendBookmarkEnd("bookmark");
//保存文档
document.SaveToFile("添加书签.docx", FileFormat.Docx);
VB.NET
'加载文档
Dim document As Document = New Document
document.LoadFromFile("向日葵.docx")
'添加书签 “bookmark”
Dim section As Section = document.Sections(0)
section.Paragraphs(5).AppendBookmarkStart("bookmark")
section.Paragraphs(6).AppendBookmarkEnd("bookmark")
'保存文档
document.SaveToFile("添加书签.docx", FileFormat.Docx)
替换书签
BookmarkNavigator用于导航到书签,通过它我们可以获取,替换和删除指定书签的内容。此外,Spire.Doc还支持在替换书签时保留原书签的格式,仅需要将ReplaceBookmarkContent (TextBodyPart bodyPart, bool isKeepSourceFirstParaFormat, bool saveFormatting) 方法中的相关参数设置为true。
C#
//加载文档
Document document = new Document();
document.LoadFromFile(@"添加书签.docx");
//添加一个section到文档
Section sec = document.AddSection();
//添加两个段落到section
sec.AddParagraph().AppendText("Welcome Back, ");
sec.AddParagraph().AppendText("Friend! ");
//获取段落内容
ParagraphBase firstReplacementParagraph = sec.Paragraphs[0].Items.FirstItem as ParagraphBase;
ParagraphBase lastReplacementParagraph = sec.Paragraphs[sec.Paragraphs.Count - 1].Items.LastItem as ParagraphBase;
TextBodySelection selection = new TextBodySelection(firstReplacementParagraph, lastReplacementParagraph);
TextBodyPart part = new TextBodyPart(selection);
//移动到书签 “bookmark”, 删除它的内容并保留格式
BookmarksNavigator bookmarkNavigator = new BookmarksNavigator(document);
bookmarkNavigator.MoveToBookmark("bookmark", true, true);
bookmarkNavigator.DeleteBookmarkContent(true);
//用新添加段落的内容替换掉原书签的内容并保留格式
bookmarkNavigator.ReplaceBookmarkContent(part, true, true);
//移除section并保存文档
document.Sections.Remove(sec);
document.SaveToFile("替换书签.docx");
VB.NET
'加载文档
Dim document As Document = New Document
document.LoadFromFile("添加书签.docx")
'添加一个section到文档
Dim sec As Section = document.AddSection
'添加两个段落到section
sec.AddParagraph.AppendText("Welcome Back, ")
sec.AddParagraph.AppendText("Friend! ")
'获取段落内容
Dim firstReplacementParagraph As ParagraphBase = CType(sec.Paragraphs(0).Items.FirstItem,ParagraphBase)
Dim lastReplacementParagraph As ParagraphBase = CType(sec.Paragraphs((sec.Paragraphs.Count - 1)).Items.LastItem,ParagraphBase)
Dim selection As TextBodySelection = New TextBodySelection(firstReplacementParagraph, lastReplacementParagraph)
Dim part As TextBodyPart = New TextBodyPart(selection)
'移动到书签 “bookmark”, 删除它的内容并保留格式
Dim bookmarkNavigator As BookmarksNavigator = New BookmarksNavigator(document)
bookmarkNavigator.MoveToBookmark("bookmark", true, true)
bookmarkNavigator.DeleteBookmarkContent(true)
'用新添加段落的内容替换掉原书签的内容并保留格式
bookmarkNavigator.ReplaceBookmarkContent(part, true, true)
'移除section并保存文档
document.Sections.Remove(sec)
document.SaveToFile("替换书签.docx")
删除书签
在Spire.Doc中,每一个Word文档都含有一个书签的集合,我们可以通过Document类的Bookmarks属性来访问该集合,并可以通过该集合的FindByName(string name)方法来查找指定的书签,然后将其删除。
C#
//加载文档
Document document = new Document();
document.LoadFromFile(@"添加书签.docx");
Bookmark bookmark = document.Bookmarks.FindByName("bookmark");
//移除书签 “bookmark”
document.Bookmarks.Remove(bookmark);
//保存文档
document.SaveToFile("删除书签.docx", FileFormat.Docx);
VB.NET
'加载文档
Dim document As Document = New Document
document.LoadFromFile("添加书签.docx")
Dim bookmark As Bookmark = document.Bookmarks.FindByName("bookmark")
'移除书签 “bookmark”
document.Bookmarks.Remove(bookmark)
'保存文档
document.SaveToFile("删除书签.docx", FileFormat.Docx)