Principales respuestas
Codigo de Barras VB .net (2008)

Pregunta
-
Hola comunidad, como lo dice el titulo, necesito generar código de barras por una cierta cantidad de caracteres...
He estado indagando un poco, pero en algunos foros no logré comprender bien. Intente diseñarlo, pero simplemente no me funciono...
En lo posible, si me pueden ayudar con un código de barras que sea legible para cualquier lector de código, pero mejor sería si me puedan ayudar con el código GS1-128... Cualquier de los dos sería de gran ayuda...
Saludos!! y atento a sus comentarios!!martes, 22 de septiembre de 2015 0:21
Respuestas
-
Hola Cravanal yo soy un poco novato en programacion pero tambien tuve que hacer codigos de barras para imprimirlas en etiquetas, en mi caso los codigos los tenia que extraer de un DataGridView y tube que hacer uso de una pagina web pero alfinal salio como queria
para este ejemplo necesita un DataGridView1 con dos columnas la primera para los codigos y la segunda para una descripcion, un Button1 y un PictureBox1 en modo autozise
Public Class Form1 'En este programa lo que hago es descargar un codigo de barras como imagen haciendo uso de una pagina web, en este caso los codigos estan en un DataGridView1 Dim rutatemporal As String = "C:\Users\" & Environment.UserName & "\Pictures\" 'la funcion arreglacadena() es para poder guardar la imagen con el codigo de barras con el mismo combre del codigo, y en caso de que el nombre contenga caracteres no permitidos por windows los reemplazo por "" o por un caracter que se le parezca 'la variable "i" se la mando a la funcion para detectar en que fila se encuentra el codigo (la columna siempre es 0 por que es la columna de los codigos) Function arreglacadena(ByVal i As Integer) As String Dim cadena As String cadena = DataGridView1.Item(0, i).Value.ToString.Replace(" ", "_") cadena = cadena.Replace("/", "%") cadena = cadena.Replace("\", "") cadena = cadena.Replace("*", "x") cadena = cadena.Replace(":", "") cadena = cadena.Replace("?", "") cadena = cadena.Replace("""", "") cadena = cadena.Replace("<", "") cadena = cadena.Replace(">", "") cadena = cadena.Replace("|", "") Return cadena End Function 'la funcion verificardirectorio() la uso para crear una carpeta en donde guardar las imagenes con los codigos de barras, uso una subcarpeta para guardar una imagen temporal para poder manipularla y despues guardarla en la carpeta principal 'la carpeta principal donde guardo todas las imagenes con los codigos se llama etiquetas la cual esta en C:\Users\Usuario\Pictures\ Sub verificardirectorio() If Directory.Exists(rutatemporal & "Etiquetas") Then If Directory.Exists(rutatemporal & "Etiquetas\Temporal") Then rutatemporal = rutatemporal & "Etiquetas\Temporal\" Else Directory.CreateDirectory(rutatemporal & "Etiquetas\Temporal") rutatemporal = rutatemporal & "Etiquetas\Temporal\" End If Else Directory.CreateDirectory(rutatemporal & "Etiquetas") Directory.CreateDirectory(rutatemporal & "Etiquetas\Temporal") rutatemporal = rutatemporal & "Etiquetas\Temporal\" End If End Sub Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click verificardirectorio() ' verifico que la carpeta exista For i As Integer = 0 To DataGridView1.RowCount - 1 'recorro las filas del DataGridView1 If System.IO.File.Exists(rutatemporal.Replace("Temporal\", "") & arreglacadena(i) & ".PNG") = False Then 'Verifico que la imagen con el codigo de barras aun no exista Descargar("http://www.barcodesinc.com/generator/image.php?code=" & DataGridView1.Item(0, i).Value.ToString.Replace(" ", "%20") & "&style=190&type=C128B&width=550&height=85&xres=2&font=5", i) 'llamo a la funcion descargar para descargar la imagen con el codigo de barras concatenando el codigo despues de http://www.barcodesinc.com/generator/image.php?code= y reemplazando los espacios por "%20" ' y concatenandole despues la configuracion del codigo de barras de la pagina la siguiente cadena &style=190&type=C128B&width=550&height=85&xres=2&font=5. 'A la funcion tambien le mando el indice de la fila en la cual me encuentro End If Next End Sub Sub Descargar(ByVal Url As String, ByVal i As Integer) Dim imgnm As String = arreglacadena(i) & ".PNG" 'obtengo el nombre que sera de la imagen de la funcion arreglacadena() enviandole la fila en la que se encuentra el ciclo retorno: If System.IO.File.Exists(rutatemporal & imgnm) = False Then 'compruebo que la imagen temporal no exista, si existe entonces la elimino y vuelvo a retorno: para volver a comprobar My.Computer.Network.DownloadFile(Url, rutatemporal & imgnm) 'Descargamos el archivo de imagen al disco para después cargarla. _ El Primer parámetro es la url y el segundo es el path donde se guarda, la variable ruta temporal es la ruta de la carpeta e imgnm es el nombre que tendrá la imagen Dim fs As System.IO.FileStream fs = New System.IO.FileStream(rutatemporal & imgnm, IO.FileMode.Open, IO.FileAccess.Read) 'leo la imagen con el codigo de barras que acabo de descargar y la pongo en un picturebox1 PictureBox1.Image = System.Drawing.Image.FromStream(fs) ' si el pb no contiene una imagen, abandonamos la rutina If PictureBox1.Image Is Nothing Then Return 'pongo la imagen en un picturebox1 para poder editarla ya que la imagen que descargamos no contiene una descripcion todo esto te lo puedes ahorrar si no necesitas un descripcion, yo por ejemplo queria que mi codigo de barras saliera mas o menos asi, por ejemplo en la parte de arriba pongo la descripcion "CocaCola" en la parte de en medio el codigo de barras |||||, y en la parte de abajo el codigo alfanumerico 00017F ' vamos a definir la tipografía y la altura de la línea de texto Dim LetraTexto As Font = New Font(FontFamily.GenericMonospace, 13, FontStyle.Bold) Dim alturaTexto = LetraTexto.Height ' creamos una nueva imagen, e incorporamos la altura del texto a sus dimensiones Dim img As New Bitmap(PictureBox1.Image.Width, PictureBox1.Image.Height + alturaTexto) ' asociamos la imagen a un memoryDC. Este dispositivo crea un DIB en donde vamos a ' a pintar todos los elementos de la nueva imagen Dim g As Graphics = Graphics.FromImage(img) ' inicializamos un RectangleF donde colocaremos el texto Dim r As New RectangleF(0, 0, img.Width, alturaTexto) ' pintamos el rectángulo de color blanco g.FillRectangle(Brushes.White, r) ' y escribimos es texto centrado (el texto se extrae de la segunda columna del Datagridview1) g.DrawString(DataGridView1.Item(1, i).Value, LetraTexto, Brushes.Black, r, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) ' copiamos el codigo de barras original justo debajo del rectángulo con el texto con la descripcion g.DrawImage(PictureBox1.Image, 0, alturaTexto) ' forzamos la liberación del mdc g.Dispose() ' reemplazamos la imagen en el picturebox PictureBox1.Image = img ' guardamos la nueva imagen pero ya no en la subcarpeta temporal, si no en la carpeta superior "Etiquetas" PictureBox1.Image.Save(rutatemporal.Replace("Temporal\", "") & imgnm, Drawing.Imaging.ImageFormat.Png) Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Critical) End Try PictureBox1.Image = Nothing img.Dispose() img = Nothing g = Nothing fs.Close() My.Computer.FileSystem.DeleteFile(rutatemporal & imgnm)'elimino la imagen temporal Else My.Computer.FileSystem.DeleteFile(rutatemporal & imgnm)' aqui es donde elimino la imagen temporal en caso de que exista y vuelvo a hacer la comprobacion GoTo retorno 'MsgBox("El archivo " & rutatemporal & imgnm & " ya Existe") End If End Sub End Class
espero te sirva de algo
- Propuesto como respuesta Karen MalagónModerator miércoles, 23 de septiembre de 2015 21:02
- Marcado como respuesta Karen MalagónModerator jueves, 24 de septiembre de 2015 18:12
martes, 22 de septiembre de 2015 18:24