From 4a8779ec42b74a2d7bb817da5573977e8ede5411 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 26 Nov 2025 20:34:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D`Word07Writer`run.setColor()?= =?UTF-8?q?=E7=9A=84=E9=A2=9C=E8=89=B2=E5=8D=81=E5=85=AD=E8=BF=9B=E5=88=B6?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2=E9=80=BB=E8=BE=91=EF=BC=88pr#4164@Github?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/v7/poi/word/FontStyle.java | 2 +- .../cn/hutool/v7/poi/word/WordWriterTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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(); + } }