2017-09-05 14 views
3

番号50または51のIDAutomationHC39Mを生成しようとしていますが、そのバーコードが生成されますが、スキャンではその詳細番号を取得できません。IDAutomationHC39Mの2桁のバーコードを作成しますが、スキャンしません。

同じように私は14757のバーコードを作成することができます。その場合、バーコードを正しくスキャンすることができます。

2桁のバーコードをスキャンする方法を教えてください。

以下のコードで私が間違っていることはありますか?まだ通過文字列から数56とバーコードとも削除*下で発生

public void generateBarcode(int id) 
    { 
     if (plBarCode != null) 
     { 
      string barCode = ""; 

      barCode = Convert.ToString(id); 
      System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); 
      using (Bitmap bitMap = new Bitmap(barCode.Length * 70, 70)) 
      { 
       using (Graphics graphics = Graphics.FromImage(bitMap)) 
       { 
        Font oFont = new Font("IDAutomationHC39M", 30); 
        PointF point = new PointF(2f, 2f); 
        SolidBrush blackBrush = new SolidBrush(Color.Black); 
        SolidBrush whiteBrush = new SolidBrush(Color.White); 
        graphics.FillRectangle(whiteBrush, 0, 0, bitMap.Width, bitMap.Height);      
        int w = barCode.Length * 40;      
        Graphics oGraphics = Graphics.FromImage(bitMap);      
        PointF oPoint = new PointF(2f, 2f); 
        SolidBrush oBrushWrite = new SolidBrush(Color.Black); 
        SolidBrush oBrush = new SolidBrush(Color.White);   
        oGraphics.FillRectangle(oBrush, 0, 0, w, 100);      
        oGraphics.DrawString("*" + barCode + "*", oFont, oBrushWrite, oPoint); 

       } 
       using (MemoryStream ms = new MemoryStream()) 
       { 
        bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
        byte[] byteImage = ms.ToArray(); 

        Convert.ToBase64String(byteImage); 
        imgBarCode.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(byteImage); 
       } 
       plBarCode.Controls.Add(imgBarCode); 
      } 
     } 

    } 

enter image description here

+0

バーコードのための十分なスペースはありますか? DrawStringは、予想より多くの部屋を使用することがあります。 –

+0

'少量の文字をエンコードしようとすると、バーコードに最低4文字を読み取るように設定されているので、スキャナが最小量をスキャンできることを確認することをお勧めします。 http://idautomation.blogspot.nl/2011/07/top-5-reasons-why-barcode-font-wont.html ;-) – Stefan

+0

Btw、これに '*'マークが含まれているかどうかはわかりません。 – Stefan

答えて

0

この変更されたコードを使用してください。

public void generateBarcode(string id) 
{ 
       int w = id.Length * 55; 

       // Create a bitmap object of the width that we calculated and height of 100 
       Bitmap oBitmap = new Bitmap(w, 100); 
       // then create a Graphic object for the bitmap we just created. 
       Graphics oGraphics = Graphics.FromImage(oBitmap); 
       // Now create a Font object for the Barcode Font 
       // (in this case the IDAutomationHC39M) of 18 point size 
       Font oFont = new Font("IDAutomationHC39M", 18); 
       // Let's create the Point and Brushes for the barcode 
       PointF oPoint = new PointF(2f, 2f); 
       SolidBrush oBrushWrite = new SolidBrush(Color.Black); 
       SolidBrush oBrush = new SolidBrush(Color.White); 
       // Now lets create the actual barcode image 
       // with a rectangle filled with white color 
       oGraphics.FillRectangle(oBrush, 0, 0, w, 100); 
       // We have to put prefix and sufix of an asterisk (*), 
       // in order to be a valid barcode 
       oGraphics.DrawString("*" + id + "*", oFont, oBrushWrite, oPoint); 
       // Then we send the Graphics with the actual barcode 
       System.Web.UI.WebControls.Image imgBarCode = new System.Web.UI.WebControls.Image(); 

       using (System.IO.FileStream fs = System.IO.File.Open(Server.MapPath("~/img/barcodes/") + id + ".jpg", FileMode.Create)) 
       { 
        oBitmap.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg); 

       } 
       oBitmap.Dispose(); 
       imgbarcode.ImageUrl = "~/img/barcodes/"+id+".jpg"; 
} 
+0

あなたのコードは完璧に動作していますが、生成されたイメージから下のテキストを削除する方法を教えてください。このリンクを確認してください。https://stackoverflow.com/questions/46181783/generating-idautomationhc39m-barcode-is-generating-well-but-need-to-remove-value/46187309#46187309 –

1

データを返さないスキャンにあなたがそこに6つの文字を持っているように見えます。 2つの '*'文字がバーコードを開始および終了します。

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATUoCA+Jw8kAAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAAAAAAAAAAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAajkDAr7LFAwAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAAAAAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAARVICA/z3WM0AAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAAAAAAAAAAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAajkDAr7LFAwAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAAAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATUoCA+Jw8kAAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/ASL/AADeAAAA/gAAAAIAAAD+AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAh6QEAZKdo54AAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAak4DA7VAmk0AAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAUUoCA+juoggAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAATVICAxOyzrMAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAABAAAA/wAAAAEAAAD/AAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAizUEAhrxcbgAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/Af//AAAAAAAAAQAAAP8AAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAbkoDA3iPVH4AAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAAAAAAA/wAAAAEAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAASVICA62zYxMAAAAASUVORK5CYII=" width="10" height="40"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAACCAQAAADLaIVbAAAANUlEQVQIHQEqANX/AQD/AAD/AAAAAQAAAP8AAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAajUDAvnk9E4AAAAASUVORK5CYII=" width="10" height="40">

私は50を差し込むとき、私はこれを取得。あなたは「のDrawString」メソッドにバーコードの前後に追加されている2つのアスタリスクを削除する必要があるように見えます。

ここに私のイメージが追加されました。

enter image description here

+0

私は現在、バーコードを番号56で置き換え、*スキャンを削除します。私は質問を更新しました –

+0

また私はあなたのコードを使用してバーコードを生成することができますので、他の問題があれば私には完璧な答えを得ることができます –

+0

私はコードをデバッグするのに役立ちますが、 C#または.net、JavaScriptを使用しています。あなたはほとんどそれを持っています。あなたのコードがバーコードの右側を切り取っているようです。私はあなたのために私の答えにイメージを追加しました。 –

関連する問題