ITPub博客

首页 > 应用开发 > > Java 操作Word书签(一):添加、删除、读取书签

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

作者:pswyjz 时间:2019-08-16 09:14:14 0 删除 编辑

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

}

}

书签读取结果:

(本文完)

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/755/viewspace-3118091/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-11-21

  • 博文量
    213
  • 访问量
    28325