asp.net(c#)生成EAN13条形码,webform版本
2007-09-05 09:56
579 查看
做一个项目需要用到条形码,在网上搜索一下,基本上都是winform版本。于是我就找了一个老外的代码修改了一下,版权属于原作者。
写一个条形码的类,名称为EAN13BarCode.cs,代码如下:
using System;
using System.Text;
using System.Drawing;
using System.Web;
namespace Utility
...{
/**//// <summary>
/// EAN13BarCode 的摘要说明。
/// </summary>
public class EAN13BarCode
...{
private string _sName = "EAN13";
private float _fMinimumAllowableScale = .8f;
private float _fMaximumAllowableScale = 2.0f;
// This is the nomimal size recommended by the EAN.
private float _fWidth = 37.29f;
private float _fHeight = 25.93f;
private float _fFontSize = 8.0f;
private float _fScale = 1.0f;
// Left Hand Digits.
private string [] _aOddLeft = ...{ "0001101", "0011001", "0010011", "0111101",
"0100011", "0110001", "0101111", "0111011",
"0110111", "0001011" };
private string [] _aEvenLeft = ...{ "0100111", "0110011", "0011011", "0100001",
"0011101", "0111001", "0000101", "0010001",
"0001001", "0010111" };
// Right Hand Digits.
private string [] _aRight = ...{ "1110010", "1100110", "1101100", "1000010",
"1011100", "1001110", "1010000", "1000100",
"1001000", "1110100" };
private string _sQuiteZone = "000000000";
private string _sLeadTail = "101";
private string _sSeparator = "01010";
private string _sCountryCode = "00";
private string _sManufacturerCode;
private string _sProductCode;
private string _sChecksumDigit;
public EAN13BarCode( )
...{
}
public EAN13BarCode( string mfgNumber, string productId )
...{
this.CountryCode = "00";
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId, string checkDigit )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.ChecksumDigit = checkDigit;
}
public static string getENA13Code(string Numbers12bit)
...{
int c1 = 0;
int c2 = 0;
for (int i=0; i<11; i= i+2)
...{
c1 += int.Parse(Numbers12bit[i].ToString());
c2 += int.Parse(Numbers12bit[i+1].ToString());
}
int c3 = c1 + c2 *3;
c3 = c3 - c3/10 *10;
if (c3 == 0)
...{
return Numbers12bit + 0;
}
else
...{
int N = 10 - c3;
return Numbers12bit + N.ToString();
}
}
public void DrawEan13Barcode(System.Drawing.Graphics g, System.Drawing.Point pt)
...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;
// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;
g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );
// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;
System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );
float xPosition = 0;
System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );
float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;
System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );
// Calculate the Check Digit.
this.CalculateChecksumDigit( );
sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );
string sTemp = sbTemp.ToString( );
string sLeftPattern = "";
// Convert the left hand numbers.
sLeftPattern = ConvertLeftPattern( sTemp.Substring( 0, 7 ) );
// Build the UPC Code.
strbEAN13.AppendFormat( "{0}{1}{2}{3}{4}{1}{0}",
this._sQuiteZone, this._sLeadTail,
sLeftPattern,
this._sSeparator,
ConvertToDigitPatterns( sTemp.Substring( 7 ), this._aRight ) );
string sTempUPC = strbEAN13.ToString( );
float fTextHeight = g.MeasureString( sTempUPC, font ).Height;
// Draw the barcode lines.
for( int i = 0; i < strbEAN13.Length; i++ )
...{
if( sTempUPC.Substring( i, 1 ) == "1" )
...{
if( xStart == pt.X )
xStart = xPosition;
// Save room for the UPC number below the bar code.
if( ( i > 12 && i < 55 ) || ( i > 57 && i < 101 ) )
// Draw space for the number
g.FillRectangle( brush, xPosition, yStart, lineWidth, height - fTextHeight );
else
// Draw a full line.
g.FillRectangle( brush, xPosition, yStart, lineWidth, height );
}
xPosition += lineWidth;
xEnd = xPosition;
}
// Draw the upc numbers below the line.
xPosition = xStart - g.MeasureString( this.CountryCode.Substring( 0, 1 ), font ).Width;
float yPosition = yStart + ( height - fTextHeight );
// Draw 1st digit of the country code.
g.DrawString( sTemp.Substring( 0, 1 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += ( g.MeasureString( sTemp.Substring( 0, 1 ), font ).Width + 43 * lineWidth ) -
( g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width );
// Draw MFG Number.
g.DrawString( sTemp.Substring( 1, 6 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width + ( 11 * lineWidth );
// Draw Product ID.
g.DrawString( sTemp.Substring( 7 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
// Restore the GraphicsState.
g.Restore( gs );
}
/**//// <summary>
/// System.Drawing.Graphics g, System.Drawing.Point pt
/// </summary>
/// <param name="g"></param>
/// <param name="pt"></param>
public void DrawEan13Barcode(int _width, int _height)
...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;
// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;
System.Drawing.Bitmap image = new Bitmap(_width,_height);//new System.Drawing.Bitmap((int)Math.Ceiling((13 * 12.5)), 50);
System.Drawing.Graphics g = Graphics.FromImage(image);
System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
System.Drawing.Rectangle drawBounds = new Rectangle(0,0,_width,_height);
System.Drawing.Point pt = new Point(0,0);
g.FillRectangle(brush,drawBounds);
g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );
// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;
//System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );
float xPosition = 0;
System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );
float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;
System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );
// Calculate the Check Digit.
this.CalculateChecksumDigit( );
sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );
string sTemp = sbTemp.ToString( );
string sLeftPattern = "";
// Convert the left hand numbers.
sLeftPattern = ConvertLeftPattern( sTemp.Substring( 0, 7 ) );
// Build the UPC Code.
strbEAN13.AppendFormat( "{0}{1}{2}{3}{4}{1}{0}",
this._sQuiteZone, this._sLeadTail,
sLeftPattern,
this._sSeparator,
ConvertToDigitPatterns( sTemp.Substring( 7 ), this._aRight ) );
string sTempUPC = strbEAN13.ToString( );
float fTextHeight = g.MeasureString( sTempUPC, font ).Height;
// Draw the barcode lines.
for( int i = 0; i < strbEAN13.Length; i++ )
...{
if( sTempUPC.Substring( i, 1 ) == "1" )
...{
if( xStart == pt.X )
xStart = xPosition;
// Save room for the UPC number below the bar code.
if( ( i > 12 && i < 55 ) || ( i > 57 && i < 101 ) )
// Draw space for the number
g.FillRectangle( brush, xPosition, yStart, lineWidth, height - fTextHeight );
else
// Draw a full line.
g.FillRectangle( brush, xPosition, yStart, lineWidth, height );
}
xPosition += lineWidth;
xEnd = xPosition;
}
// Draw the upc numbers below the line.
xPosition = xStart - g.MeasureString( this.CountryCode.Substring( 0, 1 ), font ).Width;
float yPosition = yStart + ( height - fTextHeight );
// Draw 1st digit of the country code.
g.DrawString( sTemp.Substring( 0, 1 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += ( g.MeasureString( sTemp.Substring( 0, 1 ), font ).Width + 43 * lineWidth ) -
( g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width );
// Draw MFG Number.
g.DrawString( sTemp.Substring( 1, 6 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width + ( 11 * lineWidth );
// Draw Product ID.
g.DrawString( sTemp.Substring( 7 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
// Restore the GraphicsState.
g.Restore( gs );
g.Dispose();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Gif";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
}
public System.Drawing.Bitmap CreateBitmap( )
...{
float tempWidth = ( this.Width * this.Scale ) * 100 ;
float tempHeight = ( this.Height * this.Scale ) * 100;
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap( (int)tempWidth, (int)tempHeight );
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage( bmp );
this.DrawEan13Barcode( g, new System.Drawing.Point( 0, 0 ) );
g.Dispose( );
return bmp;
}
private string ConvertLeftPattern( string sLeft )
...{
switch( sLeft.Substring( 0, 1 ) )
...{
case "0":
return CountryCode0( sLeft.Substring( 1 ) );
case "1":
return CountryCode1( sLeft.Substring( 1 ) );
case "2":
return CountryCode2( sLeft.Substring( 1 ) );
case "3":
return CountryCode3( sLeft.Substring( 1 ) );
case "4":
return CountryCode4( sLeft.Substring( 1 ) );
case "5":
return CountryCode5( sLeft.Substring( 1 ) );
case "6":
return CountryCode6( sLeft.Substring( 1 ) );
case "7":
return CountryCode7( sLeft.Substring( 1 ) );
case "8":
return CountryCode8( sLeft.Substring( 1 ) );
case "9":
return CountryCode9( sLeft.Substring( 1 ) );
default:
return "";
}
}
private string CountryCode0( string sLeft )
...{
// 0 Odd Odd Odd Odd Odd Odd
return ConvertToDigitPatterns( sLeft, this._aOddLeft );
}
private string CountryCode1( string sLeft )
...{
// 1 Odd Odd Even Odd Even Even
System.Text.StringBuilder sReturn = new StringBuilder( );
// The two lines below could be replaced with this:
// sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 2 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
// The two lines below could be replaced with this:
// sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 2 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode2( string sLeft )
...{
// 2 Odd Odd Even Even Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode3( string sLeft )
...{
// 3 Odd Odd Even Even Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode4( string sLeft )
...{
// 4 Odd Even Odd Odd Even Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode5( string sLeft )
...{
// 5 Odd Even Even Odd Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode6( string sLeft )
...{
// 6 Odd Even Even Even Odd Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode7( string sLeft )
...{
// 7 Odd Even Odd Even Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode8( string sLeft )
...{
// 8 Odd Even Odd Even Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode9( string sLeft )
...{
// 9 Odd Even Even Odd Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string ConvertToDigitPatterns( string inputNumber, string [] patterns )
...{
System.Text.StringBuilder sbTemp = new StringBuilder( );
int iIndex = 0;
for( int i = 0; i < inputNumber.Length; i++ )
...{
iIndex = Convert.ToInt32( inputNumber.Substring( i, 1 ) );
sbTemp.Append( patterns[iIndex] );
}
return sbTemp.ToString( );
}
public void CalculateChecksumDigit( )
...{
string sTemp = this.CountryCode + this.ManufacturerCode + this.ProductCode;
int iSum = 0;
int iDigit = 0;
// Calculate the checksum digit here.
for( int i = sTemp.Length; i >= 1; i-- )
...{
iDigit = Convert.ToInt32( sTemp.Substring( i - 1, 1 ) );
if( i % 2 == 0 )
...{ // odd
iSum += iDigit * 3;
}
else
...{ // even
iSum += iDigit * 1;
}
}
int iCheckSum = ( 10 - ( iSum % 10 ) ) % 10;
this.ChecksumDigit = iCheckSum.ToString( );
}
-- Attributes/Properties --#region -- Attributes/Properties --
public string Name
...{
get
...{
return _sName;
}
}
public float MinimumAllowableScale
...{
get
...{
return _fMinimumAllowableScale;
}
}
public float MaximumAllowableScale
...{
get
...{
return _fMaximumAllowableScale;
}
}
public float Width
...{
get
...{
return _fWidth;
}
}
public float Height
...{
get
...{
return _fHeight;
}
}
public float FontSize
...{
get
...{
return _fFontSize;
}
}
public float Scale
...{
get
...{
return _fScale;
}
set
...{
if( value < this._fMinimumAllowableScale || value > this._fMaximumAllowableScale )
throw new Exception( "Scale value out of allowable range. Value must be between " +
this._fMinimumAllowableScale.ToString( ) + " and " +
this._fMaximumAllowableScale.ToString( ) );
_fScale = value;
}
}
public string CountryCode
...{
get
...{
return _sCountryCode;
}
set
...{
while( value.Length < 2 )
...{
value = "0" + value;
}
_sCountryCode = value;
}
}
public string ManufacturerCode
...{
get
...{
return _sManufacturerCode;
}
set
...{
_sManufacturerCode = value;
}
}
public string ProductCode
...{
get
...{
return _sProductCode;
}
set
...{
_sProductCode = value;
}
}
public string ChecksumDigit
...{
get
...{
return _sChecksumDigit;
}
set
...{
int iValue = Convert.ToInt32( value );
if( iValue < 0 || iValue > 9 )
throw new Exception( "The Check Digit must be between 0 and 9." );
_sChecksumDigit = value;
}
}
#endregion -- Attributes/Properties --
}
}
调用文件为ean13barcode.aspx,代码如下:
<%...@ Page language="c#" Codebehind="ean13barcode.aspx.cs" AutoEventWireup="false" Inherits="WEB.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
</body>
</HTML>
后台ean13barcode.aspx.cs代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WEB
...{
/**//// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
...{
private void Page_Load(object sender, System.EventArgs e)
...{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
...{
PrintCode();
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/**//// <summary>
/// 生成条形码
/// </summary>
private void PrintCode()
...{
Utility.EAN13BarCode ean13 = new Utility.EAN13BarCode();
ean13.CountryCode = "692";
ean13.ManufacturerCode = "000";
ean13.ProductCode = "012345";
ean13.Scale = (float)Convert.ToDecimal(1.5f);
ean13.DrawEan13Barcode(349,240);
}
}
}
在前台如果需要生成图像的话,可以如下调用:
<img src="ean13barcode.aspx" border="0" />
写一个条形码的类,名称为EAN13BarCode.cs,代码如下:
using System;
using System.Text;
using System.Drawing;
using System.Web;
namespace Utility
...{
/**//// <summary>
/// EAN13BarCode 的摘要说明。
/// </summary>
public class EAN13BarCode
...{
private string _sName = "EAN13";
private float _fMinimumAllowableScale = .8f;
private float _fMaximumAllowableScale = 2.0f;
// This is the nomimal size recommended by the EAN.
private float _fWidth = 37.29f;
private float _fHeight = 25.93f;
private float _fFontSize = 8.0f;
private float _fScale = 1.0f;
// Left Hand Digits.
private string [] _aOddLeft = ...{ "0001101", "0011001", "0010011", "0111101",
"0100011", "0110001", "0101111", "0111011",
"0110111", "0001011" };
private string [] _aEvenLeft = ...{ "0100111", "0110011", "0011011", "0100001",
"0011101", "0111001", "0000101", "0010001",
"0001001", "0010111" };
// Right Hand Digits.
private string [] _aRight = ...{ "1110010", "1100110", "1101100", "1000010",
"1011100", "1001110", "1010000", "1000100",
"1001000", "1110100" };
private string _sQuiteZone = "000000000";
private string _sLeadTail = "101";
private string _sSeparator = "01010";
private string _sCountryCode = "00";
private string _sManufacturerCode;
private string _sProductCode;
private string _sChecksumDigit;
public EAN13BarCode( )
...{
}
public EAN13BarCode( string mfgNumber, string productId )
...{
this.CountryCode = "00";
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.CalculateChecksumDigit( );
}
public EAN13BarCode( string countryCode, string mfgNumber, string productId, string checkDigit )
...{
this.CountryCode = countryCode;
this.ManufacturerCode = mfgNumber;
this.ProductCode = productId;
this.ChecksumDigit = checkDigit;
}
public static string getENA13Code(string Numbers12bit)
...{
int c1 = 0;
int c2 = 0;
for (int i=0; i<11; i= i+2)
...{
c1 += int.Parse(Numbers12bit[i].ToString());
c2 += int.Parse(Numbers12bit[i+1].ToString());
}
int c3 = c1 + c2 *3;
c3 = c3 - c3/10 *10;
if (c3 == 0)
...{
return Numbers12bit + 0;
}
else
...{
int N = 10 - c3;
return Numbers12bit + N.ToString();
}
}
public void DrawEan13Barcode(System.Drawing.Graphics g, System.Drawing.Point pt)
...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;
// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;
g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );
// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;
System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );
float xPosition = 0;
System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );
float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;
System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );
// Calculate the Check Digit.
this.CalculateChecksumDigit( );
sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );
string sTemp = sbTemp.ToString( );
string sLeftPattern = "";
// Convert the left hand numbers.
sLeftPattern = ConvertLeftPattern( sTemp.Substring( 0, 7 ) );
// Build the UPC Code.
strbEAN13.AppendFormat( "{0}{1}{2}{3}{4}{1}{0}",
this._sQuiteZone, this._sLeadTail,
sLeftPattern,
this._sSeparator,
ConvertToDigitPatterns( sTemp.Substring( 7 ), this._aRight ) );
string sTempUPC = strbEAN13.ToString( );
float fTextHeight = g.MeasureString( sTempUPC, font ).Height;
// Draw the barcode lines.
for( int i = 0; i < strbEAN13.Length; i++ )
...{
if( sTempUPC.Substring( i, 1 ) == "1" )
...{
if( xStart == pt.X )
xStart = xPosition;
// Save room for the UPC number below the bar code.
if( ( i > 12 && i < 55 ) || ( i > 57 && i < 101 ) )
// Draw space for the number
g.FillRectangle( brush, xPosition, yStart, lineWidth, height - fTextHeight );
else
// Draw a full line.
g.FillRectangle( brush, xPosition, yStart, lineWidth, height );
}
xPosition += lineWidth;
xEnd = xPosition;
}
// Draw the upc numbers below the line.
xPosition = xStart - g.MeasureString( this.CountryCode.Substring( 0, 1 ), font ).Width;
float yPosition = yStart + ( height - fTextHeight );
// Draw 1st digit of the country code.
g.DrawString( sTemp.Substring( 0, 1 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += ( g.MeasureString( sTemp.Substring( 0, 1 ), font ).Width + 43 * lineWidth ) -
( g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width );
// Draw MFG Number.
g.DrawString( sTemp.Substring( 1, 6 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width + ( 11 * lineWidth );
// Draw Product ID.
g.DrawString( sTemp.Substring( 7 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
// Restore the GraphicsState.
g.Restore( gs );
}
/**//// <summary>
/// System.Drawing.Graphics g, System.Drawing.Point pt
/// </summary>
/// <param name="g"></param>
/// <param name="pt"></param>
public void DrawEan13Barcode(int _width, int _height)
...{
float width = this.Width * this.Scale;
float height = this.Height * this.Scale;
// EAN13 Barcode should be a total of 113 modules wide.
float lineWidth = width / 113f;
System.Drawing.Bitmap image = new Bitmap(_width,_height);//new System.Drawing.Bitmap((int)Math.Ceiling((13 * 12.5)), 50);
System.Drawing.Graphics g = Graphics.FromImage(image);
System.Drawing.Brush brush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
System.Drawing.Rectangle drawBounds = new Rectangle(0,0,_width,_height);
System.Drawing.Point pt = new Point(0,0);
g.FillRectangle(brush,drawBounds);
g.Clear(Color.White);
// Save the GraphicsState.
System.Drawing.Drawing2D.GraphicsState gs = g.Save( );
// Set the PageUnit to Inch because all of our measurements are in inches.
g.PageUnit = System.Drawing.GraphicsUnit.Millimeter;
// Set the PageScale to 1, so a millimeter will represent a true millimeter.
g.PageScale = 1;
//System.Drawing.SolidBrush brush = new System.Drawing.SolidBrush( System.Drawing.Color.Black );
float xPosition = 0;
System.Text.StringBuilder strbEAN13 = new System.Text.StringBuilder( );
System.Text.StringBuilder sbTemp = new System.Text.StringBuilder( );
float xStart = pt.X;
float yStart = pt.Y;
float xEnd = 0;
System.Drawing.Font font = new System.Drawing.Font( "Arial", this._fFontSize * this.Scale );
// Calculate the Check Digit.
this.CalculateChecksumDigit( );
sbTemp.AppendFormat( "{0}{1}{2}{3}",
this.CountryCode,
this.ManufacturerCode,
this.ProductCode,
this.ChecksumDigit );
string sTemp = sbTemp.ToString( );
string sLeftPattern = "";
// Convert the left hand numbers.
sLeftPattern = ConvertLeftPattern( sTemp.Substring( 0, 7 ) );
// Build the UPC Code.
strbEAN13.AppendFormat( "{0}{1}{2}{3}{4}{1}{0}",
this._sQuiteZone, this._sLeadTail,
sLeftPattern,
this._sSeparator,
ConvertToDigitPatterns( sTemp.Substring( 7 ), this._aRight ) );
string sTempUPC = strbEAN13.ToString( );
float fTextHeight = g.MeasureString( sTempUPC, font ).Height;
// Draw the barcode lines.
for( int i = 0; i < strbEAN13.Length; i++ )
...{
if( sTempUPC.Substring( i, 1 ) == "1" )
...{
if( xStart == pt.X )
xStart = xPosition;
// Save room for the UPC number below the bar code.
if( ( i > 12 && i < 55 ) || ( i > 57 && i < 101 ) )
// Draw space for the number
g.FillRectangle( brush, xPosition, yStart, lineWidth, height - fTextHeight );
else
// Draw a full line.
g.FillRectangle( brush, xPosition, yStart, lineWidth, height );
}
xPosition += lineWidth;
xEnd = xPosition;
}
// Draw the upc numbers below the line.
xPosition = xStart - g.MeasureString( this.CountryCode.Substring( 0, 1 ), font ).Width;
float yPosition = yStart + ( height - fTextHeight );
// Draw 1st digit of the country code.
g.DrawString( sTemp.Substring( 0, 1 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += ( g.MeasureString( sTemp.Substring( 0, 1 ), font ).Width + 43 * lineWidth ) -
( g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width );
// Draw MFG Number.
g.DrawString( sTemp.Substring( 1, 6 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
xPosition += g.MeasureString( sTemp.Substring( 1, 6 ), font ).Width + ( 11 * lineWidth );
// Draw Product ID.
g.DrawString( sTemp.Substring( 7 ), font, brush, new System.Drawing.PointF( xPosition, yPosition ) );
// Restore the GraphicsState.
g.Restore( gs );
g.Dispose();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Gif";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
}
public System.Drawing.Bitmap CreateBitmap( )
...{
float tempWidth = ( this.Width * this.Scale ) * 100 ;
float tempHeight = ( this.Height * this.Scale ) * 100;
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap( (int)tempWidth, (int)tempHeight );
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage( bmp );
this.DrawEan13Barcode( g, new System.Drawing.Point( 0, 0 ) );
g.Dispose( );
return bmp;
}
private string ConvertLeftPattern( string sLeft )
...{
switch( sLeft.Substring( 0, 1 ) )
...{
case "0":
return CountryCode0( sLeft.Substring( 1 ) );
case "1":
return CountryCode1( sLeft.Substring( 1 ) );
case "2":
return CountryCode2( sLeft.Substring( 1 ) );
case "3":
return CountryCode3( sLeft.Substring( 1 ) );
case "4":
return CountryCode4( sLeft.Substring( 1 ) );
case "5":
return CountryCode5( sLeft.Substring( 1 ) );
case "6":
return CountryCode6( sLeft.Substring( 1 ) );
case "7":
return CountryCode7( sLeft.Substring( 1 ) );
case "8":
return CountryCode8( sLeft.Substring( 1 ) );
case "9":
return CountryCode9( sLeft.Substring( 1 ) );
default:
return "";
}
}
private string CountryCode0( string sLeft )
...{
// 0 Odd Odd Odd Odd Odd Odd
return ConvertToDigitPatterns( sLeft, this._aOddLeft );
}
private string CountryCode1( string sLeft )
...{
// 1 Odd Odd Even Odd Even Even
System.Text.StringBuilder sReturn = new StringBuilder( );
// The two lines below could be replaced with this:
// sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 2 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
// The two lines below could be replaced with this:
// sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 2 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode2( string sLeft )
...{
// 2 Odd Odd Even Even Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode3( string sLeft )
...{
// 3 Odd Odd Even Even Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode4( string sLeft )
...{
// 4 Odd Even Odd Odd Even Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode5( string sLeft )
...{
// 5 Odd Even Even Odd Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode6( string sLeft )
...{
// 6 Odd Even Even Even Odd Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode7( string sLeft )
...{
// 7 Odd Even Odd Even Odd Even
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aEvenLeft ) );
return sReturn.ToString( );
}
private string CountryCode8( string sLeft )
...{
// 8 Odd Even Odd Even Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string CountryCode9( string sLeft )
...{
// 9 Odd Even Even Odd Even Odd
System.Text.StringBuilder sReturn = new StringBuilder( );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 0, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 1, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 2, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 3, 1 ), this._aOddLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 4, 1 ), this._aEvenLeft ) );
sReturn.Append( ConvertToDigitPatterns( sLeft.Substring( 5, 1 ), this._aOddLeft ) );
return sReturn.ToString( );
}
private string ConvertToDigitPatterns( string inputNumber, string [] patterns )
...{
System.Text.StringBuilder sbTemp = new StringBuilder( );
int iIndex = 0;
for( int i = 0; i < inputNumber.Length; i++ )
...{
iIndex = Convert.ToInt32( inputNumber.Substring( i, 1 ) );
sbTemp.Append( patterns[iIndex] );
}
return sbTemp.ToString( );
}
public void CalculateChecksumDigit( )
...{
string sTemp = this.CountryCode + this.ManufacturerCode + this.ProductCode;
int iSum = 0;
int iDigit = 0;
// Calculate the checksum digit here.
for( int i = sTemp.Length; i >= 1; i-- )
...{
iDigit = Convert.ToInt32( sTemp.Substring( i - 1, 1 ) );
if( i % 2 == 0 )
...{ // odd
iSum += iDigit * 3;
}
else
...{ // even
iSum += iDigit * 1;
}
}
int iCheckSum = ( 10 - ( iSum % 10 ) ) % 10;
this.ChecksumDigit = iCheckSum.ToString( );
}
-- Attributes/Properties --#region -- Attributes/Properties --
public string Name
...{
get
...{
return _sName;
}
}
public float MinimumAllowableScale
...{
get
...{
return _fMinimumAllowableScale;
}
}
public float MaximumAllowableScale
...{
get
...{
return _fMaximumAllowableScale;
}
}
public float Width
...{
get
...{
return _fWidth;
}
}
public float Height
...{
get
...{
return _fHeight;
}
}
public float FontSize
...{
get
...{
return _fFontSize;
}
}
public float Scale
...{
get
...{
return _fScale;
}
set
...{
if( value < this._fMinimumAllowableScale || value > this._fMaximumAllowableScale )
throw new Exception( "Scale value out of allowable range. Value must be between " +
this._fMinimumAllowableScale.ToString( ) + " and " +
this._fMaximumAllowableScale.ToString( ) );
_fScale = value;
}
}
public string CountryCode
...{
get
...{
return _sCountryCode;
}
set
...{
while( value.Length < 2 )
...{
value = "0" + value;
}
_sCountryCode = value;
}
}
public string ManufacturerCode
...{
get
...{
return _sManufacturerCode;
}
set
...{
_sManufacturerCode = value;
}
}
public string ProductCode
...{
get
...{
return _sProductCode;
}
set
...{
_sProductCode = value;
}
}
public string ChecksumDigit
...{
get
...{
return _sChecksumDigit;
}
set
...{
int iValue = Convert.ToInt32( value );
if( iValue < 0 || iValue > 9 )
throw new Exception( "The Check Digit must be between 0 and 9." );
_sChecksumDigit = value;
}
}
#endregion -- Attributes/Properties --
}
}
调用文件为ean13barcode.aspx,代码如下:
<%...@ Page language="c#" Codebehind="ean13barcode.aspx.cs" AutoEventWireup="false" Inherits="WEB.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
</body>
</HTML>
后台ean13barcode.aspx.cs代码:
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace WEB
...{
/**//// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
...{
private void Page_Load(object sender, System.EventArgs e)
...{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
...{
PrintCode();
}
}
Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
...{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
/**//// <summary>
/// 生成条形码
/// </summary>
private void PrintCode()
...{
Utility.EAN13BarCode ean13 = new Utility.EAN13BarCode();
ean13.CountryCode = "692";
ean13.ManufacturerCode = "000";
ean13.ProductCode = "012345";
ean13.Scale = (float)Convert.ToDecimal(1.5f);
ean13.DrawEan13Barcode(349,240);
}
}
}
在前台如果需要生成图像的话,可以如下调用:
<img src="ean13barcode.aspx" border="0" />
相关文章推荐
- ASP.NET 生成图形验证码 (C#版本)
- ASP.NET生成高质量缩略图通用函数(c#代码)
- 生成静态文件的新闻系统核心代码(asp.net C#)
- ASP.NET中C#生成二维码
- asp.net(c#)快速生成Json格式的数据(JsonHelper)
- 生成中文的验证码(ASP.NET C#)
- 在ASP.NET中上传图片并生成缩略图的C#源码 (转载)
- asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
- 不同版本的 IIS 中使用 ASP.NET MVC(C#)【转】
- asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像
- asp.net中用C#自动生成透明的GIF图片
- 利用QrCode.Net生成二维码 asp.net mvc c#
- Asp.NetCore1.1版本没了project.json,这样来生成跨平台包
- 用C#生成Excel文件的方法,Excel.dll组件生成的方法和设置用ASP.NET操作访问权限
- ASP.NET with C#生成验证码的过程
- asp.net Core1.1版本生成超链接/a链接标签的方式
- ASP.NET生成高质量缩略图通用函数(c#代码)
- asp.net(c#)上传图片生成缩略图
- ASP.NET根据URL生成网页缩略图示例程序(C#语言)
- asp.net(C#)利用QRCode生成二维码(续)-在二维码图片中心加Logo或图像