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
相关产品推荐
相关产品推荐

