【问题标题】:Apache POI. XWPFRun: fontFamily not updated阿帕奇 POI。 XWPFRun:fontFamily 未更新
【发布时间】:2015-09-26 10:16:38
【问题描述】:

我正在使用 Apace POI 3.12 操作系统:Mac 操作系统

我正在尝试使用文件中的文本创建一些 docx word 文档。 文件中的文本是西里尔文。

XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("template.docx")));
XWPFRun run = doc.createParagraph().createRun();
run.setText(getTextFromFile("text.txt"));
run.setFontSize(14);
run.setFontFamily("Calibri");

其中 getTextFromFile(String path) - 是我的函数,它正在工作,返回正确的字符串。 但是生成doc时,字体样式是Times New Roman,大小为14。 我试图先 setFontFamily 然后 setText,但抛出了 NPE。我读过 setFontFamily 上的这个 NPE 在 apache poi 3.8 中并在 3.9 中修复,但似乎不是真的。

我还尝试将字符串从文件放入 setText 方法,但它也不起作用。 当文本不是西里尔字母时,一切正常,字体系列已更新。

我应该怎么做才能正确处理西里尔文字?

我找到了以下解决方案,但它对我不起作用:Why Apache POI XWPFRun.setFontFamily() for cyrillic works wrong?

myXWPFRun.getCTR().getRPr().getRFonts() 为 null 并抛出 NPE。

【问题讨论】:

    标签: java apache-poi cyrillic


    【解决方案1】:

    我找到了有效的解决方案:

    XWPFRun run = doc.createParagraph().createRun();
    run.setText("Привет");
    run.setFontSize(14);
    run.setFontFamily("Calibri");
    run.getCTR().getRPr().getRFonts().setHAnsi("Calibri");
    

    在为西里尔文做这个提示之前需要 setFontFamily。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多