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();
}
}
書簽讀取結果:
(本文完)