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

ASP.NET 網頁列印技術完整指南:七大方案比較與選型建議

     編輯:ASP.NET 基礎

Web 列印的特殊挑戰

  • 程式在伺服器,印表機在客戶端,控制權分離
  • 頁面排版、分頁、頁首頁尾控制困難
  • 瀏覽器列印預設行為差異大

七大列印方案比較

方案原理優點缺點適用場景
1. Client Script (JS) JS 擷取頁面片段,開新視窗列印 零伺服器負擔、彈性高 需約定 HTML 結構、複雜排版難控制 簡單報表、局部列印
2. Server 產生列印版 後端讀 DB 產生專用列印頁 + CSS 分頁 內容豐富、可控性強 伺服器負載大、需維護兩套版面 正式報表、發票、契約
3. IE 直接列印 window.print() 或 WebBrowser.ExecWB 零開發成本 無法控制頁首頁尾、非列印區域也會印出 內部簡單 GridView 列印
4. WebBrowser 控制項 ActiveX 控制項程式化列印/預覽/設定 功能完整、可指定印表機 僅 IE 支援、需客戶端安裝、安全性限制多 內部系統、Kiosk 模式
5. 匯出 Excel/Word 列印 Response 輸出 HTML/Office 格式,用戶自行列印 排版靈活、離線可用 需客戶端裝 Office、MIME 類型相容性問題 複雜表格、需二次編輯
6. .NET 組件/XSLT 客戶端下載組件或伺服器 XSLT 轉 HTML 格式變化大、資料量小時適合 需 .NET Framework、XML 解析效能瓶頸 特殊格式需求、資料驅動文件
7. 第三方/水晶報表 專業報表引擎,支援匯出 PDF/Word/Excel/列印 功能最強、企業級標準 授權成本高、部署複雜、學習曲線陡峭 企業級複雜報表、法規格式

推薦實作:JS 局部列印(輕量、通用)

<div id="printArea" runat="server">
    <h2><%# Eval("Title") %></h2>
    <div><%# Eval("Content") %></div>
</div>
<asp:Button ID="btnPrint" runat="server" Text="列印" OnClientClick="return printArticle();" />

<script>
function printArticle() {
    var content = document.getElementById('<%= printArea.ClientID %>').innerHTML;
    var w = window.open('', '_blank', 'width=800,height=600');
    w.document.write('<html><head><title>列印</title>');
    w.document.write('<style>@media print { .no-print { display:none; } } body{font-family:微軟正黑體;}</style>');
    w.document.write('</head><body onload="window.print();window.close();">');
    w.document.write(content);
    w.document.write('</body></html>');
    w.document.close();
    return false;
}
</script>

頁面設定控制(@page / @media print)

<style>
@page { margin: 2cm; size: A4 portrait; }
@media print {
    .no-print { display: none !important; }
    .page-break { page-break-before: always; }
    .avoid-break { page-break-inside: avoid; }
    thead { display: table-header-group; }  /* 表頭每頁重複 */
    tfoot { display: table-footer-group; }
}
</style>

選型決策樹

  1. 需求極簡(只印一區塊) → JS 局部列印
  2. 需求固定、格式嚴謹(發票、報表) → Server 產生列印版 + CSS @media print
  3. 企業級、多格式、法規遵循 → 水晶報表 / FastReport / Stimulsoft
  4. 內部系統、指定印表機、批次列印 → WebBrowser 控制項 / ActiveX
  5. 使用者需二次編輯 → 匯出 Excel/Word

避坑指南

  • 列印預覽與實際列印可能不同,實機測試不可省略
  • 大量資料分頁列印時,注意 thead 重複與頁碼處理
  • 跨瀏覽器測試:Chrome/Firefox/Edge/IE11 列印行為差異大
  • 安全性:列印頁面不應包含敏感資料(密碼、Token)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved