[Office | Word |C#]Word浮水印系列(2)-判斷頁首頁尾類型與插入圖片至奇偶頁(OddEvenPageHeaderFooter)與第一頁頁首頁尾(FirstPageHeaderFooter)

在前一篇介紹了差入浮水印圖片至頁首頁尾,以及一些細節,而在後記時,有提到仍需考慮其他的因素,主要是PrevoiusToLink-連結致前一節,對浮水印Section造成的影響。

而在此篇,我們還須針對同一個Section下,如果是非一般頁首頁尾類型-奇偶頁與第一頁頁首頁尾的插入圖片方法。

前言

 


 

前一篇介紹了差入浮水印圖片至頁首頁尾,以及一些細節,而在後記時,有提到仍需考慮其他的因素,主要是LinkToPrevious-連結致前一節,對浮水印Section造成的影響。

而在此篇,我們仍須針對同一個Section下,如果是非一般頁首頁尾類型-奇偶頁與第一頁頁首頁尾的插入圖片方法。

 

 

奇偶頁(OddEvenPageHeaderFooter)與第一頁頁首頁尾(FirstPageHeaderFooter)

 


 

這部分在Excel篇幅中曾提過,Office的Word與Excel在頁首頁尾部分,除了依般頁首頁尾,還包含了另外兩種類型,奇偶頁與第一頁頁首頁尾,因此每個Section都可以有這兩種類型可選,如下:

FirstPage and OddEvenPage

 

因此在撰寫插入圖片時,也需判斷是哪一種,插入正確的類型,才會使Word與Excel在完成圖片頁首頁尾插入後,可以正確看到其結果。

 

判斷頁首頁尾類型與插入

 


 

透過Section的PageSetup物件的屬性-DifferentFirstPageHeaderFooter 與 OddAndEvenPagesHeaderFooter 去判斷是否為第一頁一首頁尾 或是奇偶頁頁首頁尾。

 

在Word中判斷是否為True 是透過 –1,所以 WORD_TRUE的值是-1。

而頁首頁尾的類型指定是透過Word.WdHeaderFooterIndex 來區分,共有三種wdHeaderFooterFirstPage, wdHeaderFooterPrimary,wdHeaderFooterEvenPages。

 

程式如下:

 

首先,先插入正常的頁首頁尾,再來判斷,如果發現有勾選奇偶頁屬性,則在插入偶數頁wdHeaderFooterEvenPages ,此時先前插入的wdHeaderFooterPrimary 會變成奇數頁。

如果有勾選第一頁頁首頁尾,則對wdHeaderFooterFirstPage做插入,此時先前的wdHeaderFooterPrimary則會變成沒有效果。


//headerFooter 共有三種wdHeaderFooterFirstPage, wdHeaderFooterPrimary,wdHeaderFooterEvenPages
 AddWatermarkToPageHeaderFooter(sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary],
               /*浮水印圖片的檔案路徑參數*/,
               (int)sections.First.PageSetup.PageWidth,
               (int)sections.First.PageSetup.PageHeight);
           //是否是第一頁首頁尾,有的話要插入
 if (sections.First.PageSetup.DifferentFirstPageHeaderFooter == WORD_TRUE)
       AddWatermarkToPageHeaderFooter(sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterFirstPage], /*浮水印圖片的檔案路徑參數*/, (int)sections.First.PageSetup.PageWidth, (int)sections.First.PageSetup.PageHeight);
           //是否有奇偶頁首頁尾屬性,有則wdHeaderFooterPrimary表示為奇數已經插入過,所以需要再插入偶數
 if (sections.First.PageSetup.OddAndEvenPagesHeaderFooter == WORD_TRUE)
        AddWatermarkToPageHeaderFooter(sections.First.Headers[Word.WdHeaderFooterIndex.wdHeaderFooterEvenPages], /*浮水印圖片的檔案路徑參數*/, (int)sections.First.PageSetup.PageWidth, (int)sections.First.PageSetup.PageHeight);

 

AddWatermarkToPageHeaderFooter這個方法,可以參考前一篇-[Office | Word | C#] Word浮水印系列(1)-在Word中加入浮水印(Watermark)圖片

另外,這邊我以第一個Section為例子,所以使用Section.First作為傳入,除了作業的順序外,因為這部分會先對後有其他有設定LinkToPrevious的Section有影響,所以我可以確保第一個Section已經處理過,剩下後續的Section再來個別依照有無設定PreviousToLink各個處理。

 

下一篇會來講解LinkToPrevious-連結致前一節,對浮水印Section造成的影響。

 

PS : 只要是要插入圖片至頁首頁尾的需求,接建議考慮此問題。

 


 

文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)

另外要轉載請附上出處 感謝