使用OpenXML能否移除Microsoft Word水印的Washout(冲蚀)效果?
解决方案
可以通过OpenXML实现取消水印冲蚀效果,操作逻辑如下:
- 你当前代码中
V.ImageData对象设置的Gain和BlackLevel两个属性,就是Word「冲蚀(Washout)」效果对应的底层参数,这两个参数会调整图片的亮度、对比度,实现半透明褪色的水印效果。 - 只需删除这两个属性的赋值,即可取消冲蚀效果,水印会保持原图的原始不透明度,对应Word客户端里的「Washout」选项自动变为未勾选状态。
代码修改示例
你只需要修改GenerateHeaderPart1Content方法中V.ImageData的初始化逻辑即可,修改后的代码如下:
private void GenerateHeaderPart1Content(HeaderPart headerPart1) { Header header1 = new Header(); Paragraph paragraph2 = new Paragraph(); Run run1 = new Run(); Picture picture1 = new Picture(); V.Shape shape1 = new V.Shape() { Id = "WordPictureWatermark75517470", Style = "position:absolute;left:0;text-align:left;margin-left:0;margin-top:0;width:415.2pt;height:456.15pt;z-index:-251656192;mso-position-horizontal:center;mso-position-horizontal-relative:margin;mso-position-vertical:center;mso-position-vertical-relative:margin", OptionalString = "_x0000_s2051", AllowInCell = false, Type = "#_x0000_t75" }; // 移除Gain和BlackLevel属性赋值,取消冲蚀效果 V.ImageData imageData1 = new V.ImageData() { Title = "水印", RelationshipId = "rId999" }; shape1.Append(imageData1); picture1.Append(shape1); run1.Append(picture1); paragraph2.Append(run1); header1.Append(paragraph2); headerPart1.Header = header1; }
如果需要自定义水印的不透明度,也可以调整这两个参数的数值:
Gain参数控制图片的对比度,数值越大对比度越高BlackLevel参数控制图片的亮度,数值越大亮度越高
内容的提问来源于stack exchange,提问作者Gab David
相关产品推荐
相关产品推荐

