2017-09-05 3 views
3

Ich versuche IDAutomationHC39M für Nummer 50 oder 51 zu generieren, der Barcode für generiert wird generiert, aber beim Scannen kann ich die Detailnummer dafür nicht bekommen.Erstellen Sie 2-stelligen Barcode für IDAutomationHC39M, aber nicht Scannen

Gleichermaßen kann ich den Barcode für 14757 erstellen und in diesem Fall kann ich diesen Barcode richtig scannen.

Wie scanne ich zweistellige Barcodes?

Gibt es etwas, das ich falsch in unten Code tun.

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

    } 

die unter Barcode mit der Nummer 56 und auch * aus der Weitergabe Zeichenfolge noch Rückkehr zum Scannen nicht die Daten 56.

enter image description here

+0

Sind Sie sicher genug Platz für den Barcode? DrawString verwendet möglicherweise mehr Raum als erwartet. –

+0

'Wenn Sie versuchen, eine kleine Anzahl von Zeichen zu codieren, ist es möglicherweise eine gute Idee, sicherzustellen, dass Ihr Scanner die Mindestmenge scannen kann, da viele auf mindestens 4 Zeichen in einem Barcode eingestellt sind: http://idautomation.blogspot.nl/2011/07/top-5-reasons-why-barcode-font-wont.html ;-) – Stefan

+0

Übrigens bin ich mir nicht sicher, ob dies die '*' Markierungen beinhaltet. – Stefan

Antwort

0

Mit diesem modifizierten Code.

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

Ihr Code funktioniert einwandfrei, aber Sie können sagen, wie Sie den Text vom generierten Bild löschen.Bitte überprüfen Sie diesen Link https://stackoverflow.com/questions/46181783/generating-idautomationhc39m-barcode-is-generating-well-but-need-to-remove-value/46187309#46187309 –

1

Sieht aus wie Sie 6 Zeichen haben dort entfernt generiert. Zwei '*' Zeichen starten und beenden den Barcode.

<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">

ich das, wenn ich 50 anschließen. Sieht aus wie Sie die beiden Sternchen entfernen müssen Sie vor und nach dem Barcode in der ‚DrawString‘ Methode hinzufügen.

Hier ist mein hinzugefügtes Bild.

enter image description here

+0

habe ich derzeit versucht zu generieren Barcode mit der Nummer 56 und entfernt auch die * aber immer noch nicht scannen. Ich habe die Frage aktualisiert bitte –

+0

Auch können Sie meinen Code verwenden und den Barcode generieren, so dass wenn Sie ein anderes Problem gibt, können Sie mir die perfekte Antwort –

+0

Ich möchte Ihnen helfen, den Code debuggen, aber ich verwende nicht C# oder .net, ich benutze JavaScript. Du hast es jetzt fast schon. Es sieht so aus, als ob Ihr Code die rechte Seite des Barcodes schneidet. Ich habe meiner Antwort ein Bild hinzugefügt, damit Sie es besser sehen können. –

Verwandte Themen