修复Word07Writerrun.setColor()的颜色十六进制转换逻辑(pr#4164@Github)

This commit is contained in:
Looly
2025-11-26 20:34:02 +08:00
parent d2485f7612
commit 4a8779ec42
2 changed files with 19 additions and 1 deletions

View File

@@ -51,7 +51,7 @@ public record FontStyle(Font font, Color color) {
run.setBold(font.isBold());
run.setItalic(font.isItalic());
if (null != color) {
run.setColor(String.format("%02X", color.getRGB()));
run.setColor(String.format("%06X", color.getRGB() & 0xFFFFFF));
}
}
}

View File

@@ -22,9 +22,12 @@ import cn.hutool.v7.core.io.file.FileUtil;
import cn.hutool.v7.core.lang.Console;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import java.awt.Color;
import java.awt.Font;
import java.io.File;
import java.math.BigDecimal;
@@ -33,6 +36,8 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SuppressWarnings("resource")
public class WordWriterTest {
@@ -138,4 +143,17 @@ public class WordWriterTest {
private BigDecimal amount;
private BigDecimal onYear;
}
@Test
public void addTextShouldStripAlphaAndUseRgbHex() {
final Word07Writer writer = new Word07Writer();
final Color colorWithAlpha = new Color(0x12, 0x34, 0x56, 0x7F);
writer.addText(new FontStyle("宋体", Font.PLAIN, 12, colorWithAlpha), "带颜色的段落");
final XWPFParagraph paragraph = writer.getDoc().getParagraphArray(0);
final XWPFRun run = paragraph.getRuns().get(0);
assertEquals("123456", run.getColor());
writer.close();
}
}