当前位置 : 主页 > 网络编程 > net编程 >

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

来源:互联网 收集:自由互联 发布时间:2023-09-06
在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 添加多行多列图片水印到Word文档_图片水印


—END—


上一篇:C# string.replace无法替换中文逗号及感叹号
下一篇:没有了
网友评论