JavaScript实现网页局部打印与分页控制详解

作者:像素漫游时间:2026-10-30 11:45:55浏览:252

本文详细介绍JavaScript实现网页局部打印的多种方案。通过CSS媒体查询隐藏非打印区域,利用page-break-after实现分页控制,以及调用IE内置WebBrowser控件执行打印、预览和页面设置。包含具体的代码示例和操作步骤,帮助开发者实现灵活的打印功能。

JS打印功能概述

本文介绍JavaScript实现网页打印组合功能,涵盖局部打印、分页控制及组件调用等全面内容,供开发者参考。

局部打印与CSS控制

1. 局部打印:实现指定区域的打印功能。 解决方案: 通过CSS样式隐藏不需要打印的内容。 <style type="text/css" media=print> .noprint{display : none }

在分页场景中,使用 .PageNext{page-break-after: always;} 为不需要打印的元素添加 class="Noprint" 类,即可使其不出现在打印及打印预览中。 需要在特定位置分页时,添加 <div class="PageNext"></div> 即可。 </style> 同时控制非打印区域的显示: <p class="noprint">不需要打印的地方</p>

WebBrowser组件调用

2. 引用组件 WebBrowser是IE浏览器内置的控件,用户无需额外下载。 WebBrowser控件代码: <object ID='WebBrowser' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>

关于该组件的具体用法列举如下: WebBrowser.ExecWB(1,1) 执行打开操作 Web.ExecWB(2,1) 关闭所有当前IE窗口,并打开一个新窗口 Web.ExecWB(4,1) 保存当前网页 Web.ExecWB(6,1) 执行打印操作 Web.ExecWB(7,1) 执行打印预览 Web.ExecWB(8,1) 设置打印页面属性 Web.ExecWB(10,1) 查看页面属性 Web.ExecWB(15,1) 执行撤销操作(具体功能待确认) Web.ExecWB(17,1) 执行全选操作 Web.ExecWB(22,1) 刷新页面 Web.ExecWB(45,1) 关闭窗体且无提示

JS局部打印实例

3. 实例演示


 <head>
<script language="javascript"> 
<style type="text/css" media=print>
.noprint{display : none }
</style>
function printsetup()
{ 
 // 打印页面设置 
  wb.execwb(8,1); 
} 
function printpreview(){ 
// 打印页面预览 
wb.execwb(7,1); 
} 
function printit() 
{ 
 if(confirm('确定打印吗?'))
 { 
  wb.execwb(6,6) 
 } 
} 
</script>
</head> 
<body>
<p class="noprint">
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0" id="wb" name="wb" width="0"></OBJECT> 
<input type="button" name="button_print" value="打印" onclick="javascript:printit()" /> 
<input type="button" name="button_setup" value="打印页面设置" onclick="javascript:printsetup();" /> 
<input type="button" name="button_show" value="打印预览" onclick="javascript:printpreview();" /> 
</p>
</body> 

3. 使用JS实现简单的页面局部打印


function preview(oper)
{
 if (oper < 10){
 bdhtml=window.document.body.innerHTML;//获取当前页的html代码
 sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
 eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取htm
 prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
 window.document.body.innerHTML=prnhtml;
 window.print();
 window.document.body.innerHTML=bdhtml;
} 
else {
  window.print();
  }
}

使用方法非常简单,将需要打印的内容包裹在 <!--startprint1-->XXXXX<!--endprint1--> 注释标记之间。 然后添加一个打印按钮,设置 onclick=preview(1) 事件。

页面打印参数设置

4. 控制“纵打”、“横打”以及“页面边距”。 (1)<script defer>


function SetPrintSettings() { 
 // -- advanced features 
 factory.printing.SetMarginMeasure(2) // measure margins in inches 
 factory.SetPageRange(false, 1, 3) // need pages from 1 to 3 
 factory.printing.printer = "HP DeskJet 870C" 
 factory.printing.copies = 2 
 factory.printing.collate = true 
 factory.printing.paperSize = "A4" 
 factory.printing.paperSource = "Manual feed" 

 // -- basic features 
 factory.printing.header = "This is MeadCo" 
 factory.printing.footer = "Advanced Printing by ScriptX" 
 factory.printing.portrait = false 
 factory.printing.leftMargin = 1.0 
 factory.printing.topMargin = 1.0 
 factory.printing.rightMargin = 1.0 
 factory.printing.bottomMargin = 1.0 
} 
</script> 

function preview(oper)
{
 if (oper < 10){
 bdhtml=window.document.body.innerHTML;//获取当前页的html代码
 sprnstr="<!--startprint"+oper+"-->";//设置打印开始区域
 eprnstr="<!--endprint"+oper+"-->";//设置打印结束区域
 prnhtml=bdhtml.substring(bdhtml.indexOf(sprnstr)+18); //从开始代码向后取htm
 prnhtml=prnhtml.substring(0,prnhtml.indexOf(eprnstr));//从结束代码向前取html
 window.document.body.innerHTML=prnhtml;
 window.print();
 window.document.body.innerHTML=bdhtml;
} 
else {
  window.print();
  }
}

使用方法非常简单,将需要打印的内容包裹在 <!--startprint1-->XXXXX<!--endprint1--> 注释标记之间。 然后添加一个打印按钮,设置 onclick=preview(1) 事件。

如需了解更多关于JS打印功能的内容,可点击《js打印功能汇总》进行专题学习。

以上就是本文的全部内容,希望能为读者的学习提供有益帮助,也欢迎大家继续支持本站。

作者最新文章