在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.VerticalPosition和DocPicture.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
—END—