天天看點

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')" target="_blank" rel="external nofollow" >列印</a></td>

//列印預覽

<td class="bcCls" width="60"><a href="javascript:printView('hiddenTag1,hiddenTag2','div_print')" target="_blank" rel="external nofollow" >列印預覽</a></td>

3:對應的JS代碼

需要自行引入jquery

 //初始化列印元件屬性

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