diff --git a/hutool-poi/src/main/java/cn/hutool/v7/poi/word/FontStyle.java b/hutool-poi/src/main/java/cn/hutool/v7/poi/word/FontStyle.java index 64a3d95d1f..ae04904d29 100644 --- a/hutool-poi/src/main/java/cn/hutool/v7/poi/word/FontStyle.java +++ b/hutool-poi/src/main/java/cn/hutool/v7/poi/word/FontStyle.java @@ -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)); } } } diff --git a/hutool-poi/src/test/java/cn/hutool/v7/poi/word/WordWriterTest.java b/hutool-poi/src/test/java/cn/hutool/v7/poi/word/WordWriterTest.java index 6ad7dfa7b3..d94541be88 100644 --- a/hutool-poi/src/test/java/cn/hutool/v7/poi/word/WordWriterTest.java +++ b/hutool-poi/src/test/java/cn/hutool/v7/poi/word/WordWriterTest.java @@ -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(); + } }