首页 > 学院 > 开发设计 > 正文

.NET条形码

2019-11-17 02:08:04
字体:
来源:转载
供稿:网友

.NET条形码

建议不要用CODE-39码,改用CODE-128码;

CODE-39码密度比较低,条码数字内容太多,导致条码太长,缩短长度就只能减小X尺寸,造成识读困难;

CODE-128码密度高,相同的数字生成条码更短。

你可以对比一下图中的两个条码,上面是CODE-39,下面是CODE-128,相同的内容:

解决方案:

Default.aspx

%201%20<%@%20Page%20Language="C#"%20AutoEventWireup="true"%20CodeBehind="Default.aspx.cs"%20Inherits="BarcodeTest.Default"%20%>%202%20%203%20<!DOCTYPE%20html>%204%20%205%20<html%20xmlns="http://www.w3.org/1999/xhtml">%206%20<head%20runat="server">%207%20%20%20%20%20<meta%20http-equiv="Content-Type"%20content="text/html;%20charset=utf-8"%20/>%208%20%20%20%20%20<title>条形码</title>%209%20%20%20%20%20<script%20type="text/javascript"%20src="jquery-latest.min.js"></script>10%20%20%20%20%20<script%20type="text/Javascript">11%20%20%20%20%20%20%20%20%20$(function%20()%20{12%20%20%20%20%20%20%20%20%20%20%20%20%20$("#btnBar").click(function%20()%20{13%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20rawData%20=%20$.trim($("#txtRawData").val());14%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20$("#imgBarcode").attr("src",%20"BarcodeHandler.ashx?RawData="%20+%20rawData%20+%20"&BarHeight=50&BarcodeType="%20+%20$("#ddlBarcodeType").val()15%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20"&IsDisplayFontData="%20+%20($("#cbIsDisplayFontData").attr("checked")%20==%20"checked")%20+%20"&FontSize="%20+%20$("#txtFontSize").val()%20+%20"&FontAlignment="%20+%20$("#ddlFontAlignment").get(0).selectedIndex);16%20%20%20%20%20%20%20%20%20%20%20%20%20});17%20%20%20%20%20%20%20%20%20});18%20%20%20%20%20</script>19%20</head>20%20<body>21%20%20%20%20%20<form%20id="form1"%20runat="server">22%20%20%20%20%20%20%20%20%20<div>23%20%20%20%20%20%20%20%20%20%20%20%20%20原始码:24%20%20%20%20%20%20%20%20%20%20%20%20%20<input%20type="text"%20id="txtRawData"%20maxlength="48"%20value="BJ-BJSJF-GCSG-0004-HTFY00002"%20/>25%20%20%20%20%20%20%20%20%20%20%20%20%20<br%20/>26%20%20%20%20%20%20%20%20%20%20%20%20%20编码选择:<select%20id="ddlBarcodeType"><option>Auto</option>27%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<option>A</option>28%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<option>B</option>29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20<option>C</option>30%20%20%20%20%20%20%20%20%20%20%20%20%20</select>31%20%20%20%20%20%20%20%20%20</div>32%20%20%20%20%20%20%20%20%20<br%20/>33%20%20%20%20%20%20%20%20%20字体大小:<input%20type="text"%20id="txtFontSize"%20value="16"%20/>字体布局:<select%20id="ddlFontAlignment"><option>Near</option>34%20%20%20%20%20%20%20%20%20%20%20%20%20<option%20selected="selected">Center</option>35%20%20%20%20%20%20%20%20%20%20%20%20%20<option>Far</option>36%20%20%20%20%20%20%20%20%20</select><input%20checked="checked"%20type="checkbox"%20id="cbIsDisplayFontData"%20/>字体显示37%20%20%20%20%20%20%20%20%20<div>38%20%20%20%20%20%20%20%20%20%20%20%20%20<input%20type="button"%20id="btnBar"%20value="生成条形码"%20/>39%20%20%20%20%20%20%20%20%20</div>40%20%20%20%20%20%20%20%20%20<div%20style="text-align:%20center;">41%20%20%20%20%20%20%20%20%20%20%20%20%20<img%20id="imgBarcode"%20src=""%20alt="条形码"%20/>42%20%20%20%20%20%20%20%20%20</div>43%20%20%20%20%20</form>44%20</body>45%20</html>

BarcodeHandler.ashx

%201%20using%20Barcode;%202%20using%20System;%203%20using%20System.Collections.Generic;%204%20using%20System.Linq;%205%20using%20System.Web;%206%20%207%20namespace%20BarcodeTest%208%20{%209%20%20%20%20%20///%20<summary>10%20%20%20%20%20///%20author:%20Kenmu11%20%20%20%20%20///%20created%20by:%202014-11-0612%20%20%20%20%20///%20function:%20条形码生成13%20%20%20%20%20///%20</summary>14%20%20%20%20%20public%20class%20BarcodeHandler%20:%20IHttpHandler15%20%20%20%20%20{16%2017%20%20%20%20%20%20%20%20%20public%20void%20PRocessRequest(HttpContext%20context)18%20%20%20%20%20%20%20%20%20{19%20%20%20%20%20%20%20%20%20%20%20%20%20HttpRequest%20request%20=%20context.Request;20%20%20%20%20%20%20%20%20%20%20%20%20%20HttpResponse%20response%20=%20context.Response;21%20%20%20%20%20%20%20%20%20%20%20%20%20response.ClearContent();22%20%20%20%20%20%20%20%20%20%20%20%20%20response.ContentType%20=%20"image/jpeg";23%2024%20%20%20%20%20%20%20%20%20%20%20%20%20string%20barcodeType%20=%20request["BarcodeType"]%20??%20"Auto";25%20%20%20%20%20%20%20%20%20%20%20%20%20string%20rawData%20=%20request["RawData"]%20??%20((char)20).ToString()%20+%20@"123a"%20+%20((char)18).ToString()%20+%20"ab";26%20%20%20%20%20%20%20%20%20%20%20%20%20byte%20barHeight%20=%20byte.Parse(string.IsNullOrEmpty(request["BarHeight"])%20?%20"32"%20:%20request["BarHeight"]);27%20%20%20%20%20%20%20%20%20%20%20%20%20bool%20isDisplayFontData%20=%20string.IsNullOrEmpty(request["IsDisplayFontData"])%20?%20true%20:%20bool.Parse(request["IsDisplayFontData"]);28%20%20%20%20%20%20%20%20%20%20%20%20%20int%20fontSize%20=%20string.IsNullOrEmpty(request["FontSize"])%20?%2016%20:%20int.Parse(request["FontSize"]);29%20%20%20%20%20%20%20%20%20%20%20%20%20int%20fontAlignment%20=%20string.IsNullOrEmpty(request["FontAlignment"])%20?%201%20:%20int.Parse(request["FontAlignment"]);//0(Near左)、1(Center中)、2(Far右)30%20%20%20%20%20%20%20%20%20%20%20%20%20BaseCode128%20code128;31%20%20%20%20%20%20%20%20%20%20%20%20%20switch%20(barcodeType)32%20%20%20%20%20%20%20%20%20%20%20%20%20{33%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20"A":34%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code128%20=%20new%20Code128A(rawData);35%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;36%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20"B":37%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code128%20=%20new%20Code128B(rawData);38%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;39%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20"C":40%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code128%20=%20new%20Code128C(rawData);41%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;42%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20"Auto":43%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20default:44%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20code128%20=%20new%20Code128Auto(rawData);45%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20break;46%20%20%20%20%20%20%20%20%20%20%20%20%20}47%20%20%20%20%20%20%20%20%20%20%20%20%20code128.BarHeight%20=%20barHeight;48%20%20%20%20%20%20%20%20%20%20%20%20%20code128.IsDisplayFontData%20=%20isDisplayFontData;49%20%20%20%20%20%20%20%20%20%20%20%20%20code128.FontSize%20=%20fontSize;50%20%20%20%20%20%20%20%20%20%20%20%20%20code128.FontAlignment%20=%20(System.Drawing.StringAlignment)fontAlignment;51%2052%20%20%20%20%20%20%20%20%20%20%20%20%20System.Drawing.Image%20img%20=%20code128.GetBarCodeImage();53%20%20%20%20%20%20%20%20%20%20%20%20%20img.Save(response.OutputStream,%20System.Drawing.Imaging.ImageFormat.Jpeg);54             img.Dispose();55         }56 57         public bool IsReusable58         {59             get60             {61                 return false;62             }63         }64     }65 }

CharacterSet.cs

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5  6 //author: Kenmu 7 //created by: 2014-11-05 8 //function: 条形码 9 namespace Barcode10 {11     /// <summary>  12     /// Code128字符集  13     /// </summary>  14     internal enum CharacterSet15     {16         A,17         B,18         C19     } 20 }

IBarCode.cs

 1 using System; 2 using System.Collections.Generic; 3 using System.Drawing; 4 using System.Linq; 5 using System.Text; 6  7 //author: Kenmu 8 //created by: 2014-11-05 9 //function: 条形码10 namespace Barcode11 {12     /// <summary>  13     /// 条形码接口  14     /// </summary> 15     public interface IBarCode16     {17         string RawData { get; }18         /// <summary>  19         /// 条形码对应的数据  20         /// </summary>  21         string EncodedData { get; }22         /// <summary>  23         /// 当前条形码标准  24         /// </summary>  25         string BarCodeType { get; }26 27         /// <summary>  28         /// 得到条形码对应的图片  29         /// </summary>  30         /// <returns></returns>  31         Image GetBarCodeImage();32     }33 }

BaseCode128.cs

  1 using System;  2 using System.Collections.Generic;  3 using System.Linq;  4 using System.Text;  5 using System.Drawing;  6   7 //author: Kenmu  8 //created by: 2014-11-06  9 //function: 条形码 10 namespace Barcode 11 { 12     /// <summary>   13     /// BaseCode128抽象类   14     /// </summary>   15     public abstract class BaseCode128 : IBarCode 16     { 17         protected Color backColor = Color.White;//条码背景色   18         protected Color barColor = Color.Black;//条码和原始数据字体颜色 19          20         /// <summary>   21         /// 当前条形码种类 22         /// </summary>   23         public string BarCodeType 24         { 25             get { return System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name; } 26         } 27  28         /// <summary>   29         /// 条形码对应的编码数据   30         /// </summary> 31         protected string _EncodedData; 32         public string EncodedData 33         { 34             get { return this._EncodedData; } 35         } 36  37         /// <summary>   38         /// 【原始数据】 39         /// </summary> 40         protected string _RawData; 41         public string RawData 42         { 43             get { return this._RawData; } 44         } 45  46         /// <summary>   47         /// 在条形码下面显示数据;如果为空,则取【原始数据】   48         /// </summary> 49         protected string _PresentationData = null; 50         public string PresentationData 51         { 52             get { return string.IsNullOrEmpty(this._PresentationData) ? this._RawData : this._Present
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表