【问题标题】:How can I get footnotes and paragraphs from Apache POI XWPFDocument?如何从 Apache POI XWPFDocument 中获取脚注和段落?
【发布时间】:2019-08-22 01:37:09
【问题描述】:

我必须从 XWPFDocument 中提取所有脚注。我只找到了一个如何与 HWPFDocument 一起使用的示例。 有什么想法吗?

FileInputStream fisv2 = new FileInputStream("C:\\abc.doc");
WordExtractor extractor = new WordExtractor(fisv2);
String[] fnts = extractor.getFootnoteText();
for (String s: fnts) {
  System.out.println(s + "-->\n");
}
extractor.close();

【问题讨论】:

  • 您想要没有上下文的脚注?还是包含脚注的文本?如果是后者,请参阅XWPFWordExtractor
  • 我只想要没有上下文的脚注,就像给定的 HWPFDocument 示例一样。非常感谢。

标签: apache-poi footnotes


【解决方案1】:

XWPFWordExtractor 没有像WordExtractor 提供的那样提供单独提取脚注的方法。

但是XWPFDocument 提供了XWPFDocument.getFootnotes,它返回一个java.util.List<XWPFFootnote>。所以可以从List 那里得到单个脚注。

例子:

import java.io.FileInputStream;

import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.usermodel.*;

import java.util.List;
import java.util.ArrayList;

public class WordExtracFootnotes {

 public static void main(String[] args) throws Exception {

  // HWPF - binary *.doc format
  WordExtractor extractor = new WordExtractor(new FileInputStream("WordWithFootnotes.doc"));
  String[] hwpfFootnotes = extractor.getFootnoteText();
  for (String footnote : hwpfFootnotes) {
   System.out.println("[" + footnote + "]");
  }
  extractor.close();

  System.out.println();

  // XWPF - Office Open XML *.docx format
  XWPFDocument document = new XWPFDocument(new FileInputStream("WordWithFootnotes.docx"));

  List<XWPFFootnote> xwpfFootnotes = document.getFootnotes();
  for (XWPFFootnote footnote : xwpfFootnotes) {
   StringBuilder footnoteText = new StringBuilder();
   footnoteText.append("[" + footnote.getId() + ":");
   boolean first = true;
   for (XWPFParagraph paragraph : footnote.getParagraphs()) {
    if (!first) footnoteText.append("\n");
    first = false;
    footnoteText.append(paragraph.getText());
   } 
   footnoteText.append("]");
   System.out.println(footnoteText);
  }
  document.close();
 }
}

id -1 和 0 的脚注必须忽略,因为它们仅供内部使用,从不在文档中引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2020-09-10
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多