網頁列印時需在每頁固定位置顯示頁首(Logo、標題)、頁尾(頁碼、機密等級)並強制換頁,瀏覽器預設列印無法精準控制。利用 CSS @media print 偽類配合 Table 佈局與 JavaScript 動態插入,可在 IE5+、現代瀏覽器實現精準分頁。
<div id="header" style="display:none">頁首內容</div>
<div id="footer" style="display:none">頁尾內容</div>
<table id="tbl" width="6.5in" border="0">
<tr><td>資料列 1</td></tr>
<tr><td>資料列 2</td></tr>
...
</table>
@media print {
#header, #footer { display: block; page-break-after: always; }
#header { position: fixed; top: 0.25in; width: 6.5in; }
#footer { position: fixed; bottom: 0.25in; width: 6.5in; }
tr { page-break-inside: avoid; }
}
11in - (頁首高+頁尾高) - (上下邊界×2) = 8.5in。<tr>,累加 offsetTop + offsetHeight。<tr> 加 style="page-break-after:always",並插入頁尾/頁首佔位列。screen.deviceYDPI(通常 96 DPI)換算像素。現代替代方案:Puppeteer/Playwright headless Chrome 產生 PDF、
@pageCSS 標準(現代瀏覽器支援度提升中)、WeasyPrint/PrinceXML 伺服器端渲染,精準度與維護性優於客戶端 JS 方案。