2012-03-14 80 views
1

我正在开发一个条形码生成web应用程序使用asp.net/c#,我想知道是否更好使用条形码库或条形码字体就够了。我遇到了一些样品,但是当使用条形码字体我发现有一个星号(*)在用于生成条码的每个代码前面,并且我找到了任何免费的条码库。我想生成代码39或93。请帮我决定.net条码生成

+0

根据我的经验,条形码字体是有问题的... – Yahia 2012-03-14 09:36:55

回答

0

这是一个扩展方法我使用的,不需要你安装的字体:

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(); 
      } 
     } 
0

在我的经验,通过类似矩形图元生成条形码是远远优于条形码字体库。理由:

  • 字体要大得多,往往是数量级,而且传输时间要长得多。这在串行连接上尤其成问题。
  • 条形码字体的产生往往不太准确,因为打印机可能会尝试对条形进行反锯齿。
  • 字体受制于样式,文字换行,字体替换以及其他使其难以控制的效果。

有很多免费的条码图像库。如果你没有发现任何你看起来不太好。

条形码3中的9需要在代码的开始和结束处加上护栏,以便扫描器知道代码的开始和结束位置。当打印代码为3或9的图例时,传统上这些防护栏显示为星号。这些星号仅用于阅读图例的人类,它们不是代码的一部分,实际上星号不是9个字符的合法代码。如果您移除护栏,扫描仪将无法读取条形码。