Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括:
1. 添加书签
1.1 给指定段落添加书签
1.2 给指定字符串添加书签
2. 删除书签
2.1删除书签
2.2 删除书签文本
3. 读取书签文本
使用工具:Free Spire.Doc for Java (免费版)
Jar文件获取及导入:
方法1: 通过官网下载jar文件包。下载后,解压文件。并将lib文件夹下的Spire.Doc.jar文件导入到java程序。参考如下导入效果:
方法2:可通过maven仓库安装导入。可参考安装导入方法。
【示例1】给指定段落添加书签
-
import com.spire.doc.*;
-
import com.spire.doc.documents.Paragraph;
-
-
public class AppendBookmark {
-
public static void main(String[]args){
-
//加载需要添加书签的Word文档
-
Document doc = new Document();
-
doc.loadFromFile("sample.docx");
-
-
//获取需要添加书签的段落
-
Paragraph para = doc.getSections().get(0).getParagraphs().get(1);
-
-
//在段落起始、末尾添加书签的开始标签和结束标签,并命名书签
-
BookmarkStart start = para.appendBookmarkStart("bookmark01");
-
para.getItems().insert(0,start);
-
para.appendBookmarkEnd("bookmark01");
-
-
//保存文档
-
doc.saveToFile("appendbookmark.docx",FileFormat.Docx_2013);
-
doc.dispose();
-
}
-
}
书签添加效果:
【示例2】给指定字符串添加书签
-
import com.spire.doc.*;
-
import com.spire.doc.documents.Paragraph;
-
import com.spire.doc.documents.TextSelection;
-
import com.spire.doc.fields.TextRange;
-
-
public class AppendBookmarkToCharacter {
-
public static void main(String[]args){
-
//加载文档
-
Document doc = new Document();
-
doc.loadFromFile("sample.docx");
-
-
//查找指定字符串
-
TextSelection textSelection = doc.findString("采用蕴含深意的象征语言,揭示人生的哲理。",false,false);
-
TextRange range = textSelection.getAsOneRange();
-
Paragraph para = range.getOwnerParagraph();
-
int index = para.getChildObjects().indexOf(range);
-
-
//添加书签
-
BookmarkStart start = new BookmarkStart(doc,"书签1");
-
BookmarkEnd end = new BookmarkEnd(doc, "书签1");
-
para.getChildObjects().insert(index, start);
-
para.getChildObjects().insert(index + 2, end);
-
-
//保存文档
-
doc.saveToFile("appendbookmarktocharacter.docx",FileFormat.Docx_2013);
-
doc.dispose();
-
}
-
}
书签添加效果:
【示例3】删除书签、书签文本
-
import com.spire.doc.*;
-
import com.spire.doc.documents.BookmarksNavigator;
-
-
public class DeleteBookmarkAndBookmarkcontent {
-
public static void main(String[]args){
-
//加载文档
-
Document doc = new Document();
-
doc.loadFromFile("test.docx");
-
-
//定位到特定的书签
-
BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
-
bookmarksNavigator.moveToBookmark("bookmark1");
-
-
//删除书签处的内容
-
bookmarksNavigator.deleteBookmarkContent(true);
-
-
//删除书签(仅删除书签标签,原文书签处的内容)
-
doc.getBookmarks().remove(doc.getBookmarks().get("bookmark1"));//通过书签名删除
-
doc.getBookmarks().removeAt(0);//通过索引值删除
-
-
//保存文档
-
doc.saveToFile("deletebookmark.docx",FileFormat.Docx_2013);
-
}
-
}
运行程序后,生成的文档可查看书签删除效果。
【示例4】读取书签文本
-
import com.spire.doc.*;
-
import com.spire.doc.documents.BookmarksNavigator;
-
import com.spire.doc.documents.Paragraph;
-
import com.spire.doc.documents.TextBodyPart;
-
import com.spire.doc.fields.TextRange;
-
-
import java.io.IOException;
-
import java.io.PrintWriter;
-
-
public class GetBookmarkText {
-
public static void main(String[]args) throws IOException {
-
//加载包含书签的Word文档
-
Document doc = new Document();
-
doc.loadFromFile("test.docx");
-
-
//获取书签
-
BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
-
bookmarksNavigator.moveToBookmark("bookmark1");
-
-
//获取书签文本
-
TextBodyPart textBodyPart = bookmarksNavigator.getBookmarkContent();
-
-
//创建String变量
-
String text = "";
-
-
//遍历书签内容的项目
-
for (Object item : textBodyPart.getBodyItems()) {
-
-
//判断项目是否为段落
-
if (item instanceof Paragraph) {
-
Paragraph paragraph = (Paragraph) item;
-
-
//遍历段落中的子对象
-
for (Object childObj : paragraph.getChildObjects()) {
-
-
//判断子对象是否为TextRange
-
if (childObj instanceof TextRange) {
-
-
//获取TextRange中的文本
-
TextRange textRange = (TextRange) childObj;
-
text = text + textRange.getText();
-
}
-
}
-
}
-
}
-
-
//将获取到的文本写入Txt文件
-
PrintWriter printWriter = new PrintWriter("BookmarkText.txt");
-
printWriter.println(text);
-
printWriter.close();
-
}
-
}
书签读取结果:
(本文完)
阅读(241844) | 评论(0) | 转发(0) |