# AEM Designer開發筆記 ## 頁籤、頁尾、續下頁...資料處理 ### 常用頁籤 目前有使用過的是下列兩種頁籤 * **Master Page n of m**:以單一 MasterPage 所產出來的頁面總數去計算頁碼 * **Page n of m** :以所有頁面的總數去計算頁碼 ![](https://i.imgur.com/bAJyEAR.png) 舉例來說: 如果預設頁面就有**兩頁** 在第一頁使用**Master Page n of m** 只會以該頁內容頁數計算 如果第一頁沒換頁,頁數會出現 **第 1 頁/ 共 1 頁** 在第一頁使用 **Page n of m** 內容會計算整個資料的頁面,所以**m**的值至少為**2** 如果第一頁資料沒有多到要換頁,頁數會出現第 **第1 頁/ 共 2 頁** --- ### Master Page n of m **Master Page n of m** 頁籤在使用時,預設會額外產出兩個物件 * **CurrentMasterPage** :記錄目前標籤 * **MasterPageCount** :記錄單一MasterPage所出現的頁面總數 最後再把兩個值塞到 **第 # 頁 /共 ##頁** 的##中,資料即處理完成 (以上為使用物件時,系統自動處理的行為) ![](https://i.imgur.com/QjtYA3j.png) --- **程式寫法如下:** **CurrentMasterPage**:抓取父層**index 值 +1**,由於 **index** 值從0開始,所以抓取**index+1**即為目前頁數 >`this.parent.index+1` **MasterPageCount**:抓取父層總長度 >`this.parent.all.length` 註:由於兩個標籤都會寫在**PageArea1**的底下,所以**this.parent**都是抓取 **PageArea1** 這個物件 ![](https://i.imgur.com/Yk7NSou.png) --- ### Page n of m 使用時,也會額外產出兩個標籤 * **CurrentPage** :紀錄目前為整個layout頁數的第幾頁 * **PageCount** :記錄整個layout頁數 --- **程式寫法如下:** **CurrentPage**:抓整個跟物件的layout層,應該....預設有個function 是**page()**,可以取得目前資料頁數 >`xfa.layout.page(this)` **PageCount**:抓整個跟物件的layout層,使用預設function:**pageCount()**,取得總頁數 >`xfa.layout.pageCount()` (以上為使用物件時,系統自動處理的行為) ![](https://i.imgur.com/lPDCFYZ.png) --- ### 頁尾於最後一頁才出現的處理 最後一頁才需要出現**頁尾**資料的寫法,可以透過上述頁數的code來處理 以 **Master Page n of m** 為例子 1. 先將**footer**區塊隱藏 2. 宣告一個變數 **currentPage** 記錄目前的頁數 = **this.parent.index+1** 3. 再宣告另一個變數 **totalPages** 記錄所有頁數 = **this.parent.all.length** 4. 最後判斷 **目前頁數 = 所有頁數** 時 , 將 **footer** 的 **presence** 值設為**visible** ,即最後一頁時,顯示 **footer** **完整程式如下:** ```javascript var currentPage = this.parent.index + 1 var totalPages = this.parent.all.length if(currentPage == totalPages) this.presence='visible' ``` ![](https://i.imgur.com/U3ziq1b.png) 備註:由於footer 的層級與上述例子的資料相同,所以可以照抄原始碼,如果層級不同,抓取的資料需要額外注意 --- ### 「續下頁」的處理 **續下頁**的條件判斷依樣畫葫蘆 判斷兩個條件 1. 如果總頁數只有1頁時,隱藏 2. 如果總頁數大於1頁時,最後一頁隱藏 **完整程式如下:** ```javascript var currentPage = this.parent.index + 1 var totalPages = this.parent.all.length //只有一頁的時候,隱藏 if(totalPages == 1) this.presence='hidden'; //兩頁以上,在最後一頁隱藏 else if (currentPage == totalPages ) this.presence='hidden'; ``` ### 用;折行的程式寫法 ```javascript var strValue=this.rawValue; if(strValue.indexOf(';')>-1){ this.rawValue=strValue.replace(/;/g,'\n'); } ``` --- ### 小結 1. 如果有需求是每個區塊獨立計算頁籤,或是部分頁面不用有頁碼,可使用**Master Page n of m**處理 2. 若要記錄整份文件的頁數,則使用**Page n of m**即可