C#/VB.NET 添加多行多列图片水印到Word文档

Posted Tobemia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#/VB.NET 添加多行多列图片水印到Word文档相关的知识,希望对你有一定的参考价值。

在Word里面添加水印时,常见的情况是仅支持对整个页面添加一个水印效果;对于需要将水印铺满整个页面的效果则可以参考本文中的方法。本文介绍一种比较灵活的方式实现添加多行多列(平铺)图片水印到Word文档。下面是详细方法及步骤。

环境配置

引入Word API-Free Spire.Doc for .NET( Spire.Doc.dll)

1. 通过NuGet​引入dll(2种方法)的方法

(1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,点击“安装”。等待程序安装完成。

(2)将以下内容复制到PM控制台安装:

Install-PackageFreeSpire.Doc -Version 10.2

2. 手动添加dll引用的方法

可通过手动​​下载包​​到本地,然后解压,找到BIN文件夹下的Spire.Doc.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

添加多行多列图片水印

实现多行多列图片水印效果,即在页眉处添加图片,并通过多次复制图片来模拟将水印铺满整个页面的效果,根据横向复制或者纵向复制的不同图片数量,可任意调整水印图片在页面中的分布效果。以下,是本次实现图片水印的主要代码步骤:

  • 创建Document类的对象,并通过Document.LoadFromFile(string fileName)方法加载Word文档。
  • for循环文档中的所有Section,并通过Document.Sections[int Index]属性获取页面中的节。
  • 使用HeadersFooters.Header属性获取页眉,并通过HeaderFooter.AddParagraph()方法添加段落到页眉。
  • 创建DocPicture类的对象,并调用DocPicture.LoadImage(string imgFile)方法加载水印图片,以及通过TextWrappingStyle枚举值设置图片环绕方式。
  • 通过for循环以DocPicture.Clone()方法多次复制图片,并通过DocPicture.VerticalPositionDocPicture.HorizontalPosition属性设置图片位置排列。
  • 调用Paragraph.ChildObjects.Add(IDocumentObject entity)方法添加图片到页眉段落。
  • 最后,通过Document.SaveToFile(string fileName, FileFormat fileFormat)方法保存文档都指定路径。

C#

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace MultiLinePictureWatermark

class Program

static void Main(string[] args)

//加载Word文档
Document doc = new Document();
doc.LoadFromFile("test.docx");

//遍历所有section
for (int i = 0; i < doc.Sections.Count; i++)

Section section = doc.Sections[i];

//获取section的页眉
HeaderFooter header = section.HeadersFooters.Header;

//添加段落到页眉
Paragraph paragraph1 = header.AddParagraph();

//加载水印图片
DocPicture picture = new DocPicture(doc);
picture.LoadImage("panda.png");
picture.TextWrappingStyle = TextWrappingStyle.Behind;

//复制图片
for (int p = 0; p < 5; p++)

for (int q = 0; q < 3; q++)

picture = (DocPicture)picture.Clone();
picture.VerticalPosition = 50 + 150 * p;
picture.HorizontalPosition = 10 + 140 * q;
paragraph1.ChildObjects.Add(picture);




//保存文档
doc.SaveToFile("MultiLinePictureWatermatk.docx", FileFormat.Docx2013);


VB.NET

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace MultiLinePictureWatermark
Class Program
Private Shared Sub Main(args As String())
加载Word文档
Dim doc As New Document()
doc.LoadFromFile("test.docx")

遍历所有section
For i As Integer = 0 To doc.Sections.Count - 1
Dim section As Section = doc.Sections(i)

获取section的页眉
Dim header As HeaderFooter = section.HeadersFooters.Header

添加段落到页眉
Dim paragraph1 As Paragraph = header.AddParagraph()

加载水印图片
Dim picture As New DocPicture(doc)
picture.LoadImage("panda.png")
picture.TextWrappingStyle = TextWrappingStyle.Behind

复制图片
For p As Integer = 0 To 4
For q As Integer = 0 To 2
picture = DirectCast(picture.Clone(), DocPicture)
picture.VerticalPosition = 50 + 150 * p
picture.HorizontalPosition = 10 + 140 * q
paragraph1.ChildObjects.Add(picture)
Next
Next
Next

保存文档
doc.SaveToFile("MultiLinePictureWatermatk.docx", FileFormat.Docx2013)
End Sub
End Class
End Namespace

C#/VB.NET


—END—


以上是关于C#/VB.NET 添加多行多列图片水印到Word文档的主要内容,如果未能解决你的问题,请参考以下文章

C#/VB.NET 删除Word文档中的水印

C#/VB.NET 给PDF文档添加文本/图像水印

如何给word文档设置图片水印

如何在word中添加多行水印

C#/VB.NET 如何在 Excel 中添加水印

Word文档中如何增加多行文字水印?求解答