web打印实现方案 Lodop 以及条形码

55 篇文章 0 订阅

转 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(11033750900, document.getElementById("printdiv").innerHTML);

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

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

在 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(100"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 >
复制代码


转http://www.hbsszx.com/lodop/PrintSample11.html



演示如何打印条形码:

Lodop绘制条码图功能让条码打印变得很简单,客户端不用安装专门的条码字库,该函数格式如下:
ADD_PRINT_BARCODE(Top,Left,Width,Height,BarCodeType,BarCodeValue);

关键参数含义:

Width 条码的总宽度,计量单位px(1px=1/96英寸)
Height 条码的总高度(一维条码时包括文字高度)
BarCodeType
 条码的类型(规制)名称
BarCodeValue
 条码值

目前控件支持的条码类型有如下24种,其中QRCode是二维码,其它是一维码:

128A
128B
128C
EAN8
EAN13
EAN128A
EAN128B
EAN128C
Code39
39Extended
2_5interleaved
2_5industrial
2_5matrix
UPC_A
UPC_E0
UPC_E1
UPCsupp2
UPCsupp5
Code93
93Extended
MSI
PostNet
Codabar
QRCode(二维)

一、演示各种条码

看看演示: 

注意:打印设计中改变对象区域大小时,条码会自动随之适应调整,也可以360度范围随便定义旋转方向。

双击对象,在弹出的属性窗口中修改其它属性,然后生成程序代码看看其实现方法。

二、适应低精度输出设备

默认情况下条码图是按高精度输出设备(例如专用条码打印机)绘制的,也就是条码总宽度可设置的很小,

但这样窄的条码可能不适合精度不高的输出和扫描设备,要让针式打印机这类低精度设备输出合格条码,

必须把宽度设置的足够大,或者直接调用如下语句:

LODOP.SET_PRINT_STYLEA(0,"NotOnlyHighPrecision",true);

看看这种情况下的

三、内嵌显示条码(及其它图形对象)

1:先点击 显示条码 在如下区域直接绘制一个条码: 
2:再进入 打印设计 加几个图类对象(图表、条码、图形图线、图片),用其程序代码绘制如下:

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
二维码,条形码,网页各类打印样式控件Lodop 1.如何在页面内嵌入控件见样例一 2.如何选材打印当前页面内容见样例二 3.如何用代码生成打印页见样例三 4.如何打印设计和定位套打见样例四 5.如何控制纸张大小和连续打印见样例五 6.如何输出多页长文档及双面打印见样例六 7.如何定向输出见样例七 8.如何打印图片见样例八 9.如何用程序加载打印维护背景图见样例九 10如何控制打印样式(STYLE)见样例十 11如何直接打印条形码见样例十一 12如何读写本地文件见样例十二 13如何打印旋转内容见样例十三 14如何按URL打印见样例十四 15如何打印表格的页头页尾见样例十五 16如何设置预览窗口大小见样例十六 17如何发打印机指令或直接读写端口见样例十七 18如何打印幅面高度不固定的票据见样例十八 19如何内嵌显示及预览时包含背景图见样例十九 20如何强制分页并预览多页卡片见样例二十 21如何控制打印维护的功能权限见样例二十一 22如何构建自己的纯WEB打印预览见样例二十二 23如何居中打印超文本见样例二十三 24如何选择界面皮肤见样例二十四 25如何指定输出到哪页或仅预览见样例二十五 26如何提高多页打印的性能见样例二十六 27如何导出数据到Excel文件见样例二十七 28如何快速读取客户端系统信息见样例二十八 29如何使用其它长度单位见样例二十九 30如何分页输出页面内容见样例三十 31如何打印表格的分页小计或合计见样例三十一 32如何实现清晰的图表打印见样例三十二 33如何实现甘特图等的图表打印见样例三十三 34如何使用百分比%和满页打印见样例三十四 35如何获得打印结果和程序代码见样例三十五 36如何在设计过程中用js编辑内容见样例三十六 37如何打印公章效果图见样例三十七 38如何用BASE64编码输出图片见样例三十八 39如何打印田字格、上划线等文本见样例三十九 40如何进行数据格式转换见样例四十 41如何把内容关联后按顺序打印见样例四十一 42如何把整页内容缩放打印见样例四十二 43如何分页打印综合表格见样例四十三 44如何缩放打印单个超文本内容见样例四十四 45如何获得打印状态及最终结果见样例四十五 46如何设置右边距和下边距见样例四十六
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值