IE下使用smsx.cab组件实现打印和打印预览功能

1:下载smsx.cab组件,本人附上破解版组件,地址scriptx授权制作工具

2:在jsp页面添加如下代码

//打印需要的CSS

<style  media="print" type="text/css">
  .Noprint{display:none;}
  .Yesprint{display:block;}   
  .PageNext{page-break-after: always;}  //分页的时候用,这里没用到
  *{word-wrap: break-word; word-break: break-all;}  //用来给table,div之类的自动换行
</style>

//初始化打印组件,第一次需要安装

<OBJECT id="factory" codeBase="<%=ctx%>/plugins/smsx.cab#Version=6,3,438,06"
            height="0" width="0" classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext>

 </OBJECT>

//打印按钮

<td class="bcCls" width="25"><a href="javascript:printdiv('hiddenTag1')">打印</a></td>

//打印预览

<td class="bcCls" width="60"><a href="javascript:printView('hiddenTag1,hiddenTag2','div_print')">打印预览</a></td>

3:对应的JS代码

需要自行引入jquery

/**
 * 打印指定div
 * @param hiddenTags  需要隐藏的Tag组件的ID,以逗号分隔
 * @param showTags  需要显示的Tag组件的ID,以逗号分隔
 * @returns {Boolean}
 */
 //初始化打印组件属性
function printBase(hiddenTags,showTags) {
if(hiddenTags!=""&&hiddenTags!=null){
var hiddenTag=hiddenTags.split(",");
for(var i=0;i<hiddenTag.length;i++){
$("#"+hiddenTag[i]).removeClass("Yesprint");
$("#"+hiddenTag[i]).addClass("Noprint");
}
}
if(showTags!=""&&showTags!=null){
var showTag=showTags.split(",");
for(var i=0;i<showTag.length;i++){
$("#"+showTag[i]).removeClass("Noprint");
$("#"+showTag[i]).addClass("Yesprint");
}
}
factory.printing.header  = ""   //页眉
factory.printing.footer = ""   //页脚
factory.printing.portrait = true   //true为纵向打印,false为横向打印
factory.printing.leftMargin = 15.0   //左页边距
factory.printing.topMargin = 5.0     //上页边距
factory.printing.rightMargin = 0.75 //右页边距
factory.printing.bottomMargin = 1.5 //下页边距
}
function printdiv(hiddenTags,showTags)
{
printBase(hiddenTags,showTags);
factory.DoPrint(true);
}
function printView(hiddenTags,showTags){
printBase(hiddenTags,showTags);
factory.printing.Preview();
}



网上针对IE打印有很多中方法,大概有三种

1:window.print(),此方法可以打印,但是不可以预览

2:WebBrowser,利用IE自带的组件打印,此组件可以打印(局部打印)也可以预览,但是预览的时候不可以预览局部。如果有人找到解决办法,求赐教。

3:就是利用SMSX.CAB组件,此组件第一次需要安装。



另外附上IE下此组件加载失败的解决办法 http://blog.csdn.net/yjlwl1213/article/details/3929848

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值