C#实现给Word每一页设置不同图片水印

 更新时间:2022年02月22日 15:59:08   作者:E-iceblue  
Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果。本文将利用C#实现给Word每一页设置不同图片水印的效果,需要的可以参考一下

Word中设置水印时,可加载图片设置为水印效果,但通常添加水印效果时,会对所有页面都设置成统一效果,如果需要对每一页或者某个页面设置不同的水印效果,则可以参考本文中的方法。下面,将以C#代码为例,对Word每一页设置不同的图片水印效果作详细介绍。

方法思路

在给Word每一页添加水印前,首先需要在Word文档每一页正文的最后一个字符后面插入“连续”分节符,然后在每一节的页眉段落里添加水印图片,并设置图片的坐标位置、对齐方式、衬于文字下方等。最后保存文档。

dll引入

方法1

在程序中引入Spire.Doc.dll文件;将 Free Spire.Doc for .NET 下载到本地,解压,找到BIN文件夹下的Spire.Doc.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

方法2

通过  NuGet 安装。可通过以下2种方法安装:

 1. 可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,点击“安装”。等待程序安装完成。

 2. 将以下内容复制到PM控制台安装。

Install-Package FreeSpire.Doc -Version 10.2.0

代码示例

给每页添加图片水印时,可参考如下步骤:

  • 创建Document类的对象,并通过LoadFromFile(string fileName)方法加载Word文档。
  • 通过Document.Sections[]属性获取指定节。
  • 通过HeadersFooters.Header属性获取页眉,HeaderFooter.AddParagraph()方法添加段落到页眉。
  • 通过Paragraph.AppendPicture(string imgFile)方法添加图片到段落,DocPicture.VerticalPosition属性设置水印图片位置,DocPicture.HorizontalAlignment属性设置图片对齐方式。
  • 最后,通过Document.SaveToFile(string fileName, FileFormat fileFormat)方法保存文档。

不同页面中设置不一样的图片水印效果,只需要获取该页面对应的节,然后参考上述用到的方法来添加即可。

C#

using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;

namespace ImageWatermark2
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载Word测试文档
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //获取文档第一节
            Section section1 = doc.Sections[0];

            //定义水印图片的纵向坐标位置
            float y = section1.PageSetup.PageSize.Height/3;

            //添加图片水印1
            HeaderFooter header1 = section1.HeadersFooters.Header;//获取页眉
            header1.Paragraphs.Clear();//删除原有页眉格式的段落
            Paragraph para1 = header1.AddParagraph();//重新添加段落
            DocPicture pic1 = para1.AppendPicture("logo1.png");//添加图片
            pic1.TextWrappingStyle = TextWrappingStyle.Behind;//图片置于文字下方
            pic1.VerticalPosition = y;
            pic1.HorizontalAlignment = ShapeHorizontalAlignment.Center;//设置图片对齐方式

            //同理设置第二节页眉中的图片水印2
            Section section2 = doc.Sections[1];
            HeaderFooter header2 = section2.HeadersFooters.Header;
            header2.Paragraphs.Clear();
            Paragraph para2 = header2.AddParagraph();
            DocPicture pic2 = para2.AppendPicture("logo2.png");
            pic2.TextWrappingStyle = TextWrappingStyle.Behind;
            pic2.VerticalPosition = y;
            pic2.HorizontalAlignment = ShapeHorizontalAlignment.Center;

            //同理设置第三节中的页眉中的图片水印3
            Section section3 = doc.Sections[2];
            HeaderFooter header3 = section3.HeadersFooters.Header;
            header3.Paragraphs.Clear();
            Paragraph para3 = header3.AddParagraph();
            DocPicture pic3 = para3.AppendPicture("logo3.png");
            pic3.TextWrappingStyle = TextWrappingStyle.Behind;
            pic3.VerticalPosition = y;
            pic3.HorizontalAlignment = ShapeHorizontalAlignment.Center;

            //保存文档
            doc.SaveToFile("DifferentImageWatermark.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("DifferentImageWatermark.docx");
        }
    }
}

vb.net

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields

Namespace ImageWatermark2
    Class Program
        Private Shared Sub Main(args As String())
            '加载Word测试文档
            Dim doc As New Document()
            doc.LoadFromFile("test.docx")

            '获取文档第一节
            Dim section1 As Section = doc.Sections(0)

            '定义水印图片的纵向坐标位置
            Dim y As Single = section1.PageSetup.PageSize.Height / 3

            '添加图片水印1
            Dim header1 As HeaderFooter = section1.HeadersFooters.Header
            '获取页眉
            header1.Paragraphs.Clear()
            '删除原有页眉格式的段落
            Dim para1 As Paragraph = header1.AddParagraph()
            '重新添加段落
            Dim pic1 As DocPicture = para1.AppendPicture("logo1.png")
            '添加图片
            pic1.TextWrappingStyle = TextWrappingStyle.Behind
            '图片置于文字下方
            pic1.VerticalPosition = y
            pic1.HorizontalAlignment = ShapeHorizontalAlignment.Center
            '设置图片对齐方式
            '同理设置第二节页眉中的图片水印2
            Dim section2 As Section = doc.Sections(1)
            Dim header2 As HeaderFooter = section2.HeadersFooters.Header
            header2.Paragraphs.Clear()
            Dim para2 As Paragraph = header2.AddParagraph()
            Dim pic2 As DocPicture = para2.AppendPicture("logo2.png")
            pic2.TextWrappingStyle = TextWrappingStyle.Behind
            pic2.VerticalPosition = y
            pic2.HorizontalAlignment = ShapeHorizontalAlignment.Center

            '同理设置第三节中的页眉中的图片水印3
            Dim section3 As Section = doc.Sections(2)
            Dim header3 As HeaderFooter = section3.HeadersFooters.Header
            header3.Paragraphs.Clear()
            Dim para3 As Paragraph = header3.AddParagraph()
            Dim pic3 As DocPicture = para3.AppendPicture("logo3.png")
            pic3.TextWrappingStyle = TextWrappingStyle.Behind
            pic3.VerticalPosition = y
            pic3.HorizontalAlignment = ShapeHorizontalAlignment.Center

            '保存文档
            doc.SaveToFile("DifferentImageWatermark.docx", FileFormat.Docx2013)
            System.Diagnostics.Process.Start("DifferentImageWatermark.docx")
        End Sub
    End Class
End Namespace

如图,每一页均可显示不同的图片水印效果:

以上就是C#实现给Word每一页设置不同图片水印的详细内容,更多关于C# Word设置图片水印的资料请关注脚本之家其它相关文章!

相关文章

  • c#操作xml帮助类分享(xml增删改查)

    c#操作xml帮助类分享(xml增删改查)

    c#操作xml帮助类XMLHelper源码分享,实现对XML文档的创建,及节点和属性的增、删、改、查
    2014-01-01
  • C# 实现连连看功能(推荐)

    C# 实现连连看功能(推荐)

    本文是利用C#实现连连看的小例子,使用线程thread实现后台运行时间控制,实现代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-07-07
  • 深入解析C#设计模式编程中对建造者模式的运用

    深入解析C#设计模式编程中对建造者模式的运用

    这篇文章主要介绍了C#设计模式编程中对建造者模式的运用,文中还介绍了在.NET框架下建造者模式编写思路的实现,需要的朋友可以参考下
    2016-02-02
  • C#中可枚举类型详解

    C#中可枚举类型详解

    这篇文章主要介绍了C#中可枚举类型,IEnumerable和IEnumerator接口j及其泛型实现和迭代器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • 在C#的类或结构中重写ToString方法的用法简介

    在C#的类或结构中重写ToString方法的用法简介

    这篇文章主要介绍了在C#的类或结构中重写ToString方法的用法简介,需要的朋友可以参考下
    2016-01-01
  • C#可访问级别Public,private,protected,internal

    C#可访问级别Public,private,protected,internal

    本文主要介绍了C#可访问级别Public,private,protected,internal,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2006-08-08
  • C#使用BackgroundWorker控件

    C#使用BackgroundWorker控件

    这篇文章介绍了C#使用BackgroundWorker控件的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • .Net WInform开发笔记(五)关于事件Event

    .Net WInform开发笔记(五)关于事件Event

    我前面几篇博客中提到过.net中的事件与Windows事件的区别,本文讨论的是前者,也就是我们代码中经常用到的Event,感兴趣的朋友可以了解下
    2013-01-01
  • C#高级静态语言效率利器之泛型详解

    C#高级静态语言效率利器之泛型详解

    所谓泛型,就是创建一个函数,对所有数据类型都生效。这篇文章就来带大家深入了解一下C#中高级静态语言效率利器——泛型的使用,需要的可以参考一下
    2023-02-02
  • C#绘制中国象棋棋盘

    C#绘制中国象棋棋盘

    这篇文章主要为大家详细介绍了C#绘制中国象棋棋盘,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01

最新评论