批量打印之smsx.cab打印

smsx.cab插件实现打印的依赖的是ActiveX控件,所以缺点很明显:页面得允许运行ActiveX控件,而ActiveX控件只有IE支持,所以局限性很强。

 

页面基本结构:

<div  id="floatDiv" align="right">
	<input style="color: #fff; font-size: 16px" οnclick="printTures();" type="button" value="打印"/>
	<input style="color: #fff; font-size: 16px" οnclick="printpage();" type="button" value="打印预览"/>
	<input style="color: #fff; font-size: 16px" οnclick="pageReSet();" type="button" value="页面设置"/>
</div>
<div id="page"></div>

JS实现:

//打击“打印”按钮时触发该事件
function printTures(){
	$("body").append("<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 printdiv = document.getElementById("page");
	printdiv.style.overflow="";
	
	printBase();//进行打印设置
	
	//将打印按钮和打印预览按钮隐藏掉
	document.getElementById("floatDiv").style.display = "none";// 隐藏按钮
	
	//进行打印:无确认打印,true时打印前需进行确认
	factory.printing.Print(false);
	
	//打印完成返回项目列表
	$("#factory").remove();
}

//打击“打印预览”按钮时触发该事件
function printpage(){
	$("body").append("<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 printdiv = document.getElementById("page");
	printdiv.style.overflow="";
	printBase();//进行打印设置
	
	//将打印按钮和打印预览按钮隐藏掉
	document.getElementById("floatDiv").style.display = "none";// 隐藏按钮
	//进行预览
	factory.printing.Preview();
	//打印完成返回项目列表
	printdiv.style.overflow="auto";
	//将打印按钮和打印预览按钮隐藏掉
	document.getElementById("floatDiv").style.display = "block";// 隐藏按钮
	$("#factory").remove();
}

/**页面设置 */
function pageReSet(){
	printBase();
	factory.printing.PageSetup();
}

// 用于设置打印参数
function printBase() {
	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;
}

注意: <Object>标签中的codeBase=\"redist/smsx.cab#Version=6,3,434,26\"目录下得有对应的文件

 

用这个插件唯一的感受就是:调顺了很好使,调不顺了很麻烦。一旦出问题了调试起来也麻烦,因为它跟浏览器挂钩它还要往操作系统中写东西,这就牵扯到安全性问题了,反过来若是浏览器或操作系统的设置有变化它也可能被影响到,所以对于它来说“上午用的好好的下午就不能用了是常态”。

 

可能碰到的问题:若是页面上同时存在“打印”和“打印按钮”,且两个按钮都点击了(如先点打印不刷新的情况下再点打印预览),那么点第二个按钮时可能会报错:only one scriptx object can be used per browser window。解决方法可以参考这个链接:http://blog.csdn.net/zhao19861029/article/details/8283347

 

跟Jquery打印一样,说下优缺点:

缺点:兼容性不好,只能IE使用;容易出问题,且调试麻烦;

优点:可预览;配置好之后打印时不会弹出打印框让选打印机,也可以设置页眉页脚、页边距;

 

最后贴几个对smsx.cab插件有帮助的链接:

1、 针对web打印控件的使用心得 :http://blog.csdn.net/zhao19861029/article/details/8283347

2、IE下使用smsx.cab组件实现打印和打印预览功能:http://blog.csdn.net/zhao19861029/article/details/8270194

3、ScriptX,smsx打印控件安装的终极解决办法:http://blog.csdn.net/yjlwl1213/article/details/3929848

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值