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
>