Lodop实现打印功能
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lodop实现打印功能相关的知识,希望对你有一定的参考价值。
LodopFuncs.js:
var CreatedOKLodop7766=null; function getLodop(oOBJECT,oEMBED){ /************************** 本函数根据浏览器类型决定采用哪个页面元素作为Lodop对象: IE系列、IE内核系列的浏览器采用oOBJECT, 其它浏览器(Firefox系列、Chrome系列、Opera系列、Safari系列等)采用oEMBED, 如果页面没有相关对象元素,则新建一个或使用上次那个,避免重复生成。 64位浏览器指向64位的安装程序install_lodop64.exe。 **************************/ var strHtmInstall="<br><font color=‘#FF00FF‘>打印控件未安装!点击这里<a href=‘/install_lodop32.exe‘ target=‘_self‘>执行安装</a>,安装后请刷新页面或重新进入。</font>"; var strHtmUpdate="<br><font color=‘#FF00FF‘>打印控件需要升级!点击这里<a href=‘/install_lodop32.exe‘ target=‘_self‘>执行升级</a>,升级后请重新进入。</font>"; var strHtm64_Install="<br><font color=‘#FF00FF‘>打印控件未安装!点击这里<a href=‘/install_lodop64.exe‘ target=‘_self‘>执行安装</a>,安装后请刷新页面或重新进入。</font>"; var strHtm64_Update="<br><font color=‘#FF00FF‘>打印控件需要升级!点击这里<a href=‘/install_lodop64.exe‘ target=‘_self‘>执行升级</a>,升级后请重新进入。</font>"; var strHtmFireFox="<br><br><font color=‘#FF00FF‘>(注意:如曾安装过Lodop旧版附件npActiveXPLugin,请在【工具】->【附加组件】->【扩展】中先卸它)</font>"; var strHtmChrome="<br><br><font color=‘#FF00FF‘>(如果此前正常,仅因浏览器升级或重安装而出问题,需重新执行以上安装)</font>"; var LODOP; try{ //=====判断浏览器类型:=============== var isIE = (navigator.userAgent.indexOf(‘MSIE‘)>=0) || (navigator.userAgent.indexOf(‘Trident‘)>=0); var is64IE = isIE && (navigator.userAgent.indexOf(‘x64‘)>=0); //=====如果页面有Lodop就直接使用,没有则新建:========== if (oOBJECT!=undefined || oEMBED!=undefined) { if (isIE) LODOP=oOBJECT; else LODOP=oEMBED; } else { if (CreatedOKLodop7766==null){ LODOP=document.createElement("object"); LODOP.setAttribute("width",0); LODOP.setAttribute("height",0); LODOP.setAttribute("style","position:absolute;left:0px;top:-100px;width:0px;height:0px;"); if (isIE) LODOP.setAttribute("classid","clsid:2105C259-1E0C-4534-8141-A753534CB4CA"); else LODOP.setAttribute("type","application/x-print-lodop"); document.documentElement.appendChild(LODOP); CreatedOKLodop7766=LODOP; } else LODOP=CreatedOKLodop7766; }; //=====判断Lodop插件是否安装过,没有安装或版本过低就提示下载安装:========== if ((LODOP==null)||(typeof(LODOP.VERSION)=="undefined")) { if (navigator.userAgent.indexOf(‘Chrome‘)>=0) document.documentElement.innerhtml=strHtmChrome+document.documentElement.innerHTML; if (navigator.userAgent.indexOf(‘Firefox‘)>=0) document.documentElement.innerHTML=strHtmFireFox+document.documentElement.innerHTML; if (is64IE) document.write(strHtm64_Install); else if (isIE) document.write(strHtmInstall); else document.documentElement.innerHTML=strHtmInstall+document.documentElement.innerHTML; return LODOP; } else if (LODOP.VERSION<"6.1.9.8") { if (is64IE) document.write(strHtm64_Update); else if (isIE) document.write(strHtmUpdate); else document.documentElement.innerHTML=strHtmUpdate+document.documentElement.innerHTML; return LODOP; }; //=====如下空白位置适合调用统一功能(如注册码、语言选择等):==== LODOP.SET_LICENSES("","","",""); //============================================================ return LODOP; } catch(err) { if (is64IE) document.documentElement.innerHTML="Error:"+strHtm64_Install+document.documentElement.innerHTML;else document.documentElement.innerHTML="Error:"+strHtmInstall+document.documentElement.innerHTML; return LODOP; }; }
second.js:
function printContent(ttl,type,defaW,w){ var htmlStr="<!DOCTYPE html>"+document.getElementsByTagName("html")[0].innerHTML+"</html>"; LODOP=getLodop(); LODOP.PRINT_INIT(ttl); //top left width height,根据height分页 //LODOP.ADD_PRINT_URL(0,0,600,"98%",url);//[url需要登录,ADD_PRINT_URL没法登录] if(w){ LODOP.ADD_PRINT_HTM(0,0,w,"100%",htmlStr); LODOP.SET_PRINT_STYLEA(0,"Horient",2); }else{ if(defaW==‘FIXED‘){ LODOP.ADD_PRINT_HTM(0,0,680,"100%",htmlStr); LODOP.SET_PRINT_STYLEA(0,"Horient",2); }else{//ALL LODOP.ADD_PRINT_HTM(0,0,"100%","100%",htmlStr); } } if(type==‘PRINT‘){ LODOP.SET_SHOW_MODE("NP_NO_RESULT",true);//lodop6.198以后才有效 LODOP.PRINT(); }else if(type==‘SELECT‘){ if(LODOP.SELECT_PRINTER()>=0){ LODOP.SET_SHOW_MODE("NP_NO_RESULT",true); LODOP.PRINT(); } }else if(type==‘PREVIEW‘){ LODOP.SET_SHOW_MODE("NP_NO_RESULT",true); LODOP.PREVIEW(); } } function iePrint(ieObjId,type){ var HKEY_Root = "HKEY_CURRENT_USER" var HKEY_Path = "\\software\\Microsoft\\Internet Explorer\\PageSetup\\"; var head,foot,top,bottom,left,right; try{ var Wsh=new ActiveXObject("WScript.Shell"); //取得默认值 /** head = Wsh.RegRead(HKEY_Root+HKEY_Path+"header");//页眉 foot = Wsh.RegRead(HKEY_Root+HKEY_Path+"footer");//页脚 bottom = Wsh.RegRead(HKEY_Root+HKEY_Path+"margin_bottom");//下页边距 left = Wsh.RegRead(HKEY_Root+HKEY_Path+"margin_left");//左页边距 right = Wsh.RegRead(HKEY_Root+HKEY_Path+"margin_right");//右页边距 top = Wsh.RegRead(HKEY_Root+HKEY_Path+"margin_top");//上页边距 **/ //设置 Wsh.RegWrite(HKEY_Root+HKEY_Path+"header",""); Wsh.RegWrite(HKEY_Root+HKEY_Path+"footer",""); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_bottom","0.1"); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_left","0.1"); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_right","0.1"); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_top","0.1"); }catch(oe){ //alert("设置页眉页脚及打印边距失败,请注册WScript.Shell并将浏览器安全级别设置为低,或者在浏览器的打印->页面设置中手工设置。"); } var ieObj=document.getElementById(ieObjId); if(type==‘PRINT‘){ ieObj.execwb(6,1); }else if(type==‘SELECT‘){ ieObj.execwb(6,6); }else if(type==‘PREVIEW‘){ ieObj.execwb(7,1); } /**打印有延迟,还原设置会造成前面的设置实效,先不还原 try{ var Wsh=new ActiveXObject("WScript.Shell"); //还原 Wsh.RegWrite(HKEY_Root+HKEY_Path+"header",head); Wsh.RegWrite(HKEY_Root+HKEY_Path+"footer",foot); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_bottom",bottom); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_left",left); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_right",right); Wsh.RegWrite(HKEY_Root+HKEY_Path+"margin_top",top); }catch(oe){ //alert(oe); } **/ }
实现页面(主要代码):
<script language="javascript">
printContent("title","${enterpriseInfo.doPrint}","${enterpriseInfo.printWidth}");
</script>
注意要先到官网上下载:install_lodop32.exe和install_lodop64.exe。
这里的做了second.js的修改。可以不用这个js。
参考官网:http://www.mtsoftware.cn/demo.html
以上是关于Lodop实现打印功能的主要内容,如果未能解决你的问题,请参考以下文章