本文转自:https://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,

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

在 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>

[转]web打印实现方案 Lodop6.034 使用方法总结的更多相关文章

  1. WEB打印的几种方案

    -------------------------------------------一  基于Web的打印方案比较分析-------------------------------- 基于web的套 ...

  2. 打印方案之web打印

    前言: 前一段时间在工作中,遇到需要通过打印实现对报表或者工作流清单等事情时,都需要运用到打印功能,那么 ,这个时候你会怎么处理? 在这里,我们可以通过最简单的方式实现web打印功能,简单易懂,方便快 ...

  3. 2013第39周一Web打印

    2013第39周一Web打印 项目中遇到了Java Web打印问题,简单调用IE浏览器的打印不能完全满足要求,于是就搜集了Web打印相关的主题,简单汇总一下.web打印难点在分页.页面纸张设置,页眉页 ...

  4. web打印难题—背景不打印的简单不完美解决方案

    web打印在一些开发中是比较常见的需求,最简单的办法是使用css print进行控制:对于一些建议可以参考http://slodive.com/web-development/css-print-pa ...

  5. B/S架构 Web打印程序(Argox)

    B/S架构 Web打印程序 对于B/S架构下的管理软件系统,在客户端浏览器页面中如何透过本地打印机或网络打印机打印条码标签,Argox提供最常用的2种类型打印机集成方案. ●  PPLA 打印机IE游 ...

  6. ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-Web打印

    系列目录 前言 1.本次主要弥补工作流,用户表单数据的打印 2.使用JQprint做为web打印插件 3.兼容:FireFox,Chrome,IE. 4.没有依赖也没有配置,使用简单 代码下载:htt ...

  7. 网页WEB打印控件制作-开放源码

    在WEB系统中,打印的确是比较烦人的问题,如果我们能制作一个属于自己的自定义的打印插件,那么我们在后续自定义打印的时候能随心所欲的控制打印,这样的效果对于程序员来说是非常开心的一件事件,本文将自己开发 ...

  8. Web打印--Lodop API

    Lodop是一款专业的WEB打印控件,其设计目标是简单易用.功能足够强大,开创WEB打印开发的新局面. Lodop设计者对WEB下的打印开发任务进行了分类汇总,高度抽象,设计出仅用几个功能函数,就可实 ...

  9. web cache server方案比较:varnish、squid、nginx

    linux运维中,web cache server方案的部署是一个很重要的环节,选择也有很多种比如:varnish.squid.nginx.下面就对当下常用的这几个web cache server做一 ...

随机推荐

  1. 量子力学与广义相对论的统一——用广义相对论解释海森堡测不准原理 Unification of Quantum Mechanics and General Relativity: Explaining Heisenberg Uncertainty Principle with General Relativity

    从海森堡测不准原理的实验开始: 从实验中可以看到,当有光源测定路线,且双孔打开的时候,接收板原波谷处变成了波峰. 对此,广义相对论的解释是:此时电子经过双孔后的轨迹发生了变化.双孔周围的空间弯曲度被光 ...

  2. 一些LinuxC的小知识点(一)

    以下代码在Federo9上试验成功. 一.格式化输入16进制字符串 printf(); 输入结果: 二.测试各类型的占用的字节数 int main(int argc, char *argv[]) { ...

  3. Windows核心编程:第11章 Windows线程池

    Github https://github.com/gongluck/Windows-Core-Program.git //第11章 Windows线程池.cpp: 定义应用程序的入口点. // #i ...

  4. ASP.NET MVC基础知识

    1.MVC项目文件夹说明 App_Data:用来保存数据文件,比如XML文件等: App_Start:包含mvc系统启动的相关类: Controller:存放整个项目“控制器”的代码文件: Model ...

  5. AJPFX:外汇的价格图表类型和技术指标类型

    AJPFX:价格图表的类型 柱状图 它是反映价格行为的一种最基本的图表.每一根柱代表一段时间——最短为1分钟,最长为数年.随着时间的推移,柱状图反映出不同的价格形态. 蜡烛图 不同于简单的柱状图,蜡烛 ...

  6. 「雅礼集训 2017 Day2」解题报告

    「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...

  7. 关于scanf、getchar、getch、getche缓冲区分析——C语言

    缓冲区 根据数据刷新的时机可以将缓冲区的类型分为:全缓冲.行缓冲.无缓冲 (注意:Windows下的输出设备没有缓冲区,意思是printf是无缓冲的,但是在Linux下printf就是行缓冲的,至于为 ...

  8. Linux巩固记录(2) java项目的编译和执行

    由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了 以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上 ...

  9. CSS之浏览器默认样式问题

    今天自己写css样式时,其中用到了<ul>标签,设置了一系列效果后运行,发现位置与设置有出入.chrome上打开检查项,发现<ul>标签的styles底部多了以下一段: ul, ...

  10. 开发创建XMPP“发布订阅”扩展(xmpp pubsub extend)

    发布订阅(PubSub)是一个功能强大的XMPP协议扩展.用户订阅一个项目(在xmpp中叫做node),得到通知时,也即当事项节点更新时.xmpp服务器通知用户(通过message格式). 节点类型: ...