Principales respuestas
Generar una etiqueta con Código de barras al presionar un botón

Pregunta
-
Necesito ayuda como puedo imprimir automáticamente una etiqueta con código de barras al presionar un botón
es decir mi sistema manda a guardar datos a mi base y con una consulta regreso los mismos datos con la primary key que es la que usare como clave para el código de barras pero no tengo la menor mínima idea de como generar la etiquetaviernes, 8 de noviembre de 2019 22:58
Respuestas
-
Sí, es complicado, por eso existen los profesionales programadores, y hasta cobran...je. Bueno de echo estuve un buen tiempo recreando tu escenario y te dejo un ejemplo, solo un ejemplo deberás adecuar las dimensiones ya que, por lo visto, son mucho más pequeñas que mi ejemplo, supongo que utilizarás rollo de impresión autoadhesiva. Ok si viste el ejemplo de la otra consulta ya sabrás como ejecutar PrintDocument.Print() entonces vamos a la creación de la impresión. Los datos vienen de una base de datos y alimentan un DataGridView mediante DataSource. Entonces comenzamos a imprimir los datos de cada columna iterando el DGV ej:
int A = 0; private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int Pos = 50; int Row = 10; for (int i = A; i < Dgv.Rows.Count - 1; i++) { //................Código de barras..................... label1.Text = Convert.ToString(Dgv[0, i].Value); String PathTTF = @"C:\Users\Dirección\Documents\Codigode barras\fre3of9x.ttf"; PrivateFontCollection PFC = new PrivateFontCollection(); PFC.AddFontFile(PathTTF); FontFamily NFont = PFC.Families[0]; Font Ft = new Font(NFont, 75); label1.Font = Ft; //................fin código de barras ................. //-----------si el valór Row supera los 1130 (según tamaño de hoja) genera una nueva página----------- if (Row >= 1130) { e.HasMorePages = true; Row = 10; A = i; //mantiene el valor de la fila DGV break; } //...................................................................................... //---------------------Impresión de los datos------------------------------------------- DateTime dat = Convert.ToDateTime(Dgv[6, i].Value); Rectangle rect = new Rectangle(Pos, Row, 600, 370); Rectangle rect2 = new Rectangle(Pos + 4, Row + 4, 592, 362); e.Graphics.DrawImage(pictureBox1.Image, Pos + 5, Row + 5, 60, 60); e.Graphics.DrawRectangle(Pens.Black, rect); e.Graphics.DrawRectangle(Pens.Black, rect2); e.Graphics.DrawString("Fecha/Date: " + dat.ToShortDateString(), new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 70); e.Graphics.DrawString("Hora/Time: " + dat.ToShortTimeString(), new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 400, Row + 70); e.Graphics.DrawString("Código: " + Dgv[5, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 100); e.Graphics.DrawString("Nº Pedido: " + Dgv[2, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 140); e.Graphics.DrawString("Cliente: " + Dgv[1, i].Value, new Font("Verdana", 20, FontStyle.Regular), Brushes.Black, Pos + 10, Row + 180); e.Graphics.DrawString("Máquina: " + Dgv[3, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 400, Row + 100); e.Graphics.DrawString("Operador: " + Dgv[4, i].Value, new Font("Verdana", 12, FontStyle.Regular), Brushes.Black, Pos + 380, Row + 190); e.Graphics.DrawString(label1.Text, Ft, Brushes.Black, Pos + 170, Row + 240); e.Graphics.DrawString( Convert.ToString(Dgv[0, i].Value), new Font("Verdana", 11, FontStyle.Bold), Brushes.Black, Pos + 260, Row + 330); //............................................................................ //.................volvemos a recorrer DGV-------------------------- Row += 375; } } private void button1_Click(object sender, EventArgs e) { System.Drawing.Printing.PaperSize Hoja; Hoja = new System.Drawing.Printing.PaperSize("Oficio", 850, 1400); //PrintDocument1.DefaultPageSettings.PaperSize = Hoja printDocument1.Print(); }
Bien el resultado es
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 23:27
- Editado Marcelo PF jueves, 14 de noviembre de 2019 4:51
- Marcado como respuesta Kevin Alcantara jueves, 14 de noviembre de 2019 14:46
miércoles, 13 de noviembre de 2019 21:20
Todas las respuestas
-
Hola Kevin, fijate si esta consulta te ayuda
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Propuesto como respuesta Pablo RubioModerator lunes, 11 de noviembre de 2019 15:33
viernes, 8 de noviembre de 2019 23:19 -
hola es similar a lo que quisiera hacer
bueno solo que en este caso
necesito poner mas datos en mi etiqueta
necesito hacer algo como la imagen de abajo, los datos me los traigo desde SQLServer pero no tengo idea de como ponerlos para que me genere algo similar
martes, 12 de noviembre de 2019 20:00 -
hola
existen fuentes de texto para generar los codigo
alli puedes decargar el Code39 o el 128
pero dependiendo que codigo necesites busca la fuente de texto
saludos
Leandro Tuttini
Blog
MVP Profile
Buenos Aires
Argentina- Propuesto como respuesta Pablo RubioModerator martes, 12 de noviembre de 2019 23:32
martes, 12 de noviembre de 2019 21:21 -
bueno esque mi idea es que esos datos los consulto y en base a la primary key generar el codigo de barras ya que es único y con el lector de barras me voy a traer esos datos con una simple consulta
pero el problema es que no tengo la menor mínima idea de como generar una etiqueta como la de la imagen ese es mi objetivo
como hacer una etiqueta sin usar un reporteador ya que solo sera una simple etiqueta, intente usar PrintDocument
pero no encontré mucha información de como dar un diseño por ejemplo texto alineado a la izquierda, texto alineado a la derecha, el codigo de barras centrado etc. eso es a lo que quisiera llegar
martes, 12 de noviembre de 2019 21:37 -
Sí, es complicado, por eso existen los profesionales programadores, y hasta cobran...je. Bueno de echo estuve un buen tiempo recreando tu escenario y te dejo un ejemplo, solo un ejemplo deberás adecuar las dimensiones ya que, por lo visto, son mucho más pequeñas que mi ejemplo, supongo que utilizarás rollo de impresión autoadhesiva. Ok si viste el ejemplo de la otra consulta ya sabrás como ejecutar PrintDocument.Print() entonces vamos a la creación de la impresión. Los datos vienen de una base de datos y alimentan un DataGridView mediante DataSource. Entonces comenzamos a imprimir los datos de cada columna iterando el DGV ej:
int A = 0; private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { int Pos = 50; int Row = 10; for (int i = A; i < Dgv.Rows.Count - 1; i++) { //................Código de barras..................... label1.Text = Convert.ToString(Dgv[0, i].Value); String PathTTF = @"C:\Users\Dirección\Documents\Codigode barras\fre3of9x.ttf"; PrivateFontCollection PFC = new PrivateFontCollection(); PFC.AddFontFile(PathTTF); FontFamily NFont = PFC.Families[0]; Font Ft = new Font(NFont, 75); label1.Font = Ft; //................fin código de barras ................. //-----------si el valór Row supera los 1130 (según tamaño de hoja) genera una nueva página----------- if (Row >= 1130) { e.HasMorePages = true; Row = 10; A = i; //mantiene el valor de la fila DGV break; } //...................................................................................... //---------------------Impresión de los datos------------------------------------------- DateTime dat = Convert.ToDateTime(Dgv[6, i].Value); Rectangle rect = new Rectangle(Pos, Row, 600, 370); Rectangle rect2 = new Rectangle(Pos + 4, Row + 4, 592, 362); e.Graphics.DrawImage(pictureBox1.Image, Pos + 5, Row + 5, 60, 60); e.Graphics.DrawRectangle(Pens.Black, rect); e.Graphics.DrawRectangle(Pens.Black, rect2); e.Graphics.DrawString("Fecha/Date: " + dat.ToShortDateString(), new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 70); e.Graphics.DrawString("Hora/Time: " + dat.ToShortTimeString(), new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 400, Row + 70); e.Graphics.DrawString("Código: " + Dgv[5, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 100); e.Graphics.DrawString("Nº Pedido: " + Dgv[2, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 70, Row + 140); e.Graphics.DrawString("Cliente: " + Dgv[1, i].Value, new Font("Verdana", 20, FontStyle.Regular), Brushes.Black, Pos + 10, Row + 180); e.Graphics.DrawString("Máquina: " + Dgv[3, i].Value, new Font("Verdana", 10, FontStyle.Bold), Brushes.Black, Pos + 400, Row + 100); e.Graphics.DrawString("Operador: " + Dgv[4, i].Value, new Font("Verdana", 12, FontStyle.Regular), Brushes.Black, Pos + 380, Row + 190); e.Graphics.DrawString(label1.Text, Ft, Brushes.Black, Pos + 170, Row + 240); e.Graphics.DrawString( Convert.ToString(Dgv[0, i].Value), new Font("Verdana", 11, FontStyle.Bold), Brushes.Black, Pos + 260, Row + 330); //............................................................................ //.................volvemos a recorrer DGV-------------------------- Row += 375; } } private void button1_Click(object sender, EventArgs e) { System.Drawing.Printing.PaperSize Hoja; Hoja = new System.Drawing.Printing.PaperSize("Oficio", 850, 1400); //PrintDocument1.DefaultPageSettings.PaperSize = Hoja printDocument1.Print(); }
Bien el resultado es
ARA San Juan 44 HEROES ‗‗‗‗|||||‗‗‗‗‗
- Propuesto como respuesta Pablo RubioModerator miércoles, 13 de noviembre de 2019 23:27
- Editado Marcelo PF jueves, 14 de noviembre de 2019 4:51
- Marcado como respuesta Kevin Alcantara jueves, 14 de noviembre de 2019 14:46
miércoles, 13 de noviembre de 2019 21:20 -
Muchas gracias era exactamente lo que buscaba solo que sin el DataGridView, pero es lo de menos
voy a probar, Gracias amigo :Djueves, 14 de noviembre de 2019 14:46