C#/VB.NET 添加多行文本水印到Word文档
一般情况下,在Word中添加文字水印仅支持添加一个文本字样的水印,但在复杂的办公环境中,由于对不同文档的设计要求,需要在Word文档中添加平铺水印效果,即文档中的水印文字以多行多列分布的形式存在。本文将介绍如何来实现该水印效果的方法,下面是详细步骤及方法。
dll引用
通过 NuGet 引入dll(2种方法)的方法
1.可以在Visual Studio中打开 【解决方案资源管理器】,鼠标右键点击 【引用】,【管理NuGet包】,然后搜索 【Free Spire.Doc】,点击【安装】。等待程序安装完成。
2.将以下内容复制到PM控制台安装:
Install-Package FreeSpire.Doc -Version 10.2
手动添加dll引用的方法
可通过手动 下载包 到本地,然后解压,找到BIN文件夹下的Spire.Doc.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。
添加多行多列文字水印
在Word中添加多行文字水印时,实现的方法是通过在页眉中添加形状艺术字,并通过多次复制形状来模拟实现多行文字水印效果。以下是实现水印添加的主要代码步骤:
- 创建Document类的对象,并调用Document.LoadFromFile(string fileName)方法加载Word文档。
- 创建ShapeObject类的实例,并通过ShapeObject.Width、ShapeObject.Height、ShapeObject.VerticalPosition、ShapeObject.Rotation、ShapeObject.WordArt.Text、ShapeObject.WordArt.FontFamily、ShapeObject.FillColor等属性设置形状大小、位置、旋转角度、水印文字、字体及颜色等。
- for循环遍历所有Section,通过Section.HeadersFooters.Header属性获取页眉,并以HeaderFooter.AddParagraph()方法添加段落到页眉。
- 通过for循环以ShapeObject.Clone()方法多次复制形状,并通过ShapeObject.VerticalPosition和ShapeObject.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 MultiLineTextWatermark
{
class Program
{
static void Main(string[] args)
{
//加载Word文档
Document doc = new Document();
doc.LoadFromFile("test.docx"); //创建形状,并设置大小、水印文字、位置及样式
ShapeObject shape = new ShapeObject(doc, ShapeType.TextPlainText);
shape.Width = 60;
shape.Height =15;
shape.VerticalPosition = 25;
shape.HorizontalPosition = 20;
shape.Rotation = 320;
shape.WordArt.Text = "草稿副本";
shape.WordArt.FontFamily = "宋体";
shape.FillColor = System.Drawing.Color.Red;
shape.StrokeColor = System.Drawing.Color.Red; //遍历所有section
for (int n = 0; n < doc.Sections.Count; n++)
{
Section section = doc.Sections[n]; //获取页眉
HeaderFooter header = section.HeadersFooters.Header; //添加段落到页眉
Paragraph paragraph1 = header.AddParagraph(); for (int i = 0; i < 5; i++)
{ for (int j = 0; j < 6; j++)
{
//复制形状并设置多行多列位置
shape = (ShapeObject)shape.Clone();
shape.VerticalPosition = 50 + 150 * i;
shape.HorizontalPosition = 20 + 160 * j; //添加形状到段落
paragraph1.ChildObjects.Add(shape);
}
}
} //保存文档
doc.SaveToFile("result.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("result.docx");
}
}
}
VB.NET
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields Namespace MultiLineTextWatermark
Class Program
Private Shared Sub Main(args As String())
'加载Word文档
Dim doc As New Document()
doc.LoadFromFile("test.docx") '创建形状,并设置大小、水印文字、位置及样式
Dim shape As New ShapeObject(doc, ShapeType.TextPlainText)
shape.Width = 60
shape.Height = 15
shape.VerticalPosition = 25
shape.HorizontalPosition = 20
shape.Rotation = 320
shape.WordArt.Text = "草稿副本"
shape.WordArt.FontFamily = "宋体"
shape.FillColor = System.Drawing.Color.Red
shape.StrokeColor = System.Drawing.Color.Red '遍历所有section
For n As Integer = 0 To doc.Sections.Count - 1
Dim section As Section = doc.Sections(n) '获取页眉
Dim header As HeaderFooter = section.HeadersFooters.Header '添加段落到页眉
Dim paragraph1 As Paragraph = header.AddParagraph() For i As Integer = 0 To 4 For j As Integer = 0 To 5
'复制形状并设置多行多列位置
shape = DirectCast(shape.Clone(), ShapeObject)
shape.VerticalPosition = 50 + 150 * i
shape.HorizontalPosition = 20 + 160 * j '添加形状到段落
paragraph1.ChildObjects.Add(shape)
Next
Next
Next '保存文档
doc.SaveToFile("result.docx", FileFormat.Docx2013)
System.Diagnostics.Process.Start("result.docx")
End Sub
End Class
End Namespace
水印效果:

—END—
C#/VB.NET 添加多行文本水印到Word文档的更多相关文章
- Java 如何给Word文档添加多行文字水印
前言 我在以往的文章中曾介绍过如何给Word文档添加文本水印和图片水印,及怎样删除文档中的水印.关于文本水印,之前那篇教程里主要指的是单行字体的水印,而在操作Word文档时,有时也会碰到需要添加多行文 ...
- C#/VB.NET 给Word文档添加/撤销书签
在现代办公环境中,阅读或者编辑较长篇幅的Word文档时,想要在文档中某一处或者几处留下标记,方便日后查找.修改时,需要在相对应的文档位置插入书签.那对于开发者而言,在C#或者VB.NET语言环境中,如 ...
- C#/VB.NET 比较两个Word文档差异
本文以C#和VB.NET代码为例,来介绍如何对比两个Word文档差异.程序中使用最新版的Spire.Doc for .NET 版本8.8.2.编辑代码前,先在VS程序中添加引用Spire.Doc.dl ...
- 如何通过C#/VB.NET设置Word文档段落缩进
缩进是指调整文本与页面边界之间的距离.在水平标尺,有四个段落缩进滑块:首行缩进.悬挂缩进.左缩进以及右缩进.在对于word文档的录入时,常常需要注意录入的格式,通过合理地设置段落格式,可以让文稿看起来 ...
- C#/VB.NET 在Word文档中插入分页符
分页符是分页的一种符号,上一页结束以及下一页开始的位置.通查用于在指定位置强制分页.本文将分为两部分来介绍如何在Word文档中插入分页符.并附上C#/VB.NET以供参考,详情请阅读以下内容. 在特定 ...
- C# 给Word文档添加内容控件
C# 给Word文档添加内容控件 在MS Word中,我们可以通过内容控件来向word文档中插入预先定义好的模块,指定模块的内容格式(如图片.日期.列表或格式化的文本等),从而创建一个结构化的word ...
- Java利用aspose-words将word文档转换成pdf(破解 无水印)
首先下载aspose-words-15.8.0-jdk16.jar包 http://pan.baidu.com/s/1nvbJwnv 引入jar包,编写Java代码 package doc; impo ...
- OpenXml入门----给Word文档添加文字
使用OpenXml给word文档添加文字,每个模块都有自己对于的属性以及内容,要设置样式就先声明属性对象,将样式Append到属性里面,再将属性append到模块里面,那么模块里面的内容就具备该样式了 ...
- Aspose.Words:如何添加另一个WORD文档中的Node对象
原文:Aspose.Words:如何添加另一个WORD文档中的Node对象 首先看一段代码,这段代码意图从docSource中获取第一个表格,并插入docTarget的末尾: , true); doc ...
随机推荐
- Linux 多网卡bonding
bonding 将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡.直接给两块网卡设置同一IP 地址是不可以的.通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的 ...
- 个人&博客信息
博客配置 服务器:无 配置链接:在博客园中安装皮肤 皮肤:GEEK by GUANGZAN 个人简介 本蒟蒻是广东中山人 如果您有一些问题,请发送邮件至mo ...
- 【面试普通人VS高手系列】说一说Mybatis里面的缓存机制
一个工作了 5年的程序员,在私信里面不断向我诉苦. 他说,他用了Mybatis这么久,怎么滴也算是精通Mybatis了吧. 结果竟然在Mybatis这个面试题上翻车了! 真的好烦! 好吧,我们今天来看 ...
- 【Java8新特性】Lambda表达式
一.Lambda 表达式 是什么? Lambda读音:拉姆达. Lambda是一个匿名函数,匿名函数就是一个没有名字的函数. Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中). ...
- 渗透:wesside-ng
WEP自动破解工具wesside-ng wesside-ng是aircrack-ng套件提供的一个概念验证工具.该工具可以自动扫描无线网络,发现WEP加密的AP.然后,尝试关联该AP.关联成功后,它会 ...
- 我的总结常用的js知识
nvm nvm是node的包管理工具.在不同的项目下使用不同的node版本.下载地址 https://github.com/coreybutler/nvm-windows/releasesnvm in ...
- mysql配置与存储引擎与字段类型与约束条件
目录 字符编码与配置文件 存储引擎 创建表的完整语法 字段类型 整型 浮点型 字符类型 数字的含义 枚举与集合 日期类型 约束条件 字符编码与配置文件 在MySQL5.X系列中,显示的字符编码有多种, ...
- Vue基础篇之 插槽 slot
- 设置C#启动进程但不显示命令行窗口
设置一下Process类型相关的配置属性即可,直接上代码. //记得引入命名空间 //using System.Diagnostics; //获得当前环境的基路径 string basePath = ...
- 【视频】k8s套娃开发调试dapr应用 - 在6月11日【开源云原生开发者日】上的演示
这篇博客是在2022年6月11日的[开源云原生]大会上的演讲中的演示部分.k8s集群套娃(嵌套)是指在一个k8s的pod中运行另外一个k8s集群,这想法看上去很疯狂,实际上非常实用. k8s集群套娃( ...