Anuncios

IT Certification Category (Spanish)468x60

domingo, 28 de julio de 2013

Crear y leer códigos de barras con VintaSoftBarcode.NET SDK


El uso de códigos de barras no se limita a los supermercados o algunas tiendas. Éstos códigos están prácticamente en todas partes, e Internet no es la excepción. Estoy seguro de que muchos han visto estos códigos en anuncios, páginas de internet y en muchos otros lugares:
Con la proliferación de estas útiles figuras, llega también la necesidad de manejarlas a través de código, por ejemplo para programas para comercios. Por otra parte, también es necesario tener un medio fácil de crearlos de manera automática.

Aquí es donde entra VintaSoftBarcode.NET SDK. (página oficial: http://www.vintasoft.com), un componente .NET que permite manipular completamente códigos de barras desde los lenguajes .NET, como C# o VB.NET. Esto implica leer y crear códigos completamente personalizados, seleccionando colores, texto y estilos de códigos de barras, entre muchas otras cosas.

Pero veamos de qué se trata esto de modo práctico.

Nota: Para probar los ejemplos en código, es necesario tener instalado Visual Studio 2012. Puedes obtener una versión de prueba aquí. Yo usé una versión en español.

Iniciando

Cuando se haya instalado VintaSoftBarcode.NET (cuya instalación es una clásica “next, next, next”), si vamos a la carpeta de instalación podremos ver algunas cosas interesantes: La documentación, infaltable para los desarrolladores, algunos ejemplos para ASP.NET, C# y VB.NET y principalmente algunos demos que muestran cómo funciona el componente con una interfaz de usuario básica. Estos demos son muy útiles para mostrar rápidamente lo que se puede conseguir con VintaSoftBarcode.NET, así que les daremos un vistazo.

Barcode Writer

Para encontrar estos demos, ve a <carpeta de instalacion>\Bin. Ahí encontrarás ejemplos para Silverlight y para diferentes versiones de .NET Framework. Yo revisaré los de la carpeta v4.0:
Aquí, elegí la carpeta de AnyCPU. Adentro, probé WpfSimpleBarcodeWriterDemo.exe:
En la versión que estoy utilizando, al abrir este demo hay un aviso de evaluación. Sólo hay que hacer click en “Evaluate” para continuar.
Ya adentro, a modo de ejemplo, creé un código de barras con las siguientes características:

  • Tipo de código: QR.
  • Valor: 20041889
  • Color frontal (es decir, de la figura en sí): Verde
  • Color de Fondo: Marfil
Para lograr esto, solamente configuré las opciones necesarias como sigue. También se puede observar que el resultado es mostrado inmediatamente:
Para finalizar, grabaremos el resultado en un archivo .png. Para esto, hice clic en File>Save As..., y elegí una carpeta para guardar la imagen.

Barcode Reader

Ahora para leer el código que acababa de crear, usé un lector de la misma carpeta que el anterior demo: WpfSimpleBarcodeReaderDemo.exe.
Ahora, quiero que el demo lea el código que acabo de crear con el Barcode Writer. Para abrir una imagen previamente creada, haz clic en Open Image..., y busca la imagen deseada. Ahora, hay que especificar el tipo de código a leerse. En este caso, se trata de una imagen en 2d QR, así que elige esa opción en la parte inferior de la ventana:
Con esto, el demo está listo para leer el código. Haz clic en Read Barcodes. El resultado de la lectura se muestra en la parte superior derecha:
Estos demos sirven para dar una primera impresión de lo que se puede lograr con este componente. Dependerá de la creatividad de los desarrolladores el uso que se le pueda dar (que desde ya es muy amplio), pero estos demos se muestran ya como un ejemplo bastante completo de la funcionalidad básica.

Pero pasemos al centro del asunto. El componente usado en código.

Usando VintaSoftBarcode.NET en código

Para mis ejemplos decidí usar C# por puro gusto personal. Los primero que haremos es crear un nuevo proyecto en consola. Para eso, haz clic en Nuevo Proyecto... y elige Aplicación de Consola. Yo le puse de nombre al proyecto BarCode.
Una vez dentro del nuevo proyecto, crearemos la misma imagen que creamos en el demo. En verdad no es nada difícil: con algunas nociones básica de programación es posible hacerlo. Este ejemplo será muy sencillo, con la finalidad de mostrar la facilidad de uso de VintaSoftBarcode.NET.

Algunas cosas antes de empezar. Primero necesitamos agregar la referencia de VintaSoftBarcode.NET para poder usarlo en el código. Para esto, abre el Explorador de soluciones, da un clic derecho en References>Agregar referencia...
Ahora, haz clic en Examinar. Navega a la carpeta donde VintaSoftBarcode.NET está instalado, a la carpeta donde están los demos que mostré anteriormente, y elige Vintasoft.Barcode.dll. Después, presiona Aceptar.
Luego de eso, deberías ver la nueva referencia así:
Con eso, ya se puede importar lo necesario para usar este componente, pero aún es necesario importar una referencia más, para manejar colores. De nuevo, haz clic derecho en References>Agregar referencia.

En el diálog que se abre, escribe “drawing” en la caja de texto arriba a la derecha, y elige System.Drawing. Luego, haz clic en Aceptar. Sólo por si acaso, este ensamblado está añadido por defecto en otros tipos de proyecto, como Windows Forms.
Ahora, el Explorador de soluciones debería verse así, con los ensamblado añadidos:
Ya con eso, se puede escribir un código muy simple pero efectivo. A continuación lo muestro completo. Los comentarios muestran cada paso que dí para escribirlo:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Para usar los ensamblados:
using Vintasoft.Barcode;
using System.Drawing;

namespace ConsoleApplication3
{
   class Program
   {
       static void Main(string[] args)
       {
           // Crear objeto BarcodeWiter
           BarcodeWriter escribir = new BarcodeWriter();

           /*Elegir las opciones*/

           //Tipo: QR
           escribir.Settings.Barcode = BarcodeType.QR;
           //Valor: 20041889
           escribir.Settings.Value = "20041889";

           //Crear los colores
           Color marfil = Color.Ivory;
           Color verde = Color.DarkGreen;
           
           //Establecer los colores en las opciones
           escribir.Settings.ForeColor = verde;
           escribir.Settings.BackColor = marfil;

           //Mandar el código a una imagen
           Image codigoQR = escribir.GetBarcodeAsBitmap();

           //Grabar la imagen. La arroba al principio del path es para que
           //no se tomen como caracteres especiales los "\"
           codigoQR.Save(@"C:\codigoQR\codigoQR.png");
       }
   }

}

Una vez que se tenga eso, simplemente hay que hacer clic en Iniciar y el código se compilará. No pasa nada extraordinario, solamente aparece una pantalla negra unos segundos y ya...pero al ir al path indicado en la línea:

codigoQR.Save(@"C:\codigoQR\codigoQR.png");

Se puede ver que se creó una imagen:
Y es exactamente el mismo código que creamos con el demo. Interesante, ¿verdad? Así, creamos un código de barras “a mano”.

Para leerlo, a la manera del segundo demo, basta con usar el siguiente código (también para proyecto de consola). En este caso, este código solamente leerá la información básica de la imagen, y la mostrará en la consola.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//Para usar los ensamblados:
using Vintasoft.Barcode;
using System.Drawing;

namespace barcodeReader
{
   class Program
   {
       static void Main(string[] args)
       {
           Image codigo = Image.FromFile(@"C:\codigoQR\codigoQR.png");

           // Crear objeto BarcodeWiter
           BarcodeReader leer = new BarcodeReader();

           //Epecificar tipo de código a leerse
           leer.Settings.ScanBarcodeTypes = BarcodeType.QR;

           //Aquí se lee el código y el resultado se almacena en "info"
           IBarcodeInfo[] info = leer.ReadBarcodes(codigo);

           //Aquí pongo el resultado en una string y la imprimo en la consola
           string resultado = info.Length.ToString();

           for (int i = 0; i < info.Length; i++)
           {
               resultado += info[i].ToString() + Environment.NewLine;
           }
           Console.Write(resultado);
           Console.ReadKey();
       }
   }

}

Como cabe esperar, VintaSoftBarcode.NET viene acompañado de una documentación detallada, ejemplos y más, de modo que cualquiera puede comenzar a programar comenzando desde lo más sencillo, hasta llegar a programas elaborados y eminentemente útiles. Una joya para desarrolladores independientes que trabajen para sectores como el comercio.

La versión de prueba no tiene límite de tiempo, así que les recomiendo que la bajen de aquí para comenzar a probarla. Una adición muy valiosa para los entornos .NET.

People who read this post also read :