ASP.net生成条形码

ASP.net(c#)生成条形码的源码如下:(仅供参考) 由于公司经常要用到条形码打印,在网上搜了好久,发现了几个在线条码打印机生成的例子.

using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   partial   class  _Default : System.Web.UI.Page
{
protected   void  Page_Load( object  sender, EventArgs e)
{
Response.Write(bar_code(www.saibon.com.cn, 
100 1 2 ));
}
public   string  bar_code( object  str,  int  ch,  int  cw,  int  type_code)
{
// str:输入的字符串;ch:要显示条形码的高度;cw:要显示条码的宽度;type_code:代码类型
string  strTmp  =  str.ToString();
string  code  =  strTmp;
//  ToLower()将string转化成小写形式的副本,返回是使用指定区域的性的大小写规则。
strTmp  =  strTmp.ToLower();
int  height  =  ch;
int  width  =  cw;

// 将传入的参数进行转化。
strTmp  =  strTmp.Replace( " 0 " " _|_|__||_||_| " ); ;
strTmp 
=  strTmp.Replace( " 1 " " _||_|__|_|_|| " );
strTmp 
=  strTmp.Replace( " 2 " " _|_||__|_|_|| " );
strTmp 
=  strTmp.Replace( " 3 " " _||_||__|_|_| " );
strTmp 
=  strTmp.Replace( " 4 " " _|_|__||_|_|| " );
strTmp 
=  strTmp.Replace( " 5 " " _||_|__||_|_| " );
strTmp 
=  strTmp.Replace( " 7 " " _|_|__|_||_|| " );
strTmp 
=  strTmp.Replace( " 6 " " _|_||__||_|_| " );
strTmp 
=  strTmp.Replace( " 8 " " _||_|__|_||_| " );
strTmp 
=  strTmp.Replace( " 9 " " _|_||__|_||_| " );
strTmp 
=  strTmp.Replace( " a " " _||_|_|__|_|| " );
strTmp 
=  strTmp.Replace( " b " " _|_||_|__|_|| " );
strTmp 
=  strTmp.Replace( " c " " _||_||_|__|_| " );
strTmp 
=  strTmp.Replace( " d " " _|_|_||__|_|| " );
strTmp 
=  strTmp.Replace( " e " " _||_|_||__|_| " );
strTmp 
=  strTmp.Replace( " f " " _|_||_||__|_| " );
strTmp 
=  strTmp.Replace( " g " " _|_|_|__||_|| " );
strTmp 
=  strTmp.Replace( " h " " _||_|_|__||_| " );
strTmp 
=  strTmp.Replace( " i " " _|_||_|__||_| " );
strTmp 
=  strTmp.Replace( " j " " _|_|_||__||_| " );
strTmp 
=  strTmp.Replace( " k " " _||_|_|_|__|| " );
strTmp 
=  strTmp.Replace( " l " " _|_||_|_|__|| " );
strTmp 
=  strTmp.Replace( " m " " _||_||_|_|__| " );
strTmp 
=  strTmp.Replace( " n " " _|_|_||_|__|| " );
strTmp 
=  strTmp.Replace( " o " " _||_|_||_|__| " );
strTmp 
=  strTmp.Replace( " p " " _|_||_||_|__| " );
strTmp 
=  strTmp.Replace( " r " " _||_|_|_||__| " );
strTmp 
=  strTmp.Replace( " q " " _|_|_|_||__|| " );
strTmp 
=  strTmp.Replace( " s " " _|_||_|_||__| " );
strTmp 
=  strTmp.Replace( " t " " _|_|_||_||__| " );
strTmp 
=  strTmp.Replace( " u " " _||__|_|_|_|| " );
strTmp 
=  strTmp.Replace( " v " " _|__||_|_|_|| " );
strTmp 
=  strTmp.Replace( " w " " _||__||_|_|_| " );
strTmp 
=  strTmp.Replace( " x " " _|__|_||_|_|| " );
strTmp 
=  strTmp.Replace( " y " " _||__|_||_|_| " );
strTmp 
=  strTmp.Replace( " z " " _|__||_||_|_| " );
strTmp 
=  strTmp.Replace( " - " " _|__|_|_||_|| " );
strTmp 
=  strTmp.Replace( " * " " _|__|_||_||_| " );
strTmp 
=  strTmp.Replace( " / " " _|__|__|_|__| " );
strTmp 
=  strTmp.Replace( " % " " _|_|__|__|__| " );
strTmp 
=  strTmp.Replace( " + " " _|__|_|__|__| " );
strTmp 
=  strTmp.Replace( " . " " _||__|_|_||_| " );
strTmp 
=  strTmp.Replace( " _ " " <span style='height: "   +  height  +   " ;width: "   +  width  +   " ;background:#FFFFFF;'></span> " );
strTmp 
=  strTmp.Replace( " | " " <span style='height: "   +  height  +   " ;width: "   +  width  +   " ;background:#000000;'></span> " );

if  (type_code  ==   1 )
{
return  strTmp  +   " <BR> "   +  code;
}
else
{
return  strTmp;
}
}
}


.net生成条形码的方法二:
using  System.Drawing;

public   void  CreateCodeLogo( string  code)
    {

        
long  len  =  code.Length;
        
string  lastString  =   "" ;
        
char [] list  =   new   char [len  +   1 ];


        list 
=  code.ToCharArray();

        
for  ( int  i  =   0 ; i  <  list.Length; i ++ )
        {
            lastString 
+=   this .ConvertToBinaryString(list[i].ToString());
        }

        
char [] numList  =   new   char [lastString.Length  +   1 ];
        numList 
=  lastString.ToCharArray();


        Bitmap image 
=   new  Bitmap( 200 140 );
        Graphics g 
=  Graphics.FromImage(image);

        g.Clear(Color.White);

        Pen penBlack 
=   new  Pen(Color.FromArgb( 255 0 0 0 ),  2.5F );
        Pen penWhite 
=   new  Pen(Color.White,  2.5F );

        
int  j  =   0 ;

        
for  ( float  k  =   10 ; j  <  numList.Length; k  +=  2F, j ++ )
        {
            
if  (numList[j].ToString()  ==   " 1 " )
            {
                g.DrawLine(penBlack, k, 
10 , k,  110 );

            }
            
else
            {
                g.DrawLine(penWhite, k, 
10 , k,  110 );
            }

            
if  (j  %   4   ==   0 )
            {
                g.DrawString(list[j 
/   4 ].ToString(),  new  System.Drawing.Font( " Courier New " 12 ),  new  SolidBrush(Color.Red), k,  112 );
            }
        }
        image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
    }


    
// 将字符串数值转换为二进制字符串数值
     public   string  ConvertToBinaryString( string  buf)
    {
        
int [] temp  =   new   int [ 20 ];
        
string  binary;
        
int  val  =   0 , i  =   0 , j;

        
// 先将字符转化为十进制数
         try
        {
            val 
=  Convert.ToInt32(buf);
        }
        
catch
        {
            val 
=   0 ;
        }

        
if  (val  ==   0 )
        {
            
return  ( " 0000 " );
        }

        i 
=   0 ;
        
while  (val  !=   0 )
        {
            temp[i
++ =  val  %   2 ;
            val 
/=   2 ;
        }

        binary 
=   "" ;

        
for  (j  =   0 ; j  <=  i  -   1 ; j ++ )
        {
            binary 
+=  ( char )(temp[i  -  j  -   1 +   48 );
        }

        
if  (binary.Length  <   4 )    // 如果小于4位左边补零
        {
            
int  len  =   4   -  binary.Length;
            
string  str  =   "" ;

            
while  (len  >   0 )
            {
                str 
+=   " 0 " ;
                len
-- ;
            }

            binary 
=  str  +  binary;
        }

        
return  (binary);
    }

    
protected   void  Button1_Click( object  sender, EventArgs e)
    {
        CreateCodeLogo(TextBox1.Text);
}

 

C#实现Code39条形码在线输出(Asp.net)
CODE39码的编码规则是:

1 、 每五条线表示一个字符;

2 、 粗线表示1,细线表示0;

3 、 线条间的间隙宽的表示1,窄的表示0;

4 、 五条线加上它们之间的四条间隙就是九位二进制编码,而且这九位中必定有三位是1,所以称为39码;

5 、 条形码的首尾各一个*标识开始和结束

using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Drawing;
using  System.Data;

 

namespace  test.test.MyImage.BandCode
{
    
///   <summary>
    
///  Code39编码 
    
///   </summary>
     public   class  Code39
    {
        
private  Hashtable m_Code39  =   new  Hashtable();

        
private   byte  m_Magnify  =   0 ;
        
///   <summary>
        
///  放大倍数
        
///   </summary>
         public   byte  Magnify {  get  {  return  m_Magnify; }  set  { m_Magnify  =  value; } }

        
private   int  m_Height  =   40 ;
        
///   <summary>
        
///  图形高
        
///   </summary>
         public   int  Height {  get  {  return  m_Height; }  set  { m_Height  =  value; } }

        
private  Font m_ViewFont  =   null ;
        
///   <summary>
        
///  字体大小
        
///   </summary>
         public  Font ViewFont {  get  {  return  m_ViewFont; }  set  { m_ViewFont  =  value; } }

 

        
public  Code39()
        {

            m_Code39.Add(
" A " " 1101010010110 " );
            m_Code39.Add(
" B " " 1011010010110 " );
            m_Code39.Add(
" C " " 1101101001010 " );
            m_Code39.Add(
" D " " 1010110010110 " );
            m_Code39.Add(
" E " " 1101011001010 " );
            m_Code39.Add(
" F " " 1011011001010 " );
            m_Code39.Add(
" G " " 1010100110110 " );
            m_Code39.Add(
" H " " 1101010011010 " );
            m_Code39.Add(
" I " " 1011010011010 " );
            m_Code39.Add(
" J " " 1010110011010 " );
            m_Code39.Add(
" K " " 1101010100110 " );
            m_Code39.Add(
" L " " 1011010100110 " );
            m_Code39.Add(
" M " " 1101101010010 " );
            m_Code39.Add(
" N " " 1010110100110 " );
            m_Code39.Add(
" O " " 1101011010010 " );
            m_Code39.Add(
" P " " 1011011010010 " );
            m_Code39.Add(
" Q " " 1010101100110 " );
            m_Code39.Add(
" R " " 1101010110010 " );
            m_Code39.Add(
" S " " 1011010110010 " );
            m_Code39.Add(
" T " " 1010110110010 " );
            m_Code39.Add(
" U " " 1100101010110 " );
            m_Code39.Add(
" V " " 1001101010110 " );
            m_Code39.Add(
" W " " 1100110101010 " );
            m_Code39.Add(
" X " " 1001011010110 " );
            m_Code39.Add(
" Y " " 1100101101010 " );
            m_Code39.Add(
" Z " " 1001101101010 " );
            m_Code39.Add(
" 0 " " 1010011011010 " );
            m_Code39.Add(
" 1 " " 1101001010110 " );
            m_Code39.Add(
" 2 " " 1011001010110 " );
            m_Code39.Add(
" 3 " " 1101100101010 " );
            m_Code39.Add(
" 4 " " 1010011010110 " );
            m_Code39.Add(
" 5 " " 1101001101010 " );
            m_Code39.Add(
" 6 " " 1011001101010 " );
            m_Code39.Add(
" 7 " " 1010010110110 " );
            m_Code39.Add(
" 8 " " 1101001011010 " );
            m_Code39.Add(
" 9 " " 1011001011010 " );
            m_Code39.Add(
" + " " 1001010010010 " );
            m_Code39.Add(
" - " " 1001010110110 " );
            m_Code39.Add(
" * " " 1001011011010 " );
            m_Code39.Add(
" / " " 1001001010010 " );
            m_Code39.Add(
" % " " 1010010010010 " );
            m_Code39.Add(
" contentquot;,  " 1001001001010 " );
            m_Code39.Add( " . " " 1100101011010 " );
            m_Code39.Add(
"   " " 1001101011010 " );

        }


        
public   enum  Code39Model
        {
            
///   <summary>
            
///  基本类别 1234567890ABC
            
///   </summary>
            Code39Normal,
            
///   <summary>
            
///  全ASCII方式 +A+B 来表示小写
            
///   </summary>
            Code39FullAscII
        }
        
///   <summary>
        
///  获得条码图形
        
///   </summary>
        
///   <param name="p_Text"> 文字信息 </param>
        
///   <param name="p_Model"> 类别 </param>
        
///   <param name="p_StarChar"> 是否增加前后*号 </param>
        
///   <returns> 图形 </returns>
         public  Bitmap GetCodeImage( string  p_Text, Code39Model p_Model,  bool  p_StarChar)
        {
            
string  _ValueText  =   "" ;
            
string  _CodeText  =   "" ;
            
char [] _ValueChar  =   null ;
            
switch  (p_Model)
            {
                
case  Code39Model.Code39Normal:
                    _ValueText 
=  p_Text.ToUpper();
                    
break ;
                
default :
                    _ValueChar 
=  p_Text.ToCharArray();
                    
for  ( int  i  =   0 ; i  !=  _ValueChar.Length; i ++ )
                    {
                        
if  (( int )_ValueChar[i]  >=   97   &&  ( int )_ValueChar[i]  <=   122 )
                        {
                            _ValueText 
+=   " + "   +  _ValueChar[i].ToString().ToUpper();

                        }
                        
else
                        {
                            _ValueText 
+=  _ValueChar[i].ToString();
                        }
                    }
                    
break ;
            }


            _ValueChar 
=  _ValueText.ToCharArray();

            
if  (p_StarChar  ==   true ) _CodeText  +=  m_Code39[ " * " ];

            
for  ( int  i  =   0 ; i  !=  _ValueChar.Length; i ++ )
            {
                
if  (p_StarChar  ==   true   &&  _ValueChar[i]  ==   ' * ' throw   new  Exception( " 带有起始符号不能出现* " );

                
object  _CharCode  =  m_Code39[_ValueChar[i].ToString()];
                
if  (_CharCode  ==   null throw   new  Exception( " 不可用的字符 "   +  _ValueChar[i].ToString());
                _CodeText 
+=  _CharCode.ToString();
            }


            
if  (p_StarChar  ==   true ) _CodeText  +=  m_Code39[ " * " ];


            Bitmap _CodeBmp 
=  GetImage(_CodeText);
            GetViewImage(_CodeBmp, p_Text);
            
return  _CodeBmp;
        }

 

        
///   <summary>
        
///  绘制编码图形
        
///   </summary>
        
///   <param name="p_Text"> 编码 </param>
        
///   <returns> 图形 </returns>
         private  Bitmap GetImage( string  p_Text)
        {
            
char [] _Value  =  p_Text.ToCharArray();


            
// 宽 == 需要绘制的数量*放大倍数 + 两个字的宽   
            Bitmap _CodeImage  =   new  Bitmap(_Value.Length  *  (( int )m_Magnify  +   1 ), ( int )m_Height);
            Graphics _Garphics 
=  Graphics.FromImage(_CodeImage);

            _Garphics.FillRectangle(Brushes.White, 
new  Rectangle( 0 0 , _CodeImage.Width, _CodeImage.Height));

            
int  _LenEx  =   0 ;
            
for  ( int  i  =   0 ; i  !=  _Value.Length; i ++ )
            {
                
int  _DrawWidth  =  m_Magnify  +   1 ;
                
if  (_Value[i]  ==   ' 1 ' )
                {
                    _Garphics.FillRectangle(Brushes.Black, 
new  Rectangle(_LenEx,  0 , _DrawWidth, m_Height));

                }
                
else
                {
                    _Garphics.FillRectangle(Brushes.White, 
new  Rectangle(_LenEx,  0 , _DrawWidth, m_Height));
                }
                _LenEx 
+=  _DrawWidth;
            }

 

            _Garphics.Dispose();
            
return  _CodeImage;
        }
        
///   <summary>
        
///  绘制文字
        
///   </summary>
        
///   <param name="p_CodeImage"> 图形 </param>
        
///   <param name="p_Text"> 文字 </param>
         private   void  GetViewImage(Bitmap p_CodeImage,  string  p_Text)
        {
            
if  (m_ViewFont  ==   null return ;
            Graphics _Graphics 
=  Graphics.FromImage(p_CodeImage);
            SizeF _FontSize 
=  _Graphics.MeasureString(p_Text, m_ViewFont);

            
if  (_FontSize.Width  >  p_CodeImage.Width  ||  _FontSize.Height  >  p_CodeImage.Height  -   20 )
            {
                _Graphics.Dispose();
                
return ;
            }
            
int  _StarHeight  =  p_CodeImage.Height  -  ( int )_FontSize.Height;

            _Graphics.FillRectangle(Brushes.White, 
new  Rectangle( 0 , _StarHeight, p_CodeImage.Width, ( int )_FontSize.Height));

            
int  _StarWidth  =  (p_CodeImage.Width  -  ( int )_FontSize.Width)  /   2 ;

            _Graphics.DrawString(p_Text, m_ViewFont, Brushes.Black, _StarWidth, _StarHeight);

            _Graphics.Dispose();

        }
    }

}

 

default .aspx.cs文件

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.UI;
using  System.Drawing;
using  System.Web.UI.WebControls;

namespace  test
{
    
public   partial   class  _Default : System.Web.UI.Page
    {
        
protected   void  Page_Load( object  sender, EventArgs e)
        {
            test.MyImage.BandCode.Code39 _Code39 
=   new  test.MyImage.BandCode.Code39();

            _Code39.Height 
=   120 ;
            _Code39.Magnify 
=   1 ;
            _Code39.ViewFont 
=   new  Font( " 宋体 " 20 );

           
            System.Drawing.Image _CodeImage 
=  _Code39.GetCodeImage( " 123ABC4567890FWF " , test.MyImage.BandCode.Code39.Code39Model.Code39Normal,  true );

            System.IO.MemoryStream _Stream 
=   new  System.IO.MemoryStream();
            _CodeImage.Save(_Stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            _CodeImage.Save(
@" C:\1.jpeg " );
            _CodeImage.Save(
@" C:\1.BMP " );
            _CodeImage.Save(
@" C:\1.GIF " );

            Response.ContentType 
=   " image/jpeg " ;
            Response.Clear();
            Response.BufferOutput 
=   true ;
            Response.BinaryWrite(_Stream.GetBuffer());
            Response.Flush();
        }

    }
}

 

default .aspx文件

 
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeBehind = " Default.aspx.cs "  Inherits = " test._Default "   %>

 
< body >
    
< form id = " form1 "  runat = " server " >
    
< div >
                                          
// 输入image的那个页面
     < asp:Image ID = " Image1 "  runat = " server "  ImageUrl = " ~/Default.aspx " />
    
</ div >
    
</ form >
</ body >


你可能感兴趣的:(asp.net)