Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1638714
  • 博文数量: 95
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 941
  • 用 户 组: 普通用户
  • 注册时间: 2017-10-27 10:00
  • 认证徽章:
文章分类

全部博文(95)

文章存档

2019年(41)

2018年(45)

2017年(9)

我的朋友

分类: Java

2019-08-14 14:42:21

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】给指定段落添加书签

  1. import com.spire.doc.*;
  2. import com.spire.doc.documents.Paragraph;

  3. public class AppendBookmark {
  4.     public static void main(String[]args){
  5.         //加载需要添加书签的Word文档
  6.         Document doc = new Document();
  7.         doc.loadFromFile("sample.docx");

  8.         //获取需要添加书签的段落
  9.         Paragraph para = doc.getSections().get(0).getParagraphs().get(1);

  10.         //在段落起始、末尾添加书签的开始标签和结束标签,并命名书签
  11.         BookmarkStart start = para.appendBookmarkStart("bookmark01");
  12.         para.getItems().insert(0,start);
  13.         para.appendBookmarkEnd("bookmark01");

  14.         //保存文档
  15.         doc.saveToFile("appendbookmark.docx",FileFormat.Docx_2013);
  16.         doc.dispose();
  17.     }
  18. }

书签添加效果:


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

  1. import com.spire.doc.*;
  2. import com.spire.doc.documents.Paragraph;
  3. import com.spire.doc.documents.TextSelection;
  4. import com.spire.doc.fields.TextRange;

  5. public class AppendBookmarkToCharacter {
  6.     public static void main(String[]args){
  7.         //加载文档
  8.         Document doc = new Document();
  9.         doc.loadFromFile("sample.docx");

  10.         //查找指定字符串
  11.         TextSelection textSelection = doc.findString("采用蕴含深意的象征语言,揭示人生的哲理。",false,false);
  12.         TextRange range = textSelection.getAsOneRange();
  13.         Paragraph para = range.getOwnerParagraph();
  14.         int index = para.getChildObjects().indexOf(range);

  15.         //添加书签
  16.         BookmarkStart start = new BookmarkStart(doc,"书签1");
  17.         BookmarkEnd end = new BookmarkEnd(doc, "书签1");
  18.         para.getChildObjects().insert(index, start);
  19.         para.getChildObjects().insert(index + 2, end);

  20.         //保存文档
  21.         doc.saveToFile("appendbookmarktocharacter.docx",FileFormat.Docx_2013);
  22.         doc.dispose();
  23.     }
  24. }

书签添加效果:



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

  1. import com.spire.doc.*;
  2. import com.spire.doc.documents.BookmarksNavigator;

  3. public class DeleteBookmarkAndBookmarkcontent {
  4.     public static void main(String[]args){
  5.         //加载文档
  6.         Document doc = new Document();
  7.         doc.loadFromFile("test.docx");

  8.         //定位到特定的书签
  9.         BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
  10.         bookmarksNavigator.moveToBookmark("bookmark1");

  11.         //删除书签处的内容
  12.         bookmarksNavigator.deleteBookmarkContent(true);

  13.         //删除书签(仅删除书签标签,原文书签处的内容)
  14.         doc.getBookmarks().remove(doc.getBookmarks().get("bookmark1"));//通过书签名删除
  15.         doc.getBookmarks().removeAt(0);//通过索引值删除

  16.         //保存文档
  17.         doc.saveToFile("deletebookmark.docx",FileFormat.Docx_2013);
  18.     }
  19. }
运行程序后,生成的文档可查看书签删除效果。

【示例4】读取书签文本

  1. import com.spire.doc.*;
  2. import com.spire.doc.documents.BookmarksNavigator;
  3. import com.spire.doc.documents.Paragraph;
  4. import com.spire.doc.documents.TextBodyPart;
  5. import com.spire.doc.fields.TextRange;

  6. import java.io.IOException;
  7. import java.io.PrintWriter;

  8. public class GetBookmarkText {
  9.     public static void main(String[]args) throws IOException {
  10.         //加载包含书签的Word文档
  11.         Document doc = new Document();
  12.         doc.loadFromFile("test.docx");

  13.         //获取书签
  14.         BookmarksNavigator bookmarksNavigator = new BookmarksNavigator(doc);
  15.         bookmarksNavigator.moveToBookmark("bookmark1");

  16.         //获取书签文本
  17.         TextBodyPart textBodyPart = bookmarksNavigator.getBookmarkContent();

  18.         //创建String变量
  19.         String text = "";

  20.         //遍历书签内容的项目
  21.         for (Object item : textBodyPart.getBodyItems()) {

  22.             //判断项目是否为段落
  23.             if (item instanceof Paragraph) {
  24.                 Paragraph paragraph = (Paragraph) item;

  25.                 //遍历段落中的子对象
  26.                 for (Object childObj : paragraph.getChildObjects()) {

  27.                     //判断子对象是否为TextRange
  28.                     if (childObj instanceof TextRange) {

  29.                         //获取TextRange中的文本
  30.                         TextRange textRange = (TextRange) childObj;
  31.                         text = text + textRange.getText();
  32.                     }
  33.                 }
  34.             }
  35.         }

  36.         //将获取到的文本写入Txt文件
  37.         PrintWriter printWriter = new PrintWriter("BookmarkText.txt");
  38.         printWriter.println(text);
  39.         printWriter.close();
  40.     }
  41. }

书签读取结果:



(本文完)

阅读(104552) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册