现在的位置: 首页 > 综合 > 正文

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

2013年09月13日 ⁄ 综合 ⁄ 共 9350字 ⁄ 字号 评论关闭

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.ge

抱歉!评论已关闭.