You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Word Interop添加水印时特殊符号显示异常问题

解决Word水印中特殊符号'Ⓒ'显示方块的问题

问题根源在于你使用的AddTextEffect方法是创建艺术字,这类预设文本效果对部分特殊字符的渲染支持有限,再加上指定的Arial字体可能未包含该符号的艺术字字形数据,导致符号显示为方块。

解决方案:改用普通文本框添加水印

普通文本框对特殊字符的兼容性更好,修改代码如下:

if (file.Watermark == true)
{
    Microsoft.Office.Interop.Word.Shape wordShape = null;
    foreach (Microsoft.Office.Interop.Word.Section section in wordDoc.Sections)
    {
        // 替换为普通文本框,而非艺术字
        wordShape = section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Shapes.AddTextbox(
            Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal,
            150, 150, 200, 50, ref o);
        
        // 设置水印文本
        wordShape.TextFrame.TextRange.Text = "Ⓒ gg";
        // 配置字体属性
        wordShape.TextFrame.TextRange.Font.Name = "Arial";
        wordShape.TextFrame.TextRange.Font.Size = 30;
        // 设置填充样式
        wordShape.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
        wordShape.Fill.Solid();
        wordShape.Fill.ForeColor.RGB = (Int32)Microsoft.Office.Interop.Word.WdColor.wdColorGray15;
        // 隐藏边框
        wordShape.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
        // 设置定位规则
        wordShape.RelativeHorizontalPosition = Microsoft.Office.Interop.Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionMargin;
        wordShape.RelativeVerticalPosition = Microsoft.Office.Interop.Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionMargin;
        wordShape.Left = 20;
        wordShape.Top = 250;
        wordShape.Rotation = -45;
    }
}

额外优化建议

  • 如果Arial字体仍不显示该符号,可替换为对特殊字符支持更全面的字体,比如Segoe UI Symbol或Times New Roman。
  • 确保你的Office环境安装了对应字体的完整字符集,避免系统缺少符号对应的字形文件。

内容的提问来源于stack exchange,提问作者LFLJM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:06:19