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

时间: 2024-10-23 20:48:51

Lodop实现打印功能的相关文章

【JS】通过JS实现超市小票打印功能——ActiveX控件

应客户的需求= = ,要在网页端实现打印小票的功能 先来一张打印出的小票效果图(合计明显不对,因为有修改订单功能,请各位忽略) 用什么方法实现呢:我想应该是有三种吧 1.用第三方的浏览器控件(这个好似比较方便,我的老师也是这样建议我)向大家推荐一个 Lodop打印控件 2.用CSS写好模板,然后直接用页面打印的方法(应该是这样吧) (以上两种还没有尝试,这两天陆续尝试) 3.用微软自己的ActiveX控件(ActiveX控件可以实现调用本地的文件等操作(之前试过调用cmd,实现shutdown

JS达到Web指定保存的和打印功能的内容

背景 首先,说说文章的背景.近期手中的一个项目,因为需求中要求提供Web界面的打印功能.当然假设没有打印机,还能够提供保存到本地.项目组长把这个"小任务"分给了我.本着努力为组长分忧解难的思想,领了任务之后,就立即開始了工作. 问题 刚開始的时候.组长给了一个工具(jatoolsprinter)让我研究.我用了一个多小时的时间,做出了一个简单的Demo,然后就是各种的測试,因为 web 打印须要浏览器安装 ActiveX 组件.在随后的測试中,我用了几款浏览器.甚至把安全级别都调到了最

测试打印功能

// 先创建窗体,后拉入Button控件两个,一个预览功能,一个打印功能,再拉入控件PrintDocument控件.PrintPreviewDilogs控件.pageSetupDilogs控件 // 后台代码 1 List<string> students = new List<string>() {"张三","李四","王五" }; 2 int count = 0;//要打印的学员姓名的下标值 3 private voi

借助Jquery Jqprint实现网页打印功能

今天利用闲余时间研究了一下Jquery Jqprint插件,使用该Jquery脚本可以轻而易举的实现打印网页指定区域内容的功能: 例子一: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

添加条码生成和打印功能到SQL Server Reporting Services report 中

Barcode Professional for Reporting Services 是一款灵活和强大的.NET组件(.NET DLL 类库),它让您轻松地添加条码生成和打印功能到您的SQL Server Reporting Services report 中.支持几乎所有当前常用的条码:Code 39, Code 128, GS1-128, GS1 DataBar (RSS-14), EAN 13 & UPC, Postal (USPS, British Royal Mail, Austra

vc 实现打印功能

Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能,一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提供的框架内实现这个问题很复杂,不知道如何下手.本例针对这个问题,介绍一种简单的方法实现文字串的打印功能,读者朋友可以在此基础上稍微改动一下,就可以实现文件.图像的打印功能. 一.实现方法 在Windows操作系统下,显示器.打印机和绘图仪都被视为输出设备,正常情况下,系统默认的输出设备是显示器.要使用打印机,首先需

浅谈QT打印功能实现

QT作为一款轻量级的集成开发环境,其设计的目标是使开发人员利用QT这个应用程序框架更加快速及轻易的开发应用程序.要达到此目的,要求QT必须能够跨平台,QT能够在32位及64位的Linux,MAC OS X以及Windows上运行. 现在我们想在项目中加入一项打印功能,即使在不同的操作系统环境下,仍然能有相同的用户体验,在实现中发现QT对打印的支持不是那么友好.我们希望在跨平台的情况下,能打印各种文档,比如用户的简历,发现如果不调用对应操作系统的内核外壳打印函数,这项工作变得异常艰难.我们希望用Q

Atitit.收银机小票打印功能的设计&#160;&#160;java&#160;php&#160;c#.net版本

Atitit.收银机小票打印功能的设计  java php c#.net版本 1. 1. 打印方式有4种:1 1.1. 1.1. 一是不经过任何修改,直接调用javascript中的window.print()打印.1 1.2. 1.2. 二根据客户要求的报表格式,编写相应格式的html,装载数据打印,同样调用window.print()打印,只是对html的格式要求比较高.1 1.3. 1.3. 三是通过客户提供的word格式,通过xml配置文件与数据库的数据进行关联,自动装载数据到word中

IE下实现打印功能

先贴代码: <html> <head> <style type="text/css"> *{margin:0px;padding:0px;} .noprint{margin:20px 0px;} .noprint input{padding:5px 10px;margin:10px 5px;} #p{display:none;} </style> <!--该样式表设置的是打印时的样式,要放到其他style的下面,否则会被覆盖--&g