FineUI 官方论坛

标题: Lodop控件打印条形码的源码分享 [打印本页]

作者: 夜冰    时间: 2014-1-10 11:55
标题: Lodop控件打印条形码的源码分享
本帖最后由 夜冰 于 2014-1-10 11:59 编辑

前些日子在固定资产管理软件中用到了打印条形码的功能 ,使用的是Lodop控件,这个控件是免费的, 有人说直接打印会收费,但我没有遇到,今天有空了把打印的那代码分享一下,虽然看上去代码量很大,比较乱,但是只需要画出第一框框后面就简单了,按大小增减就可以了,本例中用的是艾利L7176型纸,在京东上可以买到,只接用A4激光打印机就能打印,图和代码如下:
[attach]4140[/attach]

图1:指定的需要打印的内容,查到内容后点击"编码处理",后台就开始画要打印的内容了

[attach]4141[/attach]

图2:这是打印预览的界面,然后点击打印就只接打印出来了


下面是网页的源码
  1. <%@ Page Language="VB" AutoEventWireup="false" CodeFile="F_Txm.aspx.vb" Inherits="ZCLR_F_Txm" %>

  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5.     <title></title>
  6.     <link type="text/css" href="../CSS/Fmain.css" rel="stylesheet"/>
  7.     <script language="javascript" src="../CSS/LodopFuncs.js"></script>
  8.     <object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0>
  9.             <embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0 pluginspage="~/CSS/install_lodop.exe"></embed>
  10.     </object>
  11. <font color="#ff0000">    <script language="javascript" type="text/javascript">
  12.         var LODOP; //声明为全局变量

  13.         function myPreview() {
  14.             CreatePrintPage();
  15.             LODOP.PREVIEW();
  16.         };
  17. </script> </font>
  18. </head>
  19. <body>
  20. <form id="form1" runat="server">
  21.     <x:PageManager ID="PageManager1" runat="server" AjaxAspnetControls="L_code" />
  22.     <x:Panel ID="Panel1" runat="server" BodyPadding="5px" ShowBorder="false" ShowHeader="false"
  23.         Title="Panel" Layout="Table" TableConfigColumns="6">
  24.         <Items>
  25.            <x:Label Text="输入条码" runat="server" Width="60"></x:Label>
  26.            <x:TextBox ID="txt_bm" runat="server" Label="Label" Text="" Width="300" EmptyText="提示:多个条码之间请用逗号进行分隔"></x:TextBox>
  27.            <x:Button ID="Btn_create" runat="server" Text="编码查询" CssClass="Left20"></x:Button>
  28.            <x:Button ID="Btn_chuli" runat="server" Text="编码处理" CssClass="Left20" <font color="#ff0000">EnableAjax="false"</font>></x:Button>
  29.             <x:ContentPanel ID="ContentPanel1" runat="server" BodyPadding="0px" ShowBorder="false" ShowHeader="False" Title="ContentPanel">
  30.                 <asp:Label ID="L_code" runat="server"></asp:Label>
  31.             </x:ContentPanel>
  32.            <x:Button ID="Btn_print" runat="server" Text="打印预览" CssClass="Left20" <font color="#ff0000">OnClientClick="javascript:myPreview()"</font>></x:Button>
  33.         </Items>
  34.     </x:Panel>
  35.     <x:Panel ID="Panel2" runat="server" BodyPadding="0px" ShowBorder="false" ShowHeader="False" Title="Panel" Layout="Fit" Height="585">
  36.       <Items>
  37.           <x:Grid ID="DG_show" runat="server" EnableCheckBoxSelect="false" EnableRowNumber="false" Title="Grid" ShowHeader="false" DataKeyNames="编号,名称,使用部门,使用责任人">
  38.               <Columns>
  39.                 <x:BoundField DataField="编号" HeaderText="编号" TextAlign="Center" />
  40.                 <x:BoundField DataField="名称" HeaderText="名称" TextAlign="Center" />
  41.                 <x:BoundField DataField="使用部门" HeaderText="使用部门" TextAlign="Center" />
  42.                 <x:BoundField DataField="使用责任人" HeaderText="使用责任人" TextAlign="Center" />
  43.               </Columns>
  44.           </x:Grid>
  45.       </Items>
  46.     </x:Panel>
  47. </form>
  48. </body>
  49. </html>
复制代码
下面是网页的后台代码

  1. Imports FineUI
  2. Partial Class ZCLR_F_Txm
  3.     Inherits System.Web.UI.Page
  4.     Dim hr As New OA
  5.     Dim info As String
复制代码
好了,其中红色的地方注意一下就可以了.



作者: 夜冰    时间: 2014-1-10 12:17
  1. Protected Sub Btn_chuli_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Btn_chuli.Click
  2.         '对需要打印的条码进行预先处理
  3.         Dim str As String = ""
  4.         Dim num As Integer = DG_show.Rows.Count
  5.         Dim top As Integer = 11  '每个边各余出4mm间隔
  6.         Dim left As Integer = 3
  7.         Dim jianju As Integer = 2
  8.         Dim W1 As Integer = 63.5
  9.         Dim H1 As Integer = 38.1
  10.         Dim lineH As Integer = 8
  11.         Dim lineW As Integer = 20
  12.         Dim W2 As Integer = 43
  13.         Dim W3 As Integer = 40  '条码的宽度
  14.         Dim H3 As Integer = 14 '条码的高度
  15.         Dim s2 As String = "部门"
  16.         Dim s1 As String = "名称"
  17.         Dim s3 As String = "购买日期"

  18.         Dim bh, mc, sybm, zrr As String
  19.         If num < 1 Or num > 21 Then
  20.             Exit Sub
  21.         End If
  22.         str = "<script language='javascript' type='text/javascript'>"
  23.         str += "function CreatePrintPage() { "
  24.         str += "LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM')); "
  25.         str += "LODOP.PRINT_INIT('打印测试用的');"
  26.         str += "LODOP.SET_PRINT_STYLE('FontSize', 10); "


  27.         For i = 0 To num - 1
  28.             bh = DG_show.DataKeys(i)(0)
  29.             mc = DG_show.DataKeys(i)(1)
  30.             sybm = DG_show.DataKeys(i)(2)
  31.             zrr = DG_show.DataKeys(i)(3)
  32.             '第一个框框
  33.             If i = 0 Then
  34.                 str += "LODOP.ADD_PRINT_RECT('" & top & "mm', '" & left & "mm', '" & W1 & "mm','" & H1 & "mm', 0, 1); "
  35.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH & "mm','" & left & "mm','" & top + lineH & "mm','" & left + W1 & "mm',0,1);" '第一根直线
  36.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH * 2 & "mm','" & left & "mm','" & top + lineH * 2 & "mm','" & left + W1 & "mm',0,1);" '第二根直线
  37.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH * 3 & "mm','" & left & "mm','" & top + lineH * 3 & "mm','" & left + W1 & "mm',0,1);" '第三根直线
  38.                 str += "LODOP.ADD_PRINT_LINE('" & top & "mm','" & left + lineW & "mm','" & top + lineH * 3 & "mm','" & left + lineW & "mm',0,1);" '第一根竖线

  39.                 str += "LODOP.ADD_PRINT_TEXT('" & top + 2 & "mm','" & left - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s1 & "');"             '第一行第一列
  40.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"
  41.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH + 2 & "mm','" & left - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s2 & "');"     '第二行第一列
  42.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"
  43.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH * 2 + 2 & "mm','" & left - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s3 & "');" '第三列第一称
  44.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"

  45.                 str += "LODOP.ADD_PRINT_TEXT('" & top + 2 & "mm','" & left + lineW + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & mc & "');"                '第一行第二列
  46.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH + 2 & "mm','" & left + lineW + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & sybm & "');"      '第二行 第二列
  47.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH * 2 + 2 & "mm','" & left + lineW + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & zrr & "');"   '第三行第二列
  48.                 str += "LODOP.ADD_PRINT_BARCODE('" & top + lineH * 3 + 2 & "mm','" & left + (W1 - W3) \ 2 & "mm','" & W3 & "mm','" & H3 - 4 & "mm','EAN128A','" & bh & "');" '第四行条形码列
  49.             End If
  50.             '第二个框框
  51.             If i = 1 Then
  52.                 str += "LODOP.ADD_PRINT_RECT('" & top & "mm', '" & left + W1 + jianju & "mm', '" & W1 & "mm','" & H1 & "mm', 0, 1); "
  53.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH & "mm','" & left + W1 + jianju & "mm','" & top + lineH & "mm','" & left + W1 * 2 + jianju & "mm',0,1);" '第一根直线
  54.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH * 2 & "mm','" & left + W1 + jianju & "mm','" & top + lineH * 2 & "mm','" & left + W1 * 2 + jianju & "mm',0,1);" '第二根直线
  55.                 str += "LODOP.ADD_PRINT_LINE('" & top + lineH * 3 & "mm','" & left + W1 + jianju & "mm','" & top + lineH * 3 & "mm','" & left + W1 * 2 + jianju & "mm',0,1);" '第三根直线
  56.                 str += "LODOP.ADD_PRINT_LINE('" & top & "mm','" & left + lineW + W1 + jianju & "mm','" & top + lineH * 3 & "mm','" & left + lineW + W1 + jianju & "mm',0,1);" '第一根竖线

  57.                 str += "LODOP.ADD_PRINT_TEXT('" & top + 2 & "mm','" & left + W1 + jianju - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s1 & "');"             '第一行第一列
  58.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"
  59.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH + 2 & "mm','" & left + W1 + jianju - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s2 & "');"     '第二行第一列
  60.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"
  61.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH * 2 + 2 & "mm','" & left + W1 + jianju - 2 & "mm','" & lineW & "mm','" & lineH & "mm','" & s3 & "');" '第三列第一称
  62.                 str += "LODOP.SET_PRINT_STYLEA(0,'Alignment',3);"

  63.                 str += "LODOP.ADD_PRINT_TEXT('" & top + 2 & "mm','" & left + lineW + W1 + jianju + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & mc & "');"                '第一行第二列
  64.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH + 2 & "mm','" & left + lineW + W1 + jianju + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & sybm & "');"      '第二行 第二列
  65.                 str += "LODOP.ADD_PRINT_TEXT('" & top + lineH * 2 + 2 & "mm','" & left + lineW + W1 + jianju + 2 & "mm','" & W2 & "mm','" & lineH & "mm','" & zrr & "');"   '第三行第二列
  66.                 str += "LODOP.ADD_PRINT_BARCODE('" & top + lineH * 3 + 2 & "mm','" & left + W1 + jianju + (W1 - W3) \ 2 & "mm','" & W3 & "mm','" & H3 - 4 & "mm','EAN128A','" & bh & "');" '第四行条形码列
  67.             End If
  68.             '第三个框框
复制代码

作者: 夜冰    时间: 2014-1-10 12:18
贴不下那么多代码,就贴了画两个框的量
作者: 木土土    时间: 2014-1-10 12:19
源码共享一下呗!
作者: 夜冰    时间: 2014-1-10 12:20
上面发的就是生成打印资产标签的源码.
作者: erp8@live.cn    时间: 2014-1-10 19:58
{:soso_e179:}
作者: 木土土    时间: 2014-1-10 23:03
你这是VB.NET?
作者: 夜冰    时间: 2014-1-12 11:27
木土土 发表于 2014-1-10 23:03
你这是VB.NET?

嗯,刚开始就学的这,只能一条道走到黑了,还好,很好用
作者: cindy313    时间: 2014-1-23 14:40
本帖最后由 cindy313 于 2014-1-23 14:43 编辑

这全是ean条形码的吗?还只是vb.net,如果是其他的会有何不同
作者: Elwin    时间: 2014-2-6 02:11
哥也出来现一下。。。。{:soso_e113:}见图:
[attach]4259[/attach]


LODOP是好东西啊。。。

作者: highong    时间: 2014-2-6 23:47
学习,贴个比较全的源码吧?
作者: 雏鸟    时间: 2014-2-18 14:32
把这两页截取出来共享出源码来撒,大家一起学习一起用
作者: Nana111    时间: 2014-2-28 14:37
本帖最后由 Nana111 于 2014-2-28 14:38 编辑
cindy313 发表于 2014-1-23 14:40
这全是ean条形码的吗?还只是vb.net,如果是其他的会有何不同

我觉得这应该是可以支持ean barcode.但是如果这个能在vb.det 里面支持 scan ean 条形码就好了
作者: cindy313    时间: 2014-3-5 14:39

我觉得这应该是可以支持ean barcode.但是如果这个能在vb.det 里面支持 scan ean 条形码就好了 ...

额,好像绝大部分的scanner都能支持把


作者: lakeman    时间: 2014-3-11 01:52
代码好复杂,我还是用jatoolsPrinter算了,只要写html,不需要拼代码,而且,有免费版本,不需要注册,http://printfree.jatools.com
作者: 狐狸猫    时间: 2016-3-18 16:07
Elwin 发表于 2014-2-6 02:11
哥也出来现一下。。。。{:soso_e113:}见图:

问下你这个是怎么处理的




欢迎光临 FineUI 官方论坛 (https://fineui.com/BBS/) Powered by Discuz! X3.4