FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 29223|回复: 15
打印 上一主题 下一主题

Lodop控件打印条形码的源码分享

[复制链接]
跳转到指定楼层
楼主
发表于 2014-1-10 11:55:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 夜冰 于 2014-1-10 11:59 编辑

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


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



图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
复制代码
好了,其中红色的地方注意一下就可以了.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
沙发
 楼主| 发表于 2014-1-10 12:17:54 | 只看该作者
  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:26 | 只看该作者
贴不下那么多代码,就贴了画两个框的量
地板
发表于 2014-1-10 12:19:19 | 只看该作者
源码共享一下呗!
5#
 楼主| 发表于 2014-1-10 12:20:28 | 只看该作者
上面发的就是生成打印资产标签的源码.
6#
发表于 2014-1-10 19:58:58 | 只看该作者
{:soso_e179:}
7#
发表于 2014-1-10 23:03:36 | 只看该作者
你这是VB.NET?
8#
 楼主| 发表于 2014-1-12 11:27:19 | 只看该作者

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

这全是ean条形码的吗?还只是vb.net,如果是其他的会有何不同
10#
发表于 2014-2-6 02:11:01 | 只看该作者
哥也出来现一下。。。。{:soso_e113:}见图:



LODOP是好东西啊。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-27 07:28 , Processed in 0.049420 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表