首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 整合 JavaScript 列印功能:自動與延遲兩種模式

     編輯:PHP 綜合知識

功能簡介

提供一個 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);
?>

適用場景

  • 報表、發票、憑證頁面自動喚起列印
  • 列印前需讓使用者確認內容無誤
  • 無伺服器端 PDF 生成環境時的替代方案

注意事項與改進建議

  1. 瀏覽器相容性: window.print() 為標準 DOM 方法,現代瀏覽器皆支援;舊版 IE 需 ActiveX 物件,此代碼不相容。
  2. 使用者體驗: 立即列印模式可能驚擾使用者,建議僅在明確「列印版」頁面使用。
  3. 延遲參數: $timeOut 單位為毫秒,預設 10 秒,可依頁面複雜度調整。
  4. CSS 列印樣式: 搭配 @media print 隱藏導航列、調整頁邊距,獲得更好列印輸出。
  5. 現代化寫法: 建議改用 <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)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved