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
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
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");
// Loop through the results
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")
' Loop through the results
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
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");
// Loop through the results
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);
}
// or from a multi-page TIFF scan with image correction:
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")
' Loop through the results
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
' or from a multi-page TIFF scan with image correction:
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
})
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")
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")
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);
// All major image formats supported as well as PDF and 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)
' All major image formats supported as well as PDF and HTML
myBarcode.SaveAsPng("myBarcode.png")
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")
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")
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();
// Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
using (System.IO.Stream pdfStream = myBarcode.ToPdfStream())
{
// Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and 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()
' Binary barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
Using pdfStream As System.IO.Stream = myBarcode.ToPdfStream()
' Stream barcode image output also works for GIF,JPEG, PDF, PNG, BMP and TIFF
End Using
myBarcode.StampToExistingPdfPage("ExistingPDF.pdf", 1, 200, 50)
¿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 elReferencia API .NET en formato MSDN.