當您使用 頁首頁尾 PDF 工具為 PDF 加入頁首與頁尾之後,檢查結果的方式就是開啟工具下載的新檔案,並在任何標準的 PDF 閱讀器中逐頁掃描。下載的檔案會保留您原本的檔名主體,並附加 -header-footer.pdf,而您載入的來源文件則會維持原樣不變。在新檔案內部,會有一行可選的頁首置於頂端邊緣下方,以及一行可選的頁尾置於底端邊緣上方,兩者皆使用內嵌的標準 Helvetica 字型水平置中,套用至原始文件的每一個結構頁面上。由於工具是將這些線條作為額外內容繪製在現有的頁面框框內,因此確認位置、大小、代碼替換以及置中的唯一方式,就是開啟產生的檔案並以目視檢查每一頁。這個驗證步驟很重要,因為工具不會移動本文內容、不會建立留白,也不會偵測標誌與裁切標記,所以靠近邊緣的現有內容可能會與新加入的線條重疊。

輸出結果應有的樣子
當工具執行完畢後,瀏覽器會將一個新的 PDF 儲存到您的下載目錄中。檔名主體會與來源檔相同,並附加 -header-footer.pdf,所以一個名為 report.pdf 的檔案會變成 report-header-footer.pdf。您所選擇的原始 PDF 不會被修改,頁面順序、頁數以及現有的可見內容都會保留不變。原始檔的每一頁都會加入一行可選的頁首與一行可選的頁尾,兩者皆繪製於現有的頁面框框內。
如果您輸入了頁首,它會位於頂端邊緣下方,距離為您選擇的邊距加上您設定的字型大小;如果您輸入了頁尾,則會從底端邊緣上方開始,距離為您選擇的邊距。兩條線條的水平置中是依據內嵌標準 Helvetica 字型量測後的實際文字寬度,而非固定的字元數。{page} 代碼會被替換為以 1 為基準的目前頁碼,而 {pages} 則會被替換為來源檔的結構頁面總數。因此像「Page {page} of {pages}」這樣的頁尾,在一份 5 頁文件的第二頁上會變成 Page 2 of 5。
如何檢查新的 PDF
- 找出下載的檔案。檔案會以來源檔名加上 -header-footer.pdf 儲存,因此請在瀏覽器的下載清單或下載資料夾中尋找該檔名。
- 在任何 PDF 閱讀器中開啟檔案。對檔案按兩下,或按右鍵選擇「開啟方式」,然後挑選您平常使用的閱讀器,例如 Adobe Acrobat、Preview、Foxit,或是瀏覽器分頁。
- 跳到第一頁。檢視頂端邊緣的頁首文字與底端邊緣的頁尾文字,並確認兩者皆為水平置中。
- 使用閱讀器的頁面導覽功能移動到最後一頁。確認頁尾顯示最高的頁碼,且 {pages} 代碼已正確解析為總頁數。
- 隨機抽檢中間的三頁。頁首與頁尾應出現在每一個結構頁面上,文字、字型大小與水平位置皆應相同。
- 放大以驗證文字呈現結果。如果某個字型顯示為方框或問號,表示內嵌的標準 Helvetica 字型無法編碼該字元,這時檔案建立應該會明顯失敗,而非產生一個缺少字型的 PDF。
- 與來源檔進行比對。將原始 PDF 與新檔案並排開啟,確認頁面順序、頁數以及現有的可見內容皆未改變。
驗證代碼、邊距與置中
下表將每一項驗證檢查對應到工具所保證的行為,讓您可以將您在 PDF 閱讀器中看到的內容,與工具在每個結構頁面上實際執行的結果進行比對。
| 檢查項目 | 應查看的內容 | 工具保證的行為 |
|---|---|---|
| 頁碼代碼 | 每一頁都顯示正確的、以 1 為基準的頁碼 | {page} 會在每個結構頁面上以確定性的方式替換 |
| 總頁數代碼 | 總數與來源檔的頁數一致 | {pages} 反映來源檔的結構頁面總數 |
| 字型大小 | 文字與您輸入的整數值相符 | 接受 6 到 36 點之間的整數值 |
| 邊緣邊距 | 與邊緣的距離與您輸入的值相符 | 接受 0 到 200 點之間的整數值 |
| 置中對齊 | 文字位於頁面的水平中央 | 依據內嵌標準 Helvetica 量測的真實文字寬度進行置中 |
| 頁首位置 | 位於頂端邊緣下方,距離為邊距加上字型大小 | 依據選定的邊距與字型大小,繪製於頂端邊緣下方 |
| 頁尾位置 | 位於底端邊緣上方,距離為邊距 | 從底端邊緣上方開始,距離為選定的邊距 |
| 寬度限制 | 如果文字過寬,字型會縮小至 6 點 | 每次縮小一點,直至 6 點下限,永不換行或刪除 |
| 文字長度 | 每個欄位不超過 120 個字元 | 每個文字欄位會被修剪並限制為 120 個 Unicode 字元 |
如果結果不正確該怎麼辦
當您開啟下載的檔案時,有幾個常見問題可以立即看出來。
如果頁首或頁尾與本文內容重疊,這是因為工具是在現有的頁面框框內繪製,並不會將本文內容下推,也不會建立留白。若要修正重疊問題,請返回工具,降低字型大小、加大邊緣邊距,或是在重新執行工具之前先在來源 PDF 中移動本文內容。指南 頁首頁尾 PDF 工具會為文字預留空間嗎? 對此行為有更詳細的說明。
如果線條看起來比您要求的尺寸小,代表您輸入的文字對該頁面而言太寬,工具已將字型每次縮小一點,直至 6 點下限。請縮短文字、手動降低字型大小,或縮小邊緣邊距,以增加每頁可用的空間。
如果在某些頁面上缺少線條,最可能的原因是某個字元無法被內嵌的標準 Helvetica 編碼。在這種情況下,檔案建立應該會明顯失敗,但如果磁碟上仍存有部分檔案,請再次確認是否有標準拉丁字元集以外的字元,並在重新執行工具前移除表情符號或不支援的指令碼。
如果下載的檔名與先前一次執行相同,則來源檔案、頁首文字、頁尾文字、字型大小或邊距的任何變更都會使先前的下載失效,並產生一個新的下載檔案,這樣在檢查結果時,先前工作階段留下的舊檔案就不會被誤認為是目前的設定。
新 PDF 是如何建立的
了解建構順序可以幫助您在開啟檔案之前預測驗證結果。
瀏覽器會在本機載入來源 PDF,將其驗證為大小不超過 25 MiB 的非空 PDF,並將每個文字欄位修剪為 120 個 Unicode 字元。它會為每個結構頁面以確定性的方式展開 {page} 與 {pages},然後嵌入一次標準 Helvetica。工具會使用內嵌的字型量測每一條線,如果線條在要求的字型大小下寬於可用的頁面寬度,工具會在不換行或不刪除文字的情況下,每次將大小縮小一點,直至 6 點下限。它會使用量測到的文字寬度,將每一條線條在現有的頁面框框內水平置中,將頁首置於頂端邊緣下方(距離為邊距與字型大小),將頁尾置於底端邊緣上方(距離為邊距),然後序列化產生一個新的 PDF。pdf-lib PDFPage drawText 方法 負責處理位置的擺放,而標準 Helvetica 字型則來自 pdf-lib StandardFonts 列舉。
為什麼結果會因文件而異
有三個輸入會改變您在驗證結果中看到的內容:來源頁面的大小、所選擇的邊距,以及所選擇的字型大小。
較寬的頁面在觸發縮小機制之前,會給予置中文字更多的水平餘裕,而非常窄的頁面即使對於簡短的文字,也可能迫使工具降至 6 點下限。較大的邊距會減少可用空間,並可能觸發縮小機制,或使線條看起來與本文內容過於擁擠。較大的字型大小會讓每個字元更寬,並縮短可容納的文字量,因此 36 點的頁首在相同邊距下,會比 6 點的頁首佔據更多的水平空間。
這三個輸入之間的關係很直接:可用文字寬度等於頁面寬度減去兩倍的邊緣邊距。任何量測寬度超過該可用寬度的文字,都會觸發縮小規則。精確的測量值會依據您特定的 PDF 而有所不同,所以請執行該工具並檢查輸出,確認位置看起來正確無誤後再進行分享或列印。