2015-09-26 32 views
1

我使用的是宇瞻POI 3.12 操作系统:Mac OSApache POI。 XWPFRun:fontFamily中没有更新

我试图创建从文件中的文本一些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(字符串路径) - 是我的函数,它的工作,返回正确的字符串。 但是,当生成文档时,字体样式是Times New Roman,大小14. 我试图先setFontFamily,然后setText,但是抛出了NPE。我已经读过setFontFamily的这个NPE是在apache poi 3.8中修复的,但是看起来并不是这样。

另外我试过把字符串从文件中setText方法,它也不工作。 当文本不是西里尔文时,一切正常,字体系列被更新。

我应该怎么做才能正常使用西里尔文字?

我发现下面的解决方案,但它不是为我工作:Why Apache POI XWPFRun.setFontFamily() for cyrillic works wrong?

myXWPFRun.getCTR().getRPr().getRFonts()为null,并且NPE被抛出。这样的暗示对于西里尔之前

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

需要setFontFamily:

回答

2

我找到的解决方案,工作正常。