【问题标题】:Apache POI get line breaks from XWPFRunApache POI 从 XWPFRun 获取换行符
【发布时间】:2017-08-11 14:35:50
【问题描述】:

我在使用 Apache POI 3.15 从 docx 文件中读取空格时遇到问题。我有一个带有换行符的 Word 文档,当通过 apache poi 读取文件时,我找不到获取这些换行符的方法。当我调用paragraph.getParagraphText() 时,将返回带有换行符的文本。当我遍历 XWPFRun 对象时,我只得到文本和格式,但没有关于换行符的信息。

这是我使用的代码。 br、tab、cr 和分隔符列表始终为空。

        XWPFDocument document = new XWPFDocument(fis);
    List<XWPFParagraph> paragraphs = document.getParagraphs();

    for(XWPFParagraph paragraph : paragraphs) {
        //System.out.println(paragraph.getParagraphText());
        for(XWPFRun run : paragraph.getRuns()) {
            CTR ctr = run.getCTR();
            List<CTBr> brList = ctr.getBrList();
            List<CTEmpty> tabList = ctr.getTabList();
            List<CTEmpty> crList = ctr.getCrList();             
            List<CTEmpty> separatorList = ctr.getSeparatorList();
            String text = run.getText(run.getTextPosition());
            String color =run.getColor();
            boolean bold = run.isBold();
            boolean italic = run.isItalic();
            System.out.println("text: " + text + " color: " + color + " bold: " + bold + " italic: " + italic); 

            for(CTEmpty cr : crList) {
                System.out.println(cr);
            }
        }           
    }

是使用 CTR 对象来纠正路线还是有其他方法来获得这些换行符?

Word Example

【问题讨论】:

  • 会不会是 CT 类中没有对换行符进行编码,而是在运行中嵌入了换行符?您能否附上显示该问题的示例文档?
  • 请提供出现问题的示例段落。
  • 好问题。在 Apache poi 中也不清楚如何根据元素的自然顺序迭代运行中的元素。例如:文本、br、文本

标签: java apache-poi docx line-breaks xwpf


【解决方案1】:

我找到了换行符的解决方案。正常输入作为自己的段落返回,没有带间距值的文本。通过run.getCTR().getBrList

将段落内的软输入作为中断返回

【讨论】:

  • 但是我们如何才能知道它们在运行中相对于文本元素的位置呢?例如,如果我们有 text,br,text,我们如何获得运行中所有元素的列表?
猜你喜欢
  • 2021-05-21
  • 1970-01-01
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多