` 的 `offsetTop + offsetHeight`,超過可用頁高(11 - 1×2 - 0.25×2 = 8.5 英吋)時,在前一列插入分頁符、頁尾、下一頁頁首。
關鍵 HTML 結構
<div id="header" class="hdrftr">頁首內容</div>
<div id="footer" class="hdrftr">頁尾內容</div>
<table id="tbl1" width="6.5in" border="0">
<tr class="t1"><td>資料列 1</td></tr>
<tr class="t1"><td>資料列 2</td></tr>
...
</table>
關鍵 CSS
.hdrftr { width: 6.5in; height: 1in; overflow: hidden; display: none; }
@media print {
.hdrftr { display: inline; }
tr.page-break { page-break-after: always; }
}
@media screen {
.hdrftr { display: none; }
}
關鍵 JavaScript (簡化版)
window.onload = function() {
const rows = document.querySelectorAll('#tbl1 .t1');
const pageH = 8.5 * 96; // 8.5in * 96dpi (近似)
const headerH = 1 * 96, footerH = 1 * 96;
let accumulated = headerH;
rows.forEach((row, i) => {
accumulated += row.offsetHeight;
if (accumulated + footerH > pageH) {
// 前一列加分頁
if (i > 0) rows[i-1].classList.add('page-break');
// 插入頁尾+頁首邏輯(需 DOM 操作)
accumulated = headerH + row.offsetHeight;
}
});
// 最後加頁尾
};
注意事項
- 瀏覽器列印邊距、縮放設定會影響實際分頁,建議在列印預覽微調。
- 此法適用 IE5+、Edge、Chrome、Firefox 現代瀏覽器。
- 複雜報表建議改用專用報表工具或後端產生 PDF。
掌握此技巧,網頁即時變身可列印的專業報表,省去匯出 PDF 的額外步驟。