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()、フォントをドキュメントの埋め込みフォントの 1 つに変更することです。私が使用していた文書には、以下のフォントテーブルがありました。

╔═══╦═════════════════╗
║   ║ 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 に答える