!1388 feat:Word生成器,增加段落新增字体颜色参数

Merge pull request !1388 from liyong473/v5-dev
This commit is contained in:
Looly 2025-11-26 11:41:26 +00:00 committed by Gitee
commit 3d2dd38add
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 22 additions and 4 deletions

View File

@ -13,7 +13,7 @@ import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.awt.Font; import java.awt.*;
import java.io.Closeable; import java.io.Closeable;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -102,7 +102,19 @@ public class Word07Writer implements Closeable {
* @return this * @return this
*/ */
public Word07Writer addText(Font font, String... texts) { public Word07Writer addText(Font font, String... texts) {
return addText(null, font, texts); return addText(null, font, null, texts);
}
/**
* 增加一个段落
*
* @param font 字体信息{@link Font}
* @param color 字体颜色{@link Color}
* @param texts 段落中的文本支持多个文本作为一个段落
* @return this
*/
public Word07Writer addText(Font font, Color color, String... texts) {
return addText(null, font, color, texts);
} }
/** /**
@ -110,10 +122,11 @@ public class Word07Writer implements Closeable {
* *
* @param align 段落对齐方式{@link ParagraphAlignment} * @param align 段落对齐方式{@link ParagraphAlignment}
* @param font 字体信息{@link Font} * @param font 字体信息{@link Font}
* @param color 字体颜色{@link Color}
* @param texts 段落中的文本支持多个文本作为一个段落 * @param texts 段落中的文本支持多个文本作为一个段落
* @return this * @return this
*/ */
public Word07Writer addText(ParagraphAlignment align, Font font, String... texts) { public Word07Writer addText(ParagraphAlignment align, Font font, Color color, String... texts) {
final XWPFParagraph p = this.doc.createParagraph(); final XWPFParagraph p = this.doc.createParagraph();
if (null != align) { if (null != align) {
p.setAlignment(align); p.setAlignment(align);
@ -129,6 +142,10 @@ public class Word07Writer implements Closeable {
run.setBold(font.isBold()); run.setBold(font.isBold());
run.setItalic(font.isItalic()); run.setItalic(font.isItalic());
} }
if (null != color) {
String hexColor = String.format("%02X", color.getRGB());
run.setColor(hexColor);
}
} }
} }
return this; return this;

View File

@ -8,7 +8,7 @@ import cn.hutool.core.lang.Console;
import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import java.awt.Font; import java.awt.*;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -23,6 +23,7 @@ public class WordWriterTest {
Word07Writer writer = new Word07Writer(); Word07Writer writer = new Word07Writer();
writer.addText(new Font("方正小标宋简体", Font.PLAIN, 22), "我是第一部分", "我是第二部分"); writer.addText(new Font("方正小标宋简体", Font.PLAIN, 22), "我是第一部分", "我是第二部分");
writer.addText(new Font("宋体", Font.PLAIN, 22), "我是正文第一部分", "我是正文第二部分"); writer.addText(new Font("宋体", Font.PLAIN, 22), "我是正文第一部分", "我是正文第二部分");
writer.addText(new Font("宋体", Font.PLAIN, 22), Color.RED, "我是正文第三部分", "我是正文第四部分");
writer.flush(FileUtil.file("e:/wordWrite.docx")); writer.flush(FileUtil.file("e:/wordWrite.docx"));
writer.close(); writer.close();
Console.log("OK"); Console.log("OK");