web打印实现方案 Lodop6.034 使用方法总结

http://blog.csdn.net/zhichao2001/article/details/7978934

 

转自:http://www.cnblogs.com/tiger8000/archive/2011/09/19/2181365.html 特此鸣谢

官文下载:

http://mtsoftware.v053.gokao.net/download.html

本地 Lodop6.034 版本下载:/Files/tiger8000/Lodop6.034.rar

假设你的 lodop 打印控件放在你项目的根目录下的 Lodop 目录内

printTable.aspx 文件存在于你项目中的 PrintCenter 目录内。在此文件的 html 页面中加入:

< script type = " text/javascript " language = " javascript " src = " ../Lodop/LodopFuncs.js " ></ script >
< object id = " LODOP " classid = " clsid:2105C259-1E0C-4534-8141-A753534CB4CA " width = " 0 " height = " 0 " >
   
< embed id = " LODOP_EM " type = " application/x-print-lodop " width = " 0 " height = " 0 " pluginspage = " ../Lodop/install_lodop.exe " ></ embed >
</ object >

其中:

< embed id = " LODOP_EM " type = " application/x-print-lodop " width = " 0 " height = " 0 " pluginspage = " ../Lodop/install_lodop.exe " ></ embed >

是专为 FireFox 浏览器设计的代码,如果你这个打印控件只在 IE 上应用,那么上面这名话完全可以不用的。

只这样加就行了:

    < script type = " text/javascript " language = " javascript " src = " ../Lodop/LodopFuncs.js " ></ script >
< object id = " LODOP " classid = " clsid:2105C259-1E0C-4534-8141-A753534CB4CA " width = " 0 " height = " 0 " >
</ object >

这样就把 lodop 打印控件在本页调用过来了。

实现打印一个俱有 100 行的数据报表,要分页打印,要求,用A4纸纵向打印,在下面的页角,显示当前页码及总页数。

正常情况下,你设定了打印纸张规格后,如 A4 或是自定义纸张大小,然后,你定义了 打印输出的大小

LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.getElementById("printdiv").innerHTML);

距上边 110 象素,左边 33 像素,宽 750象素,高 900 象素这外区域内打印内容。打印控件会自动根据纸张大小和你打印区长,高,计算出打印页数,会自动分页,你需要做的就是不断调整打印区 边距,宽,高 :110, 33, 750, 900

然后,自己打印出  当前页/总页数 .

在 aspx 页中加入:

复制代码
< script language = " javascript " type = " text/javascript " >
    var LODOP;
// 声明为全局变量
    function prn1_preview() {
        PrintMytable();
        LODOP.PREVIEW();
    };
    function prn1_print() {
        PrintMytable();
        LODOP.PRINT();
    };

    function PrintMytable() {
        LODOP
= getLodop(document.getElementById( ' LODOP ' ), document.getElementById( ' LODOP_EM ' ));
        LODOP.PRINT_INIT(
" 银燕公司宽带收费明细 " );
        LODOP.SET_PRINT_PAGESIZE(
1 , 0 , 0 , " A4 " );
        LODOP.ADD_PRINT_TEXT(
30 , 280 , 500 , 50 , " 银燕公司宽带财务报表明细 " )
        LODOP.SET_PRINT_STYLEA(
1 , " ItemType " , 1 );
        LODOP.SET_PRINT_STYLEA(
1 , " FontSize " , 14 );
        LODOP.SET_PRINT_STYLEA(
1 , " Bold " , 1 );
        LODOP.ADD_PRINT_TEXT(
1050 , 370 , 200 , 22 , " 第#页/共&页 " );
        LODOP.SET_PRINT_STYLEA(
2 , " ItemType " , 2 );
        LODOP.SET_PRINT_STYLEA(
2 , " HOrient " , 1 );
        LODOP.ADD_PRINT_TEXT(
90 , 50 , 100 , 50 , " 共:<%=numb%> 条记录 " )
        LODOP.SET_PRINT_STYLEA(
3 , " ItemType " , 1 );
        LODOP.ADD_PRINT_TEXT(
90 , 300 , 350 , 50 , " 时间范围:<%=begindt%> 至 <%=enddt%> " )
        LODOP.SET_PRINT_STYLEA(
4 , " ItemType " , 1 );
       
// LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.documentElement.innerHTML);
        LODOP.ADD_PRINT_TABLE( 110 , 33 , 750 , 900 , document.getElementById( " printdiv " ).innerHTML);
    };   
  
</ script >
复制代码

然后,下面是要打印的工资报表 table

复制代码
  < div id = " printdiv " >
      
< table width = " 90% " align = " center " border = " 1 " cellpadding = " 0 " cellspacing = " 0 " bordercolor = " #000000 " bordercolorlight = " #000000 " bordercolordark = " #000000 " id = " tb01 " style = " border-collapse:collapse " >
                  
< asp:Repeater ID = " Repeater2 " runat = " server " >
                    
< HeaderTemplate >
                    
< thead >
                        
< tr bgcolor = " #F8F8FF " >
                           
< th align = " center " height = " 30 " > 序号 </ th >
                           
< th align = " center " > 姓名 </ th >
                           
< th align = " center " > 账号 </ th >                          
                           
< th align = " center " > 网费 </ th >
                           
< th align = " center " > 网费返款 </ th >
                           
< th align = " center " > 押金 </ th >
                           
< th align = " center " > 押金返款 </ th >
                           
< th align = " center " > 安装费 </ th >
                           
< th align = " center " > 安装费返款 </ th >
                           
< th align = " center " > 卖Modem款 </ th >
                           
< th align = " center " > Modem返款 </ th >
                           
< th align = " center " > 转账 </ th >
                           
< th align = " center " > 缴费日期 </ th >
                       
</ tr >
                    
</ thead >
                    
</ HeaderTemplate >
                    
< ItemTemplate >
                     
< tbody >
                        
< tr height = " 20 "   style = " cursor:hand " bgColor = " #ffffff " onmouseover = " javascript:this.style.backgroundColor='#FFCC33'; "     onmouseout = " javascript:this.style.backgroundColor='#ffffff'; " >
                           
< td align = " center " ><% #Container.ItemIndex + 1 %></ td >
                           
< td align = " center " ><% #Eval( " 姓名 " ) %></ td >
                           
< td align = " center " ><% #Eval( " 账号 " ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 网费 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 网费返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 押金 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 押金返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 安装费 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 安装费返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 卖Modem款 " )), 2 ) %></ td >  
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 卖Modem款返款 " )), 2 ) %></ td >     
                           
< td align = " center " ><% #Eval( " 转账 " ) %></ td >
                           
< td align = " center " ><% #Eval( " 提交日期 " , " {0:yyyy/MM/dd} " ) %></ td >
                       
</ tr >
                       
</ tbody >
                    
</ ItemTemplate >
                    
< AlternatingItemTemplate >
                     
< tbody >
                    
< tr height = " 20 " style = " cursor:hand " bgColor = " #f1f1f1 " onmouseover = " javascript:this.style.backgroundColor='#FFCC33'; " onmouseout = " javascript:this.style.backgroundColor='#f1f1f1'; " >
                          
< td align = " center " ><% #Container.ItemIndex + 1 %></ td >
                           
< td align = " center " ><% #Eval( " 姓名 " ) %></ td >
                           
< td align = " center " ><% #Eval( " 账号 " ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 网费 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 网费返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 押金 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 押金返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 安装费 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 安装费返款 " )), 2 ) %></ td >
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 卖Modem款 " )), 2 ) %></ td >  
                           
< td align = " center " ><% #Math.Round(Convert.ToDecimal(Eval( " 卖Modem款返款 " )), 2 ) %></ td >     
                           
< td align = " center " ><% #Eval( " 转账 " ) %></ td >
                           
< td align = " center " ><% #Eval( " 提交日期 " , " {0:yyyy/MM/dd} " ) %></ td >
                       
</ tr >
                      
</ tbody >
                    
</ AlternatingItemTemplate >
                    
< FooterTemplate >
                     
< tr bgcolor = " #FFF8DC " >
                           
< td align = " center " height = " 30 " > 合计 </ td >
                           
< td ></ td >
                           
< td ></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= wangfei %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= wangfeifankuan %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= yajin %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= yajinfankuan %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= anzhuangfei %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= anzhuangfeifan %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= maimaokuan %></ td >
                           
< td align = " center " class = " bigmoneyfont " ><%= maimaokuanfan %></ td >
                           
< td ></ td >
                           
< td ></ td >
                       
</ tr >    
                    
</ FooterTemplate >
                  
</ asp:Repeater >
            
</ table >
        
</ div >    
复制代码

1、LODOP.SET_PRINT_PAGESIZE(1, 0, 0, "A4");

1 纵向打印

0 打印纸张的宽度 为0 ,可自定义宽

0 打印纸张的高度 为 0 ,可自定义高

A4 指定用 A4 纸打印

当宽度和高度都设为 0 的时候,才能指定用特定的纸型打印,如:A4 ,B5 等。

2、

LODOP.ADD_PRINT_TEXT(30, 280, 500, 50, "银燕公司宽带财务报表明细")
        LODOP.SET_PRINT_STYLEA(1, "ItemType", 1);
        LODOP.SET_PRINT_STYLEA(1, "FontSize", 14);
        LODOP.SET_PRINT_STYLEA(1, "Bold", 1);

第一句:距上 30,距左280,打印区宽 500 ,打印区高 50 这样的一个区域内打印出文字”银燕公司宽带财务报表明细“

第二句:指定刚才打印的这句话 ItemType属性,1为页眉页脚,2为页号码,3为页数,0 为普通项。

第三句:指定刚才打印的这句话 FontSize 属性为 14pt

第四句:指定刚才打印的这句话,加粗显示。Bold 为1 代表加粗,0代表正常显示。

LODOP.SET_PRINT_STYLEA(1, "FontSize", 14);
中最前面的那个参数:1 ,是指的,对页面中加入的 LODOP.ADD_PRINT 元素的索引,指定是哪 一元素。

因为  LODOP.ADD_PRINT_TEXT(30, 280, 500, 50, "银燕公司宽带财务报表明细")
是 最向加的元素,所以它索引为 第 1 项。

3

LODOP.ADD_PRINT_TEXT(1050, 370, 200, 22, "第#页/共&页");
        LODOP.SET_PRINT_STYLEA(2, "ItemType", 2);
        LODOP.SET_PRINT_STYLEA(2, "HOrient", 1);

在距上边界 1050 象素,左 370,宽为200,高为22  这样一个区域内打印页码及总页数。

然后,指定这个索 引为2 的这个元素的   ItemType属性,1为页眉页脚,2为页号码,3为页数,0 为普通项。

只有当指定此元素 ItemType属性,2为页号码 的时候,

LODOP.ADD_PRINT_TEXT(1050, 370, 200, 22, "第#页/共&页"); 就会在每个页的固定位置都显示,

才会显示当前页码数及总页数

4

LODOP.ADD_PRINT_TEXT(90, 50, 100, 50, "共:<%=numb%> 条记录")

在指定区域内打印总记录数
        LODOP.SET_PRINT_STYLEA(3, "ItemType", 1);

指定刚才加入的这个索引为第3个元素的 ItemType属性,1为页眉页脚
        LODOP.ADD_PRINT_TEXT(90, 300, 350, 50, "时间范围:<%=begindt%> 至 <%=enddt%>")

在指定区域内打印时间范围
        LODOP.SET_PRINT_STYLEA(4, "ItemType", 1);

指定刚才加入的这个索引为第4个元素的 ItemType属性,1为页眉页脚
        //LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.documentElement.innerHTML);

用这个写法可以打印整个页面上的 table表
        LODOP.ADD_PRINT_TABLE(110, 33, 750, 900, document.getElementById("printdiv").innerHTML);

用这种写法也可以打印整个页面中指定为 div 的ID 为 "printdiv" 内的 table

二、 打印某一整个 aspx 页。

< script type = " text/javascript " language = " javascript " src = " ../Lodop/LodopFuncs.js " ></ script >
< object id = " LODOP " classid = " clsid:2105C259-1E0C-4534-8141-A753534CB4CA " width = " 0 " height = " 0 " >
   
< embed id = " LODOP_EM " type = " application/x-print-lodop " width = " 0 " height = " 0 " pluginspage = " ../Lodop/install_lodop.exe " ></ embed >
</ object >
< script language = " javascript " type = " text/javascript " >
    var LODOP;
// 声明为全局变量     
    function PrintOneURL(strID) {
        LODOP
= getLodop(document.getElementById( ' LODOP ' ), document.getElementById( ' LODOP_EM ' ));
        LODOP.PRINT_INIT(
" 打印控件功能演示_Lodop功能_按网址打印 " );
        LODOP.ADD_PRINT_URL(
30 , 20 , 746 , " 100% " , document.getElementById(strID).value);
        LODOP.SET_PRINT_STYLEA(
1 , " HOrient " , 3 );
        LODOP.SET_PRINT_STYLEA(
1 , " VOrient " , 3 );
        LODOP.PREVIEW();
    };
      
</ script >

< input type = " hidden " id = " T1 " size = " 54 " value = " ../PrintSinglePage.aspx " />
    
< a href = " javascript:PrintOneURL('T1'); " > 预览打印 </ a >

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值