我使用的是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() 方法。 您可以在我们的文档中找到使用示例: