前面之所以讲Jquery的打印和smsx.cab打印,是因为最近用的项目里边需要把两个都结合起来才能实现效果。
基本业务是这样子的:同时打印多个人的简历,要求每个人的打5份,自动打印,且有进度条显示。
为什么需要用到两种打印方式:既然是自动打印就不能弹出打印机选择框那么只能是smsx.cab,而使用
smsx.cab打印时就需要将进度条信息隐藏起来否则进度条也会被打印进去。所以两个要综合起来用。
最后的思路就是:打印时使用smsx.cab设置好打印机弹出框信息和页眉页脚页边距,然后使用Jquery局部打印的原理将打印内容和样式拷贝到一个新的iframe中,再调用smsx.cab进行打印。
效果就不截图了,直接上代码:
1、打印的基本机构:这里是打印了5个人的,若有多的人直接在后面添加div即可。进度条的样式已上传到附件。
<%--需要打印的内容--%> <div class="box" id="page1">简历基本信信息</div><%--当前正在打印 --%> <div class="box" id="page2" style="display: none;">简历基本信信息</div> <div class="box" id="page3" style="display: none;">简历基本信信息</div> <div class="box" id="page4" style="display: none;">简历基本信信息</div> <div class="box" id="page5" style="display: none;">简历基本信信息</div> <%--进度条 --%> <div id="container"> <div class="content"> <p id="allUserInfo"></p> <p>正在打印:<span id="curUserInfo"></span></p> </div> <div id="progress_bar" class="ui-progress-bar ui-container"> <div class="ui-progress" id="ui-progress" style="width: 0%;"> <span class="ui-label"><b class="value" id="curProgress">0%</b></span> </div> </div> </div> <%-- 遮罩层 --%> <div id="zhegai" style="z-index:100;width:100%;height: 100%;top:0px;left:0px;position:absolute;filter:Alpha(Opacity=50);background:#000000;-moz-opacity: 0.5; opacity:.50; " ></div>
2、js处理:
var count = '${count}';//总共有几个人的简历需要打印 var userInfo = '${userInfo}';//打印简历的人的姓名,字符串,以中文半角的逗号分开 var printContent = "打印简历的人员:"+userInfo; var pages = 5;//打印5份 var array = userInfo.split(","); var current = 1; var iframe = null;//打印用的iframe var timeOut = (pages*3*2)*1000;//30秒之后再执行下一个:假设每个人的简历有3页每页打2秒 $(function() { $("#allUserInfo").text(printContent);//显示需要打印的所有内容 unScroll();//禁止滚动条滚动 printTZS();//页面加载完成后直接打印 }); // 主页面不允许右键(兼容多浏览器) document.oncontextmenu=function(e){ return false; }; //禁止页面点击 $(document).click(function(event){ return false; }); //该方法用来打印简历信息 function printTZS(){ //计算进度条信息 calcProgress(); //移除已经打印完成的简历信息 if(current>1){//说明至少到第二个人了,那么需要移除掉前面的人的简历信息 $("#page"+(current-1)).remove(); } //显示正在打印的简历信息 $("#page"+current).show(); //进行打印 printArea($("#page"+current)); current++; //循环打印 if(current<=count){//说明还没有打完,那么继续打 //printTZS(); window.setTimeout(function(){ printTZS();//timeOut秒后再打 }, timeOut); }else{//说明打印完成,跳转到上一页 history.back(); } } //该方法用来计算进度条信息 function calcProgress(){ //显示进度条信息 $("#curUserInfo").text(array[current-1]);//当前正在打印的简历信息 //计算进度 var progress = ((current/count).toFixed(2))*100; //alert(progress); $("#ui-progress").css("width",progress+"%"); $("#curProgress").text(progress+"%"); } //禁止滚动条滚动 function unScroll() { var top = $(window).scrollTop(); $(window).scroll(function() { $(window).scrollTop(top); }); } /** *该方法用来打印简历信息(根据Jquery的局部打印进行修改而来) *@param obj:需要进行打印的区域 */ function printArea(obj){ var $this = $(obj); if(current==1){//说明是第一次打印,那么需要添加iframe var iframeId = "printArea";//iframe的id var iframeStyle = "position:absolute;width:0px;height:0px;left:-500px;top:-500px;"; iframe = document.createElement("IFRAME");//创建ifreame //添加属性 $(iframe).attr({ style : iframeStyle, id : iframeId }); document.body.appendChild(iframe);//添加到document中 var doc = iframe.contentWindow.document; //添加css样式 $(document).find("link").filter(function() { return $(this).attr("rel").toLowerCase() == "stylesheet"; }).each(function() { doc.write('<link type="text/css" rel="stylesheet" href="' + $(this).attr("href") + '" >'); }); //添加Object控件 doc.write("<OBJECT id=\"factory\" codeBase=\"redist/smsx.cab#Version=6,3,434,26\" height=\"0\" width=\"0\" classid=\"clsid:1663ed61-23eb-11d2-b92f-008048fdd814\" viewastext></OBJECT>"); } var doc = iframe.contentWindow.document; //清空先前打印的数据 var $printNode = $(doc.getElementById("printDiv")); $printNode.remove(); //添加盛放打印内容的div var printNode = doc.createElement("div");//创建ifreame printNode.setAttribute("id","printDiv"); printNode.setAttribute("class",$this.attr("class")); doc.body.appendChild(printNode);//添加到document中 $printNode = $(printNode); //将需要打印的内容添加iframe中 var html = $this.html(); for(var i=0;i<pages;i++){//打印pages份 if(i==0){$printNode.html(html);} else{$printNode.append(html);} //除了最后一份,其他(pages-1)份最后都需要添加分页打印的代码 if(i<pages-1){ $printNode.append("<div style=\"page-break-before: always;width: 500px;\" ></div>"); } } doc.close();//关闭文档 //调用iframe框进行打印 var frameWindow = iframe.contentWindow; frameWindow.close(); frameWindow.focus(); var factory = frameWindow.document.getElementById("factory"); //进行打印设置 factory.printing.header = ""; // 页眉 factory.printing.footer = ""; // 页脚 factory.printing.portrait = true; // true为纵向打印,false为横向打印 factory.printing.leftMargin = 19.05; factory.printing.topMargin = 0; factory.printing.rightMargin = 0; factory.printing.bottomMargin = 0; factory.printing.Print(false);//进行打印,false:不弹出打印框让选择打印机 }
说明:${count}和 ${userInfo}都是从后台传递过来的数据。
相关推荐
Web打印控件smsx.cab使用说明 在项目开发中,经常会用到... 使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局,包括页面布局、js 的引用、smsx.cab控件加载、打印和预览按钮的放置。
smsx.cab 最新版本经过测试可以使用
本文将深入探讨ScriptX打印控件,包括其核心组件smsx.cab和smsx.exe,以及如何在实际项目中应用。 ScriptX是由Meadroid公司开发的一款专门用于Web打印的解决方案。它提供了一种在IE和基于Chromium的Edge浏览器中...
smsx.cab是WEB页面打印控件,此插件可设置Web打印时的页眉页脚,IE浏览器下使用smsx.cab组件实现打印和打印预览功能,可以通过属性设置横向竖向打印模式,打印页眉等打印格式。网上有详细的使用方法。
【IE打印控件smsx.cab】是一种专为网页应用设计的打印解决方案,它使得开发者能够在JSP、ASP和PHP等不同的Web开发平台上方便地实现打印功能。这个控件允许用户在不离开浏览器的情况下,直接从网页上打印内容,极大地...
smsx.cab并非一个独立的软件,而是嵌入到其他打印应用中的组件,它提供了丰富的打印设置选项,帮助用户更好地管理和定制打印任务。通过下载并安装这个插件,用户可以访问到更多的打印机配置选项,如页面布局、色彩...
Asp.Net(IE) ScriptX/smsx.cab 打印控制插件 如何使用详细教程 注:该插件只限IE使用。 当前示例版本:ScriptX version 6,6,440,26 第一步: 将smsx.cab 复制到.net工程中,如send_js 文件夹中。 第二步: ...
本文档将深入探讨"打印插件smsx.cab"的技术细节,帮助开发者理解和利用该插件实现更高效的打印解决方案。"smsx.cab"文件是一种常见的Windows Cabinet压缩格式,它通常包含一个或多个DLL(动态链接库)文件,这些文件...
实现打印控制,使用javaScript。 可以实现基本的打印控制
在项目开发中,经常会用到页面... 使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局,包括页面布局、js 的引用、smsx.cab控件加载、打印和预览按钮的放置。 母版页(Print.Master):
找了好久,好像与scriptX.cab相似,功能应该差不多。这个可以用,已试过。使用方法可上网查询,很多
标题“Web网页横向打印(smsx.cab)”所指的是一个与网页打印相关的工具或解决方案,其中包含了名为“smsx.cab”的压缩包文件。在Web开发中,打印功能是必不可少的一部分,允许用户将网页内容以纸质形式保存或分享。...
IE下使用smsx.cab组件实现打印和打印预览功能,可以通过属性设置横向竖向打印,打印页眉等打印格式。是免费版,不支持设置打印机和预览效果,软件集成用比较方便。
Web打印控件smsx.cab
在项目开发中,经常会用到页面打印的功能,在ASP.NET环境下... 使用方法:一般会先定义一个用于打印的母版页(Print.Master),在母版页上做好布局,包括页面布局、js 的引用、smsx.cab控件加载、打印和预览按钮的放置。
【smsx.rar打印控件】是一款专用于打印功能的控件,主要应用于Windows操作系统环境,为开发者提供便捷的打印解决方案。smsx控件的核心在于它能够帮助程序员在应用程序中轻松集成打印功能,使得用户可以方便地打印...
使用方法:一般会先定义一个用于打印的母版页 Print Master 在母版页上做好布局 包括页面布局 js 的引用 smsx cab控件加载 打印和预览按钮的放置 母版页 Print Master :">在项目开发中 经常会用到页面打印的...
smsx是图片处理控件 可以各种图片 如jgp,tif,bmp等