Java与JavaScript获取Word文档书签位置的方法对比

作者:工具松鼠时间:2026-10-28 12:32:30浏览:127

本文对比了使用JavaScript通过IE浏览器ActiveX控件与Java通过POI库获取Word文档书签位置的方法。JavaScript方案利用ActiveXObject操作Word.Application对象遍历书签,而Java方案则通过HWPFDocument解析.doc文件获取书签集合。两者分别适用于Web前端交互与后端文件处理场景,核心均在于遍历文档中的书签对象以获取名称与起始位置信息。

JavaScript通过ActiveX获取书签

在JavaScript方案中,首先需要确保IE浏览器的ActiveX控件已启用。通过编写网页脚本,可以直观地查看文档中书签的顺序及其具体位置信息。


<html>
<head>
<script>
var word;
word = new ActiveXObject("Word.Application");
var range = word.Range;
word.Visible = true;
var path = "D:\\xxx\\xxx\\xx.doc";
word.Documents.Open(path);
for(var i=1;i<=word.ActiveDocument.Bookmarks.count;i++){
 document.write(word.ActiveDocument.Bookmarks(i).Name);
 document.write(" ");
 document.write(word.ActiveDocument.Bookmarks(i).Range.BookmarkID);
 document.write("</br>");
}
</script>
</head>
<body>
</body>
</html>

Java通过POI获取书签

在Java方案中,利用POI库打开文档。由于示例使用的是.doc格式,因此采用POI中处理旧版Word文档的API;若处理.docx文件,其底层原理相同。


FileInputStream in = new FileInputStream("D:\\xxx\\xxx\\xx.doc");
HWPFDocument doc = new HWPFDocument(in);
Bookmarks bookmarks = doc.getBookmarks();
for(int i=0,j=bookmarks.getBookmarksCount();i<j;i++){
  Bookmark bookmark = bookmarks.getBookmark(i);
  System.out.println(bookmark.getName());
  System.out.println(i);
  System.out.println(bookmark.getStart());
}
作者最新文章