在 microsoft word 中添加水印时,仅支持对整个页面添加一个水印效果;对于需要将水印铺满整个页面的效果则可以参考本文中的方法。本文通过使用 spire.doc for .net 提供的相关属性及方法以一种比较灵活的方式实现添加多行多列(平铺)图片水印到 word 文档。另外,如需要添加多行多列文字水印效果可以参考这篇文章。
安装 spire.doc for .net
首先,您需要将 spire.doc for.net 包含的 dll 文件作为引用添加到您的 .net项目中。dll 文件可以从此链接下载,也可以通过 安装。
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 天的临时许可证。