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