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

JavaWeb 打印功能實現方案:WebBrowser 控件與 CSS 分頁打印

     編輯:Java 相關知識

方案一:WebBrowser 控件(IE 內核,僅限 Windows/IE 瀏覽器)

核心代碼

<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" 
        id="wb" width="0" height="0"></OBJECT>

<script>
function printSetup()   { wb.execWB(8, 1); }  // 頁面設置
function printPreview() { wb.execWB(7, 1); }  // 打印預覽
function doPrint() {
    if (confirm('確定打印?')) wb.execWB(6, 6); // 直接打印
}
</script>

<input type="button" value="頁面設置" onclick="printSetup()">
<input type="button" value="打印預覽" onclick="printPreview()">
<input type="button" value="打印" onclick="doPrint()">

ExecWB 常用命令對照表

命令 ID功能
1打開
4保存網頁
6打印
7打印預覽
8頁面設置
10屬性
17全選
22刷新
45無提示關閉窗口

進階設置腳本(ScriptX/MEADCO 控件)

factory.printing.SetMarginMeasure(2);      // 英寸制
factory.printing.header = "頁眉內容";
factory.printing.footer = "頁腳內容";
factory.printing.portrait = false;         // 橫向
factory.printing.leftMargin = 1.0;
factory.printing.topMargin = 1.0;
factory.printing.rightMargin = 1.0;
factory.printing.bottomMargin = 1.0;

方案二:CSS 分頁打印(跨瀏覽器,推薦)

<style>
@media print {
    .page-break { page-break-after: always; }  // 強制分頁
    .no-print { display: none; }               // 隱藏按鈕等
}
</style>

<body>
<% while (!rs.eof) { %>
    <div class="page-break">
        <%= rs.getString(1) %>
    </div>
    <% rs.next(); } %>
</body>

現代替代方案對比

方案優點缺點適用場景
WebBrowser 控件功能豐富、可控制打印機參數僅 IE/Windows、需 ActiveX 權限內網 IE 專用系統
CSS @media print跨平台、無插件、標準化無法控制打印機硬件設置現代 Web 應用首選
PDF.js + pdfMake生成精確 PDF、支持下載存檔需前端生成邏輯報表、發票、合同
JasperReports/iText服務端生成複雜報表後端開發成本高企業級報表系統

最佳實踐建議

  1. 優先使用 @media print + 語義化 HTML 結構
  2. 打印區域獨立模板,隱藏導航/按鈕 .no-print { display:none }
  3. 表格跨頁處理:thead { display: table-header-group; }
  4. 頁碼/水印:@page { @bottom-center { content: counter(page) } }
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved