使用 Apache POI 获取第二次运行字体大小

问题描述 投票:0回答:1

我有一个Word文档,其中有一个像@DATE这样的变量。当我们从 XWPFParagraph 将其读取为 XWPFRun 时,我们得到两个运行 1.“@”和 2.“DATE。

如何获取“DATE”(第二次运行)的字体大小?我得到第一次运行“@”字体大小,但第二次运行“DATE”为空

for (XWPFParagraph p : cell.getParagraphs()) {
   for(XWPFRun r1 : p.getRuns()){
      iFontSize = r1.getFontSizeAsDouble()
   } 
}

因此,对于第二次运行“DATE”,getFontSizeAsDouble 返回 null。

java apache-poi
1个回答
0
投票

要记住的一点是,当您迭代段落中的运行时,您需要处理具有不同属性(例如字体大小)的多个运行。在您的情况下,您仅访问每个段落中最后一次运行的字体大小,这可能并不总是您感兴趣的。

这样可以更好地解决您的问题:

for (XWPFParagraph p : cell.getParagraphs()) {
    for(XWPFRun run : p.getRuns()) {
        if(run.text().contains("@DATE")) {
            double fontSize = run.getFontSizeAsDouble();
            System.out.println("Font size of '@DATE' run: " + fontSize);
            break; 
        }
    }
}

上面的代码将迭代段落中的每个运行,并检查运行中的文本是否包含模式“@DATE”。如果找到匹配项,它将检索该特定运行的字体大小。使用此方法可确保您获得专门针对“@DATE”的“DATE”部分的字体大小。

© www.soinside.com 2019 - 2024. All rights reserved.