下划线颜色的获取与还原

当我原文某句话增加了下划线,同时设置了这段话的字体颜色为红色,下划线就变成了红色,但是我获取到的下划线颜色是黑色,所以当我新建一个run,设置样式的时候,下划线就是黑色,两者不一致,问下我该如何处理能达到之前的效果?

@maochen

要获取和还原下划线的颜色,您可以使用 Aspose.Words 中的 Font.UnderlineColor 属性。根据您的描述,您在设置文本的字体颜色为红色时,下划线颜色却显示为黑色。这可能是因为下划线颜色没有被正确设置。

以下是一个示例代码,展示如何设置下划线颜色与字体颜色一致:

using Aspose.Words;
using Aspose.Words.Fonts;
using System.Drawing;

class Program
{
    static void Main()
    {
        // 创建一个新的文档
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);

        // 设置字体属性
        builder.Font.Color = Color.Red; // 设置字体颜色为红色
        builder.Font.Underline = Underline.Single; // 设置下划线样式
        builder.Font.UnderlineColor = Color.Red; // 设置下划线颜色为红色

        // 添加文本
        builder.Writeln("这是带有红色下划线的文本。");

        // 保存文档
        doc.Save("Output.docx");
    }
}

在这个示例中,我们首先设置了字体颜色为红色,然后将下划线的颜色也设置为红色。这样可以确保下划线的颜色与字体颜色一致。

如果您在创建新的 Run 时遇到下划线颜色不一致的问题,请确保在设置 Run 的字体属性时也包含下划线颜色的设置。这样可以避免出现颜色不匹配的情况。

首次设置是通过word直接设置的,没有单独设置下划线颜色

@maochen 如果可能,请提供您正在使用的代码、原始文件和您希望实现的预期输出文件。

不过,您可以轻松地在当前段落中添加新的运行,但需要定义文本和下划线颜色:

Document doc = new Document("input.docx");
        
Run run = new Run(doc, " new text");
run.getFont().setColor(Color.RED);
run.getFont().setUnderline(Underline.SINGLE);
run.getFont().setUnderlineColor(Color.RED);

Paragraph para = doc.getFirstSection().getBody().getFirstParagraph();
para.appendChild(run);

doc.save("output.docx");