我有一个非常简单的问题让我发疯。基本上我想通过 POI/DOCX4J 库提取 docx 段落结构和文档大纲。我使用 POI 段落.getLvl() 方法对普通文档文档执行了相同的任务。有没有办法用 docx 获得相同的结果?如何重新构建 docx 的整个 TOC 结构?
解决方案:
我是这样解决的:
Map headingMap = new HashMap();
headingMap.put("heading 1", 1);
headingMap.put("heading 2", 2);
headingMap.put("heading 3", 3);
headingMap.put("heading 4", 4);
headingMap.put("heading 5", 5);
headingMap.put("heading 6", 6);
headingMap.put("heading 7", 7);
headingMap.put("heading 8", 8);
headingMap.put("heading 9", 9);
Iterator<XWPFParagraph> iterator = docx.getParagraphsIterator();
Styles styles = getStyle(completePath);
while(iterator.hasNext()){
XWPFParagraph p = iterator.next();
if( p != null && p.getStyleID() != null){
for (Style s : styles.getStyle()){
if (p.getStyleID().equals(s.getStyleId()) && headingMap.containsKey(s.getName().getVal())){
StringBuffer text = new StringBuffer();
for(XWPFRun run : p.getRuns()) {
text.append(run.toString());
}
}
}
}
}