2015-09-26 209 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

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