【发布时间】:2012-03-30 17:58:02
【问题描述】:
我正在使用 asp.net/c# 开发一个生成条形码的 Web 应用程序,我想知道使用条形码库是否更好,或者条形码字体就足够了。我遇到了一些示例,但是当使用条形码字体时,我发现用于生成条形码的每个代码前面都有一个星号(*)。我没有找到任何免费的条形码库。我想生成代码 39 或 93。请帮我决定
【问题讨论】:
-
条码字体在我的经验中是有问题的...
我正在使用 asp.net/c# 开发一个生成条形码的 Web 应用程序,我想知道使用条形码库是否更好,或者条形码字体就足够了。我遇到了一些示例,但是当使用条形码字体时,我发现用于生成条形码的每个代码前面都有一个星号(*)。我没有找到任何免费的条形码库。我想生成代码 39 或 93。请帮我决定
【问题讨论】:
它是一个用于生成条形码的 javascript 库。查看此question 了解其他替代方案。
【讨论】:
这是我正在使用的一种扩展方法,不需要您安装字体:
public static Image GetBarCode(this string data, int fontSizeEm)
{
data = "*" + data + "*";
Image img = null;
Graphics drawing = null;
try
{
using (var pfc = new PrivateFontCollection())
{
pfc.AddFontFile(@"{{PATH TO YOUR FONT FILE}}");
using (var myfont = new Font(pfc.Families[0], fontSizeEm))
{
img = new Bitmap(1, 1);
drawing = Graphics.FromImage(img);
var textSize = drawing.MeasureString(data, myfont);
img.Dispose();
drawing.Dispose();
img = new Bitmap((int) textSize.Width, (int) textSize.Height);
drawing = Graphics.FromImage(img);
drawing.DrawString(data, myfont, new SolidBrush(Color.Black), 0, 0);
}
drawing.Save();
}
return img;
}
catch
{
//Handle exception
return null;
}
finally
{
if(drawing!= null)
drawing.Dispose();
}
}
【讨论】:
根据我的经验,通过矩形等图形基元生成条形码的库远远优于条形码字体。原因:
有很多免费的条形码图像库。如果你没有找到任何你看起来不太好。
第 3 个条码(共 9 个)需要在条码的开始和结束处设置防护栏,以便扫描器知道代码的开始和结束位置。打印代码 3 of 9 的图例时,这些防护栏传统上显示为星号。这些星号仅供阅读图例的人使用,它们不是代码的一部分,实际上星号不是 9 个字符的合法代码 3。如果您移除防护栏,扫描仪将无法读取条形码。
【讨论】: