2

我有一个使用 Apache POI 和 HWPF 生成的文档 (.doc),我想更改字体类型。我猜想改变它的地方会在每个段落内的字符上。

CharacterRun 具有诸如.setBold() .setColor()and之类的方法,.getFontName()但没有任何方法可以设置我能够找到的字体。

在 XWPF 中,.setFontFamily()有一种方法可以用 HWPF 做同样的事情吗?

Range after = doc.getRange();
int numParagraphs = after.numParagraphs();

for(int i = 0; i < numParagraphs; i++){
    Paragraph paragraph = after.getParagraph(i);

    int charRuns = paragraph.numCharacterRuns();
    for(int j = 0; j < charRuns; j++){
        int size = 9;
        CharacterRun run = paragraph.getCharacterRun(j);
        run.setFontSize(size*2); // In half sizes.
    }
}
4

1 回答 1

3

在 CharacterRun 上更改字体类型的方法是将字体.setFtcAscii()更改为文档的嵌入字体之一。我使用的文档有下面的字体表。

╔═══╦═════════════════╗
║   ║ Font Family     ║
╠═══╬═════════════════╣
║ 0 ║ Times New Roman ║
║ 1 ║ Symbol          ║
║ 2 ║ Arial           ║
║ 3 ║ Calibri         ║
║ 4 ║ Courier New     ║
║ 5 ║ Cambria Math    ║
╚═══╩═════════════════╝

我需要将字体更改为,Courier New所以我使用了:

run.setFtcAscii(4);

--

其他文档可能有不同的字体表,所以我创建了一个设置字体索引的 for 循环,然后使用打印出字体名称.getFontName()

另外,我发现它run.setFtcOther(int)做同样的事情run.setFtcAscii(int)


请参阅:(0x4A4F)

https://msdn.microsoft.com/en-us/library/dd947480(v=office.12).aspx

于 2016-05-08T20:00:08.200 回答