提供一個 PHP 函式 printPage(),輸出 JavaScript 代碼呼叫瀏覽器原生 window.print()。支援兩種模式:
$auto=1):頁面載入完成即觸發列印對話框。$auto=0):指定毫秒後彈出確認對話框,使用者同意才列印。<?php
function printPage($auto = 1, $timeOut = 10000) {
if ($auto == 1) {
echo '
<script language="JavaScript">
<!-- Begin
if (window.print) {
window.print();
} else {
alert("您的瀏覽器不支援列印功能");
}
// End -->
</script>';
} else {
echo '
<script language="JavaScript">
<!-- Begin
if (window.print) {
setTimeout("printCheck()", ' . $timeOut . ');
} else {
alert("您的瀏覽器不支援列印功能");
}
function printCheck() {
agree = confirm("現在列印嗎?");
if (agree) window.print();
}
// End -->
</script>';
}
}
?>
<?php
require_once 'printPage.php';
// 報表頁面結束前呼叫
// 模式 1:立即列印
printPage(1);
// 模式 2:5 秒後詢問是否列印
// printPage(0, 5000);
?>
window.print() 為標準 DOM 方法,現代瀏覽器皆支援;舊版 IE 需 ActiveX 物件,此代碼不相容。$timeOut 單位為毫秒,預設 10 秒,可依頁面複雜度調整。@media print 隱藏導航列、調整頁邊距,獲得更好列印輸出。<script> 標籤(無 language 屬性),並將 JS 邏輯分離至獨立 .js 檔,PHP 僅輸出設定變數。若只想列印頁面特定區塊(如報表表格),可結合 CSS:
<style>
@media print {
.no-print { display: none; }
.print-only { display: block; }
}
</style>
或使用 JavaScript 暫時替換 document.body.innerHTML 再呼叫 window.print(),列印後還原(需小心事件綁定失效)。
printPage() 是一個輕量、零依賴的 PHP 列印輔助函式,適合快速為報表頁面加入列印功能。實務上建議搭配 CSS 列印樣式表,並考慮使用者體驗選擇適當模式。若需專業報表輸出(分頁控制、頁首頁尾、向量圖形),請改用伺服器端 PDF 生成庫(如 Dompdf、TCPDF、wkhtmltopdf)。