如何通过Apache poi设置word文件的全局字体?

时间:2014-12-12 08:17:18

标签: apache-poi

我是apache poi的新手,我正在使用poi将一些数据写入docx文件。最近我遇到了字体问题,希望任何人都可以给我一些帮助。

我开始写一个名为empty.docx的空文件,如下所示。

InputStream input = getClass().getClassLoader().getResourceAsStream("empty.docx");
XWPFDocument document = new XWPFDocument(input);

在empty.docx中,默认字体为“Arial'”,这意味着如果您添加任何内容,只要您不手动更改字体,它们就会继承此字体。

但在我填写内容并将其写入新的docx文件后,默认字体已更改为' Century'。

   OutputStream  output = new FileOutputStream("output.docx"); 
   document.write(output);

我想将其更改回Arial',但经过大量搜索后才找到设置XWPFRun字体的方法。

run.getCTR().getRPr().getRFonts().setEastAsia(eastAsiaFontName);
run.getCTR().getRPr().getRFonts().setHAnsi(normalFontName);

我想知道是否有任何方法可以更改整个文档的全局字体?

1 个答案:

答案 0 :(得分:2)

您可以像这样设置文档的默认字体(使用变量名称):

XWPFStyles styles = document.createStyles();

CTFonts fonts = CTFonts.Factory.newInstance();
fonts.setEastAsia(eastAsiaFontName);
fonts.setHAnsi(normalFontName);

styles.setDefaultFonts(fonts);

我目前担心如何设置默认字体 size 。这就是我发现这个问题的原因...... XWPFStyles类有一个成员" CTStyles ctStyles"使用它可以定义XML规范中定义的任何属性。但不幸的是,它只有一个公共二传手,但没有吸气剂。