2012-03-14 77 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個字符的合法代碼。如果您移除護欄,掃描儀將無法讀取條形碼。