Códigos de barras y QR en aplicaciones C# y VB.NET

Leer y escribir códigos de barras en C# y todos los demás lenguajes .NET es fácil utilizando la biblioteca de software Iron Barcode de Iron Software.

Instalar IronBarcode

El primer paso del viaje será instalar Iron Barcode, lo que puede conseguirse utilizando nuestro paquete NuGet o mediante descargar la DLL de las clases Iron Barcode se pueden encontrar en el IronBarcode espacio de nombres.

La forma más sencilla de instalar IronBarcode es utilizando el gestor de paquetes NuGet para Visual-Studio: El nombre del paquete es "Código de barras".

Install-Package BarCode

https://www.nuget.org/packages/Barcode/

Lectura de un código de barras o QR

Leer un código de barras con Iron Barcode sólo requiere unas pocas líneas de código.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
    foreach (BarcodeResult result in results)
    {
        Console.WriteLine(result.Text);
    }
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("QuickStart.jpg")
If results IsNot Nothing Then
	For Each result As BarcodeResult In results
		Console.WriteLine(result.Text)
	Next result
End If
VB   C#

Para mejorar la velocidad y la precisión de lectura de los códigos de barras, podemos especificar un formato de código de barras concreto(o formatos) para que Iron Barcode no tenga que probar todos los tipos de códigos de barras conocidos. También podemos elegir una región de cultivo o una zona específica de una imagen en la que buscar, si se conoce.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
using IronBarCode;

BarcodeReaderOptions myOptionsExample = new BarcodeReaderOptions()
{
    ExpectMultipleBarcodes = false,
    ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
    CropArea = new System.Drawing.Rectangle(100, 200, 300, 400),
};

BarcodeResults result = BarcodeReader.Read("QuickStart.jpg", myOptionsExample);
if (result != null)
{
    Console.WriteLine(result.First().Text);
}
Imports IronBarCode

Private myOptionsExample As New BarcodeReaderOptions() With {
	.ExpectMultipleBarcodes = False,
	.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
	.CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)
}

Private result As BarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)
If result IsNot Nothing Then
	Console.WriteLine(result.First().Text)
End If
VB   C#

También podemos optar por escanear varios códigos de barras en un solo escaneado.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
using IronBarCode;

BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");

// Recorrer los resultados
foreach (BarcodeResult result in results)
{
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte [] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}
Imports IronBarCode

Private results As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")

' Recorrer los resultados
For Each result As BarcodeResult In results
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result
VB   C#

También podemos utilizar Iron Barcode para leer códigos de barras de una o varias páginas de documentos PDF o TIFF multipágina.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
using IronBarCode;

BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");

// Recorrer los resultados
foreach (BarcodeResult result in pagedResults)
{
    int pageNumber = result.PageNumber;
    string value = result.Value;
    Bitmap img = result.BarcodeImage;
    BarcodeEncoding barcodeType = result.BarcodeType;
    byte [] binary = result.BinaryValue;
    Console.WriteLine(result.Value);
}

// o de un escaneado TIFF de varias páginas con corrección de imagen:
BarcodeResults multiFrameResults = BarcodeReader.Read(InputImage: "Multiframe.tiff", new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128,
    Multithreaded = false,
    RemoveFalsePositive = false,
    ImageFilters = null
});
Imports IronBarCode

Private pagedResults As BarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")

' Recorrer los resultados
For Each result As BarcodeResult In pagedResults
	Dim pageNumber As Integer = result.PageNumber
	Dim value As String = result.Value
	Dim img As Bitmap = result.BarcodeImage
	Dim barcodeType As BarcodeEncoding = result.BarcodeType
	Dim binary() As Byte = result.BinaryValue
	Console.WriteLine(result.Value)
Next result

' o de un escaneado TIFF de varias páginas con corrección de imagen:
Dim multiFrameResults As BarcodeResults = BarcodeReader.Read(InputImage:= "Multiframe.tiff", New BarcodeReaderOptions With {
	.Speed = ReadingSpeed.Detailed,
	.ExpectMultipleBarcodes = True,
	.ExpectBarcodeTypes = BarcodeEncoding.Code128,
	.Multithreaded = False,
	.RemoveFalsePositive = False,
	.ImageFilters = Nothing
})
VB   C#

Escribir códigos de barras

Para crear o escribir códigos de barras utilizando Iron Barcode, utilizamos la clase BarcodeWriter. Con BarcodeWriter, escribir códigos de barras es extremadamente fácil. Simplemente especificamos el formato del código de barras y el valor que deseamos expresar, y creará una imagen que podrá ser exportada como un objeto System.Drawing.Image o guardada en un fichero.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Códigos de barras

La representación visual de un código de barras puede manipularse muy fácilmente con Iron Barcode. La salida de cada operación BarcodeWriter es un objeto de código de barras generado. Este objeto de código de barras generado tiene una API Fluent, que permite establecer la configuración gráfica del código de barras en una sola línea de código, de forma similar a Linq.

Las funciones más populares para estilizar los códigos de barras incluyen cambiar el tamaño de los códigos de barras, establecer márgenes, cambiar los colores de fondo, cambiar los colores de los códigos de barras y verificar que el código de barras de salida siga siendo legible.

De forma similar, también podemos añadir anotaciones como texto a un código de barras en el tipo de letra que queramos, o colocar el valor del código de barras muy fácilmente debajo o encima del código de barras.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-6.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsImage("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SaveAsImage("myBarcode.png")
VB   C#

Exportar códigos de barras como HTML

El objeto de código de barras generado también dispone de una práctica función para exportar HTML a partir de un código de barras generado. Puede exportar un código de barras como documento HTML independiente sin activos externos, como etiqueta HTML independiente o como URI de datos.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
using IronBarCode;

GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.AddAnnotationTextAboveBarcode("Product URL:");
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SetMargins(100);
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple);

// Admite los principales formatos de imagen, así como PDF y HTML
myBarcode.SaveAsPng("myBarcode.png");
Imports IronBarCode

Private myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.AddAnnotationTextAboveBarcode("Product URL:")
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.SetMargins(100)
myBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Purple)

' Admite los principales formatos de imagen, así como PDF y HTML
myBarcode.SaveAsPng("myBarcode.png")
VB   C#

Generación de códigos QR

Al generar códigos QR utilizando Iron Barcode, podemos optar por utilizar la clase QR Code Writer en lugar de la clase BarcodeWriter. Esta clase ofrece algunas características nuevas e interesantes para la escritura de códigos QR. Nos permite establecer el nivel de corrección de errores del QR, permitiéndole decidir un equilibrio entre el tamaño de su código QR y su facilidad de lectura.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
using IronBarCode;

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Imports IronBarCode

QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf")
VB   C#

Iron Barcode también permite estilizar los códigos QR, por ejemplo, colocando un logotipo y ajustándolo a la cuadrícula en el centro exacto de la imagen. También puede colorearse para que coincida con una determinada marca o identidad gráfica.

:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
using IronBarCode;
using IronSoftware.Drawing;

QRCodeLogo qrCodeLogo = new QRCodeLogo("visual-studio-logo.png");
GeneratedBarcode myQRCodeWithLogo = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo);
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf");
Imports IronBarCode
Imports IronSoftware.Drawing

Private qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")
Private myQRCodeWithLogo As GeneratedBarcode = QRCodeWriter.CreateQrCodeWithLogo("https://ironsoftware.com/csharp/barcode/", qrCodeLogo)
myQRCodeWithLogo.ChangeBarCodeColor(Color.DarkGreen).SaveAsPdf("MyQRWithLogo.pdf")
VB   C#

Formatos de códigos de barras compatibles

Iron Barcode admite un gran número de formatos de códigos de barras de uso común:

  • Códigos QR, incluidos códigos QR decorados y de marca con logotipos y colores
  • Códigos de barras multiformato, como Aztec, Data Matrix, CODE 93 y CODE 128
  • Códigos de barras RSS Expanded Databar, UPS MaxiCode y USPS IMb OneCode
  • Códigos de barras lineales apilados como RSS-14 y PDF-417
  • Formatos de códigos de barras numéricos convencionales como UPCA, UPCE, EAN-8, EAN-13, Codabar, ITF, MSI y Plessey
:path=/static-assets/barcode/content-code-examples/get-started/get-started-10.cs
using IronBarCode;

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);
myBarcode.SaveAsImage("myBarcode.png");
myBarcode.SaveAsGif("myBarcode.gif");
myBarcode.SaveAsHtmlFile("myBarcode.html");
myBarcode.SaveAsJpeg("myBarcode.jpg");
myBarcode.SaveAsPdf("myBarcode.Pdf");
myBarcode.SaveAsPng("myBarcode.png");
myBarcode.SaveAsTiff("myBarcode.tiff");
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp");
Image myBarcodeImage = myBarcode.Image;
Bitmap myBarcodeBitmap = myBarcode.ToBitmap();
string dataUrl = myBarcode.ToDataUrl();
string imgTagForHtml = myBarcode.ToHtmlTag();
byte [] pngBytes = myBarcode.ToPngBinaryData();

// La salida de imagen de código de barras binario también funciona para GIF, JPEG, PDF, PNG, BMP y TIFF.
using (System.IO.Stream pdfStream = myBarcode.ToPdfStream())
{
    // El flujo de salida de imágenes de códigos de barras también funciona para GIF, JPEG, PDF, PNG, BMP y TIFF.
}
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50);
Imports IronBarCode

Private myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128)
myBarcode.SaveAsImage("myBarcode.png")
myBarcode.SaveAsGif("myBarcode.gif")
myBarcode.SaveAsHtmlFile("myBarcode.html")
myBarcode.SaveAsJpeg("myBarcode.jpg")
myBarcode.SaveAsPdf("myBarcode.Pdf")
myBarcode.SaveAsPng("myBarcode.png")
myBarcode.SaveAsTiff("myBarcode.tiff")
myBarcode.SaveAsWindowsBitmap("myBarcode.bmp")
Dim myBarcodeImage As Image = myBarcode.Image
Dim myBarcodeBitmap As Bitmap = myBarcode.ToBitmap()
Dim dataUrl As String = myBarcode.ToDataUrl()
Dim imgTagForHtml As String = myBarcode.ToHtmlTag()
Dim pngBytes() As Byte = myBarcode.ToPngBinaryData()

' La salida de imagen de código de barras binario también funciona para GIF, JPEG, PDF, PNG, BMP y TIFF.
Using pdfStream As System.IO.Stream = myBarcode.ToPdfStream()
	' El flujo de salida de imágenes de códigos de barras también funciona para GIF, JPEG, PDF, PNG, BMP y TIFF.
End Using
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
VB   C#

¿Por qué elegir Iron Barcode?

Iron Barcode cuenta con una API amigable para que los desarrolladores lean y escriban códigos de barras para .NET, que optimiza la precisión y una baja tasa de error en los casos de uso del mundo real.

La clase BarcodeWriter, por ejemplo, validará y corregirá automáticamente las "sumas de comprobación" de los códigos de barras UPCA y UPCE. También pondrá a cero los números que sean demasiado cortos para un formato numérico específico. Si sus datos no son apropiados para el formato de datos especificado, Iron Barcode indicará al desarrollador un formato de código de barras más apropiado que pueda utilizar.

Iron Barcode brilla en el ámbito de la lectura de códigos de barras cuando el código de barras se ha escaneado o se ha leído a partir de una imagen fotográfica. En otras palabras, la imagen no es gráficamente perfecta y no es simplemente una captura de pantalla generada por una máquina.

Iron Barcode incluye corrección automática de rotación y perspectiva, corrección de ruido digital y puede detectar automáticamente el tipo de código de barras codificado en una imagen.

Avanzar

Para obtener más de Iron Barcode, le animamos a leer los tutoriales dentro de esta sección de documentación, a visitarnos en GitHub, y leer el Referencia API .NET en formato MSDN.