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

本文介绍了如何在IE浏览器中使用SMSX.CAB组件实现网页打印及预览功能,包括代码实现、组件加载、初始化配置、打印按钮集成等关键步骤,并提供了针对IE下组件加载失败的解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.youkuaiyun.com/yjlwl1213/article/details/3929848

IE下页面打印控件 类似于ScriptX控件,但本控件可免费使用 控件使用OCX技术,使控件加载到IE浏览器中 首次使用需要用户加载Activex控件,以后将自动加载运行 控件功能: 1.屏蔽IE打印时出现的打印设置框。 2.自动设置各打印控制参数。 3.实现自动打印使用方法 控件的ID为clsid:AE1A309B-6FFA-4FCF-B07F-CB97FFD56B1B 使用Object标签包裹即可。 如 <OBJECT ID="TestAX" classid="clsid:AE1A309B-6FFA-4FCF-B07F-CB97FFD56B1B" codebase="IEprint.ocx#version=" width=0 height=0 align=center hspace=0 vspace=0 ></OBJECT> 使用Javascript或VBScript程序进行调用 使用使,先得到打印控件Object对象实例如 a=document.getElementById("TestAX"); 参数内容 接着对a进行操作即可 a.Mar_left=0.0075; //左边界 a.Mar_Top=0.0075; //上边界 a.Mar_Right=0.0075; //右边界 a.Mar_Bottom=0.0075; //下边界 a.Orientation="纵向";//打印方向 a.Paper_Size="Folio"; //纸张大小 a.Header_Html="Headeraaaaaaaa"; //头部标注 a.Footer_Html="Footerssssssss"; //尾部标注 a.ApplySetup(); //应用上面的设置 函数方法 a.PrintWithOutSetup(); //无需设置即打印内容 a.PrintWithOutSetupPrintWithOutByID("cnnb"); //打印除ID为cnnb的其他内容。即过滤id为cnnb的所有内容 a.PrintWithOutSetupPrintByID("163");//打印id为163的内容。即过滤id为163以外的所有内容 a.PrintWithSetup(); //有设置选项的打印 a.PrintPreView();//打印预览 对本控件有建议的可以联系我,一般隐身存在。。。 chatop QQ948905
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值