在 MicroSoft Word 中添加水印时,仅支持对整个页面添加一个水印效果;对于需要将水印铺满整个页面的效果则可以参考本文中的方法。本文通过使用 Spire.Doc for .NET 提供的相关属性及方法以一种比较灵活的方式实现添加多行多列(平铺)图片水印到 Word 文档。另外,如需要添加多行多列文字水印效果可以参考这篇文章。
安装 Spire.Doc for .NET
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
添加多行多列图片水印
实现多行多列图片水印效果,即在页眉处添加图片,并通过多次复制图片来模拟将水印铺满整个页面的效果,根据横向复制或者纵向复制的不同图片数量,可任意调整水印图片在页面中的分布效果。下面,是本次实现图片水印的主要代码步骤:
- 创建 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.VerticalPosition 和 DocPicture.HorizontalPosition 属性设置图片位置排列。
- 调用 Paragraph.ChildObjects.Add(IDocumentObject entity) 方法添加图片到页眉段落。
- 最后,通过Document.SaveToFile(string fileName, FileFormat fileFormat) 方法保存文档都指定路径。
- C#
- VB.NET
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("Sample.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("logo.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);
}
}
}
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("Sample.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("logo.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
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。