Java *** 作Word书签(一):添加、删除、读取书签

Java  *** 作Word书签(一):添加、删除、读取书签,第1张

Java *** 作Word书签(一):添加、删除、读取书签

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仓库安装导入。


可参考安装导入方法。


Java 代码示例

【示例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();
}
}

书签读取结果:

(本文完)

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/588190.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-12
下一篇 2022-04-12

发表评论

登录后才能评论

评论列表(0条)

保存