在前一篇介紹了差入浮水印圖片至頁首頁尾,以及一些細節,而在後記時,有提到仍需考慮其他的因素,主要是PrevoiusToLink-連結致前一節,對浮水印Section造成的影響。
而在此篇,我們還須針對同一個Section下,如果是非一般頁首頁尾類型-奇偶頁與第一頁頁首頁尾的插入圖片方法。
前言
在前一篇介紹了差入浮水印圖片至頁首頁尾,以及一些細節,而在後記時,有提到仍需考慮其他的因素,主要是LinkToPrevious-連結致前一節,對浮水印Section造成的影響。
而在此篇,我們仍須針對同一個Section下,如果是非一般頁首頁尾類型-奇偶頁與第一頁頁首頁尾的插入圖片方法。
奇偶頁(OddEvenPageHeaderFooter)與第一頁頁首頁尾(FirstPageHeaderFooter)
這部分在Excel篇幅中曾提過,Office的Word與Excel在頁首頁尾部分,除了依般頁首頁尾,還包含了另外兩種類型,奇偶頁與第一頁頁首頁尾,因此每個Section都可以有這兩種類型可選,如下:
因此在撰寫插入圖片時,也需判斷是哪一種,插入正確的類型,才會使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 : 只要是要插入圖片至頁首頁尾的需求,接建議考慮此問題。
文章中的敘述如有觀念不正確錯誤的部分,歡迎告知指正 謝謝 =)
另外要轉載請附上出處 感謝