# Barcodes & QRs in C# & VB.NET Applications
Leer y escribir códigos de barras en C# y todos los demás lenguajes .NET es un proceso sencillo con nuestra biblioteca de software IronBarcode.
## Instalar IronBarcode
El primer paso en el camino será instalar IronBarcode, lo cual se puede hacer descargándolo desde NuGet o [descargando el DLL](https://www.nuget.org/packages/Barcode/).
Para instalar el paquete NuGet de IronBarcode, puedes usar el Gestor de paquetes NuGet para Visual Studio:
```shell
:ProductInstall
```
Alternativamente, también podrías instalar con la CLI de .NET:
```shell
:InstallCmd dotnet add package IronBarCode
```
## Lectura de un código de barras o código QR
Leer un código de barras solo requiere una línea de código con IronBarcode.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-1.cs
```
Con esta única línea de código, tienes la capacidad de detectar y escanear todos los tipos de códigos de barras del documento de entrada con un rendimiento excepcional: ¡todo lo que necesitas en un solo paso! Este método admite una amplia gama de formatos de imagen, como JPEG, PNG y BMP, así como PDF y formatos de varias tramas como GIF y TIFF. Para un rendimiento mejorado, hay opciones de configuración personalizables disponibles.
Para mejorar la velocidad de lectura, puede crear un objeto `BarcodeReaderOptions` con la configuración `Speed` configurada para un mejor rendimiento. El valor predeterminado es `Balanced`, pero la opción `Faster` está disponible para omitir ciertas comprobaciones.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-2.cs
```
También puede establecer el `ScanMode` a `OnlyBasicScan` para optimizar el proceso de lectura.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-3.cs
```
Otras configuraciones incluyen especificar los formatos de códigos de barras que se deben escanear, lo que puede ayudar a acelerar el procesamiento al reducir escaneos innecesarios.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-4.cs
```
## Escritura de códigos de barras
Para escribir códigos de barras usando IronBarcode, utilizamos la clase `BarcodeWriter`.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-5.cs
```
## Estilizar códigos de barras
IronBarcode ofrece varias opciones para manipular la representación visual de un código de barras.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-7.cs
```
## Exportar códigos de barras como HTML
IronBarcode puede exportar códigos de barras como documentos HTML o como parte de contenido HTML.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-8.cs
```
## Generación de códigos QR
Para los códigos QR, use la clase `QRCodeWriter` que proporciona configuración adicional para características específicas de QR como la corrección de errores.
```csharp
:path=/static-assets/barcode/content-code-examples/get-started/get-started-9.cs
```
## Formatos de códigos de barras compatibles
IronBarcode admite una amplia variedad de formatos de códigos de barras comúnmente utilizados tanto para lectura como para escritura:
- Códigos **QR**, **Micro QR** y **Micro QR Rectangular (rMQR)**.
- Otros códigos de barras bidimensionales como **Aztec**, **Data Matrix**, **MaxiCode** y **PDF417**.
- Códigos de barras lineales apilados como **Databar**.
- Formatos de códigos de barras unidimensionales convencionales como **UPC-A**, **UPC-E**, **EAN-8**, **EAN-13**, **Codabar**, **ITF**, **MSI** y **Plessey**.
## ¿Por qué elegir IronBarcode?
IronBarcode ofrece una API amigable y fácil de usar para desarrolladores, para leer y escribir códigos de barras para .NET, que optimiza para precisión, precisión y velocidad en casos de uso del mundo real.
La clase `BarcodeWriter`, por ejemplo, valida y corrige automáticamente los 'checksums' en códigos de barras UPCA y UPCE, y maneja restricciones de formato numérico. IronBarcode asiste a los desarrolladores a elegir el formato de código de barras más adecuado para sus datos.
La biblioteca es robusta, con técnicas de preprocesamiento de imágenes como rotación automática y eliminación de ruido de la imagen para maximizar las tasas de éxito de detección de códigos de barras.
## Avanzando
Para sacar el máximo provecho de IronBarcode, te animamos a leer los tutoriales dentro de esta sección de documentación, y a visitarnos en [GitHub](https://github.com/iron-software).
Leer y escribir códigos de barras en C# y todos los demás lenguajes .NET es un proceso sencillo con nuestra biblioteca de software IronBarcode.
Instalar IronBarcode
El primer paso en el camino será instalar IronBarcode, lo cual se puede hacer descargándolo desde NuGet o descargando el DLL.
Para instalar el paquete NuGet de IronBarcode, puedes usar el Gestor de paquetes NuGet para Visual Studio:
PM > Install-Package BarCode
Install-Package BarCode
Alternativamente, también podrías instalar con la CLI de .NET:
> dotnet add package IronBarCode
dotnet add package IronBarCode
Lectura de un código de barras o código QR
Leer un código de barras solo requiere una línea de código con IronBarcode.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");if (results != null){ foreach (BarcodeResult result in results) {Console.WriteLine(result.Text); }}
using IronBarCode;
BarcodeResults results = BarcodeReader.Read("QuickStart.jpg");
if (results != null)
{
foreach (BarcodeResult result in results)
{
Console.WriteLine(result.Text);
}
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg")If results IsNot Nothing Then For Each result AsBarcodeResultIn resultsConsole.WriteLine(result.Text) Next resultEnd If
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
Con esta única línea de código, tienes la capacidad de detectar y escanear todos los tipos de códigos de barras del documento de entrada con un rendimiento excepcional: ¡todo lo que necesitas en un solo paso! Este método admite una amplia gama de formatos de imagen, como JPEG, PNG y BMP, así como PDF y formatos de varias tramas como GIF y TIFF. Para un rendimiento mejorado, hay opciones de configuración personalizables disponibles.
Para mejorar la velocidad de lectura, puede crear un objeto BarcodeReaderOptions con la configuración Speed configurada para un mejor rendimiento. El valor predeterminado es Balanced, pero la opción Faster está disponible para omitir ciertas comprobaciones.
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);}
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);
}
ImportsIronBarCodePrivate myOptionsExample As New BarcodeReaderOptions() With { .ExpectMultipleBarcodes = False, .ExpectBarcodeTypes = BarcodeEncoding.QRCodeOrBarcodeEncoding.Code128, .CropArea = New System.Drawing.Rectangle(100, 200, 300, 400)}Private result AsBarcodeResults = BarcodeReader.Read("QuickStart.jpg", myOptionsExample)If result IsNot Nothing ThenConsole.WriteLine(result.First().Text)End If
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 puede establecer el ScanMode a OnlyBasicScan para optimizar el proceso de lectura.
using IronBarCode;BarcodeResults results = BarcodeReader.Read("MultipleBarcodes.png");// Loop through the resultsforeach (BarcodeResult result in results){ string value = result.Value; Bitmap img = result.BarcodeImage; BarcodeEncoding barcodeType = result.BarcodeType; byte[] binary = result.BinaryValue;Console.WriteLine(result.Value);}
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);
}
ImportsIronBarCodePrivate results AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.png")' Loop through the resultsFor Each result AsBarcodeResultIn results Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result
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
Otras configuraciones incluyen especificar los formatos de códigos de barras que se deben escanear, lo que puede ayudar a acelerar el procesamiento al reducir escaneos innecesarios.
using IronBarCode;BarcodeResults pagedResults = BarcodeReader.Read("MultipleBarcodes.pdf");// Loop through the resultsforeach (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});
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
});
ImportsIronBarCodePrivate pagedResults AsBarcodeResults = BarcodeReader.Read("MultipleBarcodes.pdf")' Loop through the resultsFor Each result AsBarcodeResultIn pagedResults Dim pageNumber AsInteger = result.PageNumber Dim value AsString = result.Value Dim img AsBitmap = result.BarcodeImage Dim barcodeType AsBarcodeEncoding = result.BarcodeType Dim binary() AsByte = result.BinaryValueConsole.WriteLine(result.Value)Next result' or from a multi-page TIFF scan with image correction:Dim multiFrameResults AsBarcodeResults = BarcodeReader.Read(inputImage:= "Multiframe.tiff", New BarcodeReaderOptionsWith { .Speed = ReadingSpeed.Detailed, .ExpectMultipleBarcodes = True, .ExpectBarcodeTypes = BarcodeEncoding.Code128, .Multithreaded = False, .RemoveFalsePositive = False, .ImageFilters = Nothing})
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
})
Escritura de códigos de barras
Para escribir códigos de barras usando IronBarcode, utilizamos la clase BarcodeWriter.
using IronBarCode;GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com/csharp/barcode", BarcodeEncoding.Code128);myBarcode.SaveAsImage("myBarcode.png");
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")
Estilizar códigos de barras
IronBarcode ofrece varias opciones para manipular la representación visual de un código de barras.
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 HTMLmyBarcode.SaveAsPng("myBarcode.png");
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");
ImportsIronBarCodePrivate myBarcode AsGeneratedBarcode = 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 HTMLmyBarcode.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")
Exportar códigos de barras como HTML
IronBarcode puede exportar códigos de barras como documentos HTML o como parte de contenido HTML.
using IronBarCode;QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://ironsoftware.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Medium).SaveAsPdf("MyQR.pdf");
Para los códigos QR, use la clase QRCodeWriter que proporciona configuración adicional para características específicas de QR como la corrección de errores.
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");
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");
ImportsIronBarCodeImportsIronSoftware.DrawingPrivate qrCodeLogo As New QRCodeLogo("visual-studio-logo.png")Private myQRCodeWithLogo AsGeneratedBarcode = 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
IronBarcode admite una amplia variedad de formatos de códigos de barras comúnmente utilizados tanto para lectura como para escritura:
Códigos QR, Micro QR y Micro QR Rectangular (rMQR).
Otros códigos de barras bidimensionales como Aztec, Data Matrix, MaxiCode y PDF417.
Códigos de barras lineales apilados como Databar.
Formatos de códigos de barras unidimensionales convencionales como UPC-A, UPC-E, EAN-8, EAN-13, Codabar, ITF, MSI y Plessey.
¿Por qué elegir IronBarcode?
IronBarcode ofrece una API amigable y fácil de usar para desarrolladores, para leer y escribir códigos de barras para .NET, que optimiza para precisión, precisión y velocidad en casos de uso del mundo real.
La clase BarcodeWriter, por ejemplo, valida y corrige automáticamente los 'checksums' en códigos de barras UPCA y UPCE, y maneja restricciones de formato numérico. IronBarcode asiste a los desarrolladores a elegir el formato de código de barras más adecuado para sus datos.
La biblioteca es robusta, con técnicas de preprocesamiento de imágenes como rotación automática y eliminación de ruido de la imagen para maximizar las tasas de éxito de detección de códigos de barras.
Avanzando
Para sacar el máximo provecho de IronBarcode, te animamos a leer los tutoriales dentro de esta sección de documentación, y a visitarnos en GitHub.
Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien estructurados y visualmente atractivos.