如何获取word文档中某段文本所在的页数

我使用的是asopse word for Java 22.12想获取word文档中某段文本所在的页数(文本内容为:XXXXXXXXXX,获取此文本在原文档出现的页数);如何实现
2.根据页数,将一个文档拆分为多个(如:原文档的页码为20页,可以将第3~6页输出为一个文档,第7~9页输出为一个文档,10~20页输出为一个文档) 这种能实现吗。有示例吗

@SalesDhorde, 对于第一种情况,请使用以下代码示例:

String pattern = "<your_pattern>";

Document doc = new Document("in.docx");

LayoutCollector collector = new LayoutCollector(doc);
LayoutEnumerator enumerator = new LayoutEnumerator(doc);

FindReplaceOptions opt = new FindReplaceOptions();
SearchOnlyCallback searchOnlyCallback = new SearchOnlyCallback();
opt.setReplacingCallback(searchOnlyCallback);
doc.getRange().replace(pattern, "", opt);

for (Node node: searchOnlyCallback.occurences) {
    Object obj = collector.getEntity(node.getParentNode());
    if (obj != null)
    {
        enumerator.setCurrent(obj);
        int page = enumerator.getPageIndex();
        System.out.println("Found " + pattern + " on page " + page);
    }
}


private static class SearchOnlyCallback implements IReplacingCallback {
    public ArrayList<Node> occurences = new ArrayList<Node>();
    public int replacing(ReplacingArgs args) {
        occurences.add(args.getMatchNode());
        return ReplaceAction.SKIP;
    }
}

请注意,Word 文档是流式布局格式。 这意味着它们不包含有关页面以及页面上的内容的信息。 必须渲染文档才能获取有关页面以及页面上内容的信息。您可以此处阅读有关流布局格式的更多信息。

LayoutCollector 和 LayoutEnumerator 类允许遍历页面布局模型。 这些是我们的文档页面的链接:

对于第二种情况,请使用 Document 类的 getPageCount() 和 extractPages() 方法。 您可以在我们的文档中找到使用示例: