java书签_Java 操作Word书签(一):添加、删除、读取书签

Word中,书签功能常用于查找、定位、标记特定字符或段落,对于篇幅较大的文档,此功能非常实用。下面,将介绍通过Java程序来添加及删除Word书签的方法。示例要点包括:

1. 添加书签

1.1 给指定段落添加书签

1.2 给指定字符串添加书签

2. 删除书签

2.1删除书签

2.2 删除书签文本

3. 读取书签文本

使用工具:Free Spire.Doc for Java (免费版)

Jar文件获取及导入:

方法1: 通过官网

946c432b13b24f571eec9232015a3cd4.png

方法2:可通过maven仓库

Java 代码示例

【示例1】给指定段落添加书签

import com.spire.doc.*;importcom.spire.doc.documents.Paragraph;public classAppendBookmark {public static voidmain(String[]args){//加载需要添加书签的Word文档

Document doc = newDocument();

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();

}

}

书签添加效果:

982648da1bdf202ecdf0d798c7b6d716.png

【示例2】给指定字符串添加书签

import com.spire.doc.*;importcom.spire.doc.documents.Paragraph;importcom.spire.doc.documents.TextSelection;importcom.spire.doc.fields.TextRange;public classAppendBookmarkToCharacter {public static voidmain(String[]args){//加载文档

Document doc = newDocument();

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();

}

}

书签添加效果:

c273fd7c424ca14b7dfa5844cbfc094d.png

【示例3】删除书签、书签文本

import com.spire.doc.*;importcom.spire.doc.documents.BookmarksNavigator;public classDeleteBookmarkAndBookmarkcontent {public static voidmain(String[]args){//加载文档

Document doc = newDocument();

doc.loadFromFile("test.docx");//定位到特定的书签

BookmarksNavigator bookmarksNavigator = newBookmarksNavigator(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.*;importcom.spire.doc.documents.BookmarksNavigator;importcom.spire.doc.documents.Paragraph;importcom.spire.doc.documents.TextBodyPart;importcom.spire.doc.fields.TextRange;importjava.io.IOException;importjava.io.PrintWriter;public classGetBookmarkText {public static void main(String[]args) throwsIOException {//加载包含书签的Word文档

Document doc = newDocument();

doc.loadFromFile("test.docx");//获取书签

BookmarksNavigator bookmarksNavigator = newBookmarksNavigator(doc);

bookmarksNavigator.moveToBookmark("bookmark1");//获取书签文本

TextBodyPart textBodyPart =bookmarksNavigator.getBookmarkContent();//创建String变量

String text = "";//遍历书签内容的项目

for(Object item : textBodyPart.getBodyItems()) {//判断项目是否为段落

if (item instanceofParagraph) {

Paragraph paragraph=(Paragraph) item;//遍历段落中的子对象

for(Object childObj : paragraph.getChildObjects()) {//判断子对象是否为TextRange

if (childObj instanceofTextRange) {//获取TextRange中的文本

TextRange textRange =(TextRange) childObj;

text= text +textRange.getText();

}

}

}

}//将获取到的文本写入Txt文件

PrintWriter printWriter = new PrintWriter("BookmarkText.txt");

printWriter.println(text);

printWriter.close();

}

}

书签读取结果:

8e0cf96a11d276bcf6259329c946ddd7.png

(本文完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值