书签可以用于标识指定文本的位置。在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)