天天看點

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每一頁設定不同圖檔水印

—END—