# Crear el QR de AEAT para VeriFactu y Facturae desde datos estructurados en C#
> **Generación del QR de AEAT en España:** El Real Decreto 1007/2023 (VeriFactu) establece que el código QR de cada factura española debe codificar la URL: `https://sede.agenciatributaria.gob.es/Sede/...?nif={NIF}&numserie={SERIE}&fecha={FECHA}&importe={IMPORTE}&huella={HUELLA}`. La construcción de esta URL desde los datos de la factura y su codificación como QR es el caso de uso principal de `BarcodeWriter.CreateBarcode()` en el mercado español.
IronBarcode permite a los desarrolladores de C# generar códigos de barras a partir de diversas fuentes de datos, incluidas cadenas, matrices de bytes y flujos de memoria usando el método `BarcodeWriter.CreateBarcode()` con soporte para múltiples formatos de código de barras como QR Code, Code128, y PDF417.
*as-heading:2(Inicio rápido: crear un código de barras a partir de una cadena en una línea)*
Utilice la API de IronBarcode para generar códigos de barras con una configuración mínima. Este ejemplo muestra cómo crear un código de barras a partir de una simple cadena utilizando una sola línea de código. Para ver ejemplos completos, consulte la guía [Inicio rápido del código de barras](https://ironsoftware.com/csharp/barcode/examples/barcode-quickstart/).
```cs
:title=Generate Barcodes Instantly
var barcode = IronBarCode.BarcodeWriter.CreateBarcode("Order123", IronBarCode.BarcodeWriterEncoding.Code128);
```
<div class="hsg-featured-snippet">
<h3>Flujo de trabajo mínimo (5 pasos)</h3>
<ol>
<li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://www.nuget.org/packages/BarCode/">Descargue la biblioteca C# para crear un código de barras a partir de datos</a></li>
<li>Cree códigos de barras con la entrada <strong>System.String</strong> utilizando el método <code>CreateBarcode</code></li>
<li>Cree códigos de barras con la entrada <strong>System.Byte[]</strong> utilizando el método <code>CreateBarcode</code></li>
<li>Cree códigos de barras con la entrada <strong>System.IO.Stream</strong> utilizando el método <code>CreateBarcode</code></li>
<li>Guarda el código de barras resultante en múltiples formatos de imagen</li>
</ol>
</div>
<br class="clear" />
## ¿Cómo crear un BarCode a partir de una cadena?
### ¿Qué formatos de código de barras funcionan mejor para distintos tipos de cadenas?
Los distintos formatos de códigos de barras están optimizados para tipos de datos y casos de uso específicos. [Comprender los formatos de código de barras compatibles](https://ironsoftware.com/csharp/barcode/get-started/supported-barcode-formats/) ayuda a seleccionar la codificación adecuada:
- **Códigos QR**: lo mejor para URL, direcciones de correo electrónico y datos de texto de gran tamaño. Admite hasta 4.296 caracteres alfanuméricos con [corrección de errores](https://ironsoftware.com/csharp/barcode/how-to/error-correction/).
- **Code128**: ideal para datos alfanuméricos como números de pedido y códigos de serie. Altamente eficiente para aplicaciones modernas.
- **PDF417**: Perfecto para datos complejos como billetes de avión e identificaciones gubernamentales. Almacena hasta 1.850 caracteres alfanuméricos.
- **Code93**: excelente para servicios postales y seguimiento de inventarios con datos numéricos compactos.
- **Aztec**: Óptimo para la venta de billetes móviles y el transporte, ya que requiere menos espacio que los códigos QR.
El siguiente código demuestra cómo escribir códigos de barras con una cadena:
```cs
using IronBarCode;
string text = "Hello, World!";
string url = "https://ironsoftware.com/csharp/barcode/";
string receiptID = "2023-08-04-12345"; // Receipt ID (numeric id)
string flightID = "FLT2023NYC-LAX123456"; // Flight ID (alphanumeric id)
string number = "1234";
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
```
### ¿Cuáles son los resultados del código de barras generado?
Este código codifica cinco ejemplos de datos diferentes en cinco tipos de códigos de barras: texto simple a azteca, URL a código QR, ID numérico a código 93, ID alfanumérico a PDF417 y número a Codabar. Las imágenes se guardan como PNG. Para conocer las opciones avanzadas de exportación, consulte la guía [Crear código de barras como imagen](https://ironsoftware.com/csharp/barcode/how-to/create-barcode-images/).
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/create-barcode-from-data/text.png" alt="Código de barras Aztec que contiene el texto 'Hello, World!' con su característico patrón en espiral cuadrada" class="img-responsive add-shadow" style="margin: auto;" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Texto</p>
</div>
<div class="competitors__card" style="width: 50%;">
<img src="/static-assets/barcode/how-to/create-barcode-from-data/url.png" alt="Código QR generado a partir de una URL de entrada que demuestra la funcionalidad de creación de códigos de barras" class="img-responsive add-shadow" style="margin: auto;" />
<p class="competitors__download-link" style="color: #181818; font-style: italic; margin-bottom: 25px;">URL</p>
</div>
</div>
<div class="competitors-section__wrapper-even-1">
<div class="competitors__card" style="width: 48%;">
<img src="/static-assets/barcode/how-to/create-barcode-from-data/receiptID.png" alt="Ejemplo de código de barras Code93 generado que muestra un patrón de barras verticales en blanco y negro" class="img-responsive add-shadow" style="margin: auto;" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">ID de recibo</p>
</div>
<div class="competitors__card" style="width: 50%;">
<img src="/static-assets/barcode/how-to/create-barcode-from-data/flightID.png" alt="Código de barras PDF417 con filas apiladas que codifica datos alfanuméricos de identificación de vuelo" class="img-responsive add-shadow" style="margin: auto;" />
<p class="competitors__download-link" style="color: #181818; font-style: italic; margin-bottom: 25px;">Identificación del vuelo</p>
</div>
</div>
<div class="content-img-align-center">
<div class="center-image-wrapper">
<img src="/static-assets/barcode/how-to/create-barcode-from-data/number.png" alt="Código de barras Codabar que muestra datos numéricos con caracteres de inicio/parada" class="img-responsive add-shadow" />
<p class="competitors__download-link" style="color: #181818; font-style: italic;">Número</p>
</div>
</div>
### ¿Cómo puedo personalizar los códigos de barras generados?
Después de crear su código de barras, mejore su aspecto utilizando las funciones de estilización de IronBarcode. A continuación se explica cómo crear un código de barras personalizado con colores, anotaciones y márgenes:
```cs
using IronBarCode;
// Create a barcode with custom styling
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Apply custom styling
myBarcode.ResizeTo(300, 100);
myBarcode.SetMargins(10);
myBarcode.ChangeBarCodeColor(Color.DarkBlue);
// Add text annotations
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);
// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
```
Para obtener más opciones de estilo, explore el tutorial [Personalización y estilo de códigos de barras](https://ironsoftware.com/csharp/barcode/how-to/customize-barcode-style/).
## ¿Cómo crear un código de barras a partir de una matriz de bytes?
### ¿Por qué es importante la codificación de caracteres para los códigos de barras de matriz de bytes?
Para crear códigos de barras a partir de matrices de bytes, asegúrese de que la codificación de caracteres se alinee con el requisito `BarcodeEncoding`, ya que cada tipo de código de barras acepta diferentes codificaciones de caracteres. La comprensión de [formatos de datos de salida](https://ironsoftware.com/csharp/barcode/how-to/output-data-formats/) garantiza la compatibilidad. Estas son las codificaciones de caracteres disponibles en IronBarcode:
- **ASCII**: Utiliza 7 bits por carácter para letras, dígitos y signos de puntuación en inglés. Ejemplo: 'A' = 65.
- **UTF-8**: Codificación de longitud variable para todos los caracteres Unicode. Ejemplo: € = 0xE2 0x82 0xAC.
- **UTF-16**: Utiliza secuencias de 16 bits para Unicode. Ejemplo: α = 0x03B1.
- **UTF-32**: Secuencia fija de 32 bits por carácter. Ejemplo: α = 0x000003B1.
- **ISO-8859-1**: Amplía ASCII para los idiomas de Europa Occidental. Ejemplo: é = 233.
[[i:La codificación de caracteres predeterminada en IronBarcode es ISO-8859-1.]]
### ¿Cómo convertir matrices de bytes en códigos de barras?
El siguiente código muestra la generación de un código de barras a partir de datos de bytes:
```cs
using IronBarCode;
using System.Text;
byte[] text = Encoding.UTF8.GetBytes("Hello, World!");
byte[] url = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");
byte[] receiptID = Encoding.UTF8.GetBytes("2023-08-04-12345"); // Receipt ID (numeric id)
byte[] flightID = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456"); // Flight id (alphanumeric id)
byte[] number = Encoding.UTF8.GetBytes("1234");
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
```
Este fragmento transforma cinco entradas de cadena en objetos `System.Byte[]`. Para convertir estas matrices de bytes en códigos de barras, páselas a `BarcodeWriter` con el `BarcodeEncoding` deseado. Opcionalmente, configure `MaxWidth` y `MaxHeight` para el tamaño del código de barras.
### Trabajo con datos binarios y caracteres especiales
Cuando trabaje con datos binarios o caracteres especiales, utilice [Escribir códigos de barras Unicode](https://ironsoftware.com/csharp/barcode/how-to/writing-in-unicode/) para obtener compatibilidad con caracteres internacionales. He aquí un ejemplo de manejo de datos binarios:
```cs
using IronBarCode;
using System.Text;
using System.IO;
// Example: Encoding binary data (like a small file) into QR Code
byte[] binaryData = File.ReadAllBytes("document.pdf");
string base64Data = Convert.ToBase64String(binaryData);
// Create QR code with high error correction for binary data
GeneratedBarcode binaryBarcode = QRCodeWriter.CreateQrCode(
base64Data,
errorCorrectionLevel: QRCodeWriter.QrErrorCorrectionLevel.High
);
// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
```
## ¿Cómo crear un BarCode a partir de un flujo de memoria?
### ¿Cuándo debo utilizar flujos de memoria para la generación de códigos de barras?
Los flujos de memoria funcionan mejor cuando se procesan datos que no requieren almacenamiento en disco, como el contenido generado dinámicamente en aplicaciones web o el procesamiento de bases de datos. La guía [Exportar código de barras como flujo](https://ironsoftware.com/csharp/barcode/how-to/export-barcode-as-stream/) proporciona contexto adicional para los flujos de trabajo basados en flujos.
El siguiente código muestra la generación de un código de barras a partir de un flujo de memoria:
```cs
using IronBarCode;
using System.IO;
using System.Text;
MemoryStream text = new MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"));
MemoryStream url = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"));
MemoryStream receiptID = new MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")); // Receipt ID (numeric id)
MemoryStream flightID = new MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")); // Flight id (alphanumeric id)
MemoryStream number = new MemoryStream(Encoding.UTF8.GetBytes("1234"));
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
```
### ¿Cuáles son las ventajas de utilizar flujos de memoria?
Este fragmento crea un `MemoryStream` a partir de un objeto `System.Byte[]`, luego lo utiliza como entrada en `BarcodeWriter.CreateBarcode()` para generar un código de barras a partir de datos `MemoryStream`. Los flujos de memoria ofrecen varias ventajas:
1. **Rendimiento**: Sin operaciones de E/S de disco, más rápido para datos temporales
2. **Seguridad**: Los datos permanecen en memoria, lo que reduce la exposición de información sensible
3. **Flexibilidad**: fácil integración con API y bibliotecas basadas en flujos
4. **Eficiencia de recursos**: Gestión y eliminación automática de memoria
### Ejemplo avanzado de procesamiento de flujos
Para escenarios complejos que impliquen el procesamiento de secuencias, combine IronBarcode con otras operaciones de secuencias:
```cs
using IronBarCode;
using System.IO;
using System.Text;
// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
var barcodeStreams = new List<Stream>();
foreach (var item in dataItems)
{
// Convert string to stream
var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));
// Generate barcode from stream
var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);
// Export barcode back to stream
var outputStream = new MemoryStream();
barcode.SaveAsPng(outputStream);
outputStream.Position = 0; // Reset position for reading
barcodeStreams.Add(outputStream);
}
return barcodeStreams;
}
// Usage example
var orderNumbers = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumbers);
```
Para conocer las operaciones asíncronas y mejorar el rendimiento en aplicaciones multihilo, consulte la guía [Use Async and Multithread](https://ironsoftware.com/csharp/barcode/how-to/async-multithread/).
## Generación del QR de AEAT para VeriFactu y Facturae en España
La generación del código QR de AEAT a partir de los datos estructurados de la factura es el caso de uso central de IronBarcode para el mercado español:
**QR VeriFactu:** Construya la URL de verificación con los cinco parámetros obligatorios y genere el código QR. La versión del QR debe ser al menos la 4 para acomodar la longitud de la URL de AEAT. IronBarcode selecciona automáticamente la versión óptima:
```cs
string nif = "B12345678";
string serie = "F2026-0001";
string fecha = "2026-05-29";
string importe = "1210.00";
string huella = "a3f9e8c2b1d4..."; // hash SHA-256 del registro VeriFactu
string urlAEAT = $"https://sede.agenciatributaria.gob.es/Sede/factura/check?nif={nif}&numserie={Uri.EscapeDataString(serie)}&fecha={fecha}&importe={importe}&huella={huella}";
var qr = BarcodeWriter.CreateBarcode(urlAEAT, BarcodeEncoding.QRCode);
qr.ResizeTo(200, 200);
qr.SaveAsPng("factura-aeat-qr.png");
```
**Facturae con identificador de factura:** Para facturas del sector público enviadas a FACe, el identificador de la factura Facturae (número de serie + NIF emisor) puede codificarse como Code-128 para la referencia física del documento:
```cs
string idFacturae = $"ES-B12345678-F2026-0001";
var barcode = BarcodeWriter.CreateBarcode(idFacturae, BarcodeEncoding.Code128);
barcode.SaveAsPng("facturae-id.png");
```
**TicketBAI (País Vasco):** El QR de un tíquet TicketBAI emitido en Bizkaia, Gipuzkoa o Araba codifica el hash del XML firmado. Genérelo directamente desde los datos binarios del hash SHA-256:
```cs
byte[] hashBytes = ComputeHashSHA256(ticketBaiXmlFirmado); // función de su sistema
string hashB64 = Convert.ToBase64String(hashBytes);
var qrTicketBai = BarcodeWriter.CreateBarcode(hashB64, BarcodeEncoding.QRCode);
qrTicketBai.SaveAsPng("ticketbai-qr.png");
```
Para entornos de alta disponibilidad con el SII de la AEAT, procese la generación de QR en `MemoryStream` en lugar de guardar en disco, integrando directamente con la biblioteca de generación de PDFs para incrustar el QR en la factura antes de su envío.
Generación del QR de AEAT en España: El Real Decreto 1007/2023 (VeriFactu) establece que el código QR de cada factura española debe codificar la URL: https://sede.agenciatributaria.gob.es/Sede/...?nif={NIF}&numserie={SERIE}&fecha={FECHA}&importe={IMPORTE}&huella={HUELLA}. La construcción de esta URL desde los datos de la factura y su codificación como QR es el caso de uso principal de BarcodeWriter.CreateBarcode() en el mercado español.
IronBarcode permite a los desarrolladores de C# generar códigos de barras a partir de diversas fuentes de datos, incluidas cadenas, matrices de bytes y flujos de memoria usando el método BarcodeWriter.CreateBarcode() con soporte para múltiples formatos de código de barras como QR Code, Code128, y PDF417.
Inicio rápido: crear un código de barras a partir de una cadena en una línea
Utilice la API de IronBarcode para generar códigos de barras con una configuración mínima. Este ejemplo muestra cómo crear un código de barras a partir de una simple cadena utilizando una sola línea de código. Para ver ejemplos completos, consulte la guía Inicio rápido del código de barras.
1Install IronBarcode with NuGet Package Manager
PM > Install-Package BarCode
Install-Package BarCode
2Copie y ejecute este fragmento de código.
var barcode = IronBarCode.BarcodeWriter.CreateBarcode("Order123", IronBarCode.BarcodeWriterEncoding.Code128);
var barcode = IronBarCode.BarcodeWriter.CreateBarcode("Order123", IronBarCode.BarcodeWriterEncoding.Code128);
C#
3Despliegue para probar en su entorno real
Comienza a usar IronBarcode en tu proyecto hoy mismo con una prueba gratuita
Códigos QR: lo mejor para URL, direcciones de correo electrónico y datos de texto de gran tamaño. Admite hasta 4.296 caracteres alfanuméricos con corrección de errores.
Code128: ideal para datos alfanuméricos como números de pedido y códigos de serie. Altamente eficiente para aplicaciones modernas.
PDF417: Perfecto para datos complejos como billetes de avión e identificaciones gubernamentales. Almacena hasta 1.850 caracteres alfanuméricos.
Code93: excelente para servicios postales y seguimiento de inventarios con datos numéricos compactos.
Aztec: Óptimo para la venta de billetes móviles y el transporte, ya que requiere menos espacio que los códigos QR.
El siguiente código demuestra cómo escribir códigos de barras con una cadena:
using IronBarCode;string text = "Hello, World!";string url = "https://ironsoftware.com/csharp/barcode/";string receiptID = "2023-08-04-12345"; // Receipt ID (numeric id)string flightID = "FLT2023NYC-LAX123456"; // Flight ID (alphanumeric id)string number = "1234";BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Private text As String = "Hello, World!"
Private url As String = "https://ironsoftware.com/csharp/barcode/"
Private receiptID As String = "2023-08-04-12345" ' Receipt ID (numeric id)
Private flightID As String = "FLT2023NYC-LAX123456" ' Flight ID (alphanumeric id)
Private number As String = "1234"
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
¿Cuáles son los resultados del código de barras generado?
Este código codifica cinco ejemplos de datos diferentes en cinco tipos de códigos de barras: texto simple a azteca, URL a código QR, ID numérico a código 93, ID alfanumérico a PDF417 y número a Codabar. Las imágenes se guardan como PNG. Para conocer las opciones avanzadas de exportación, consulte la guía Crear código de barras como imagen.
Texto
URL
ID de recibo
Identificación del vuelo
Número
¿Cómo puedo personalizar los códigos de barras generados?
Después de crear su código de barras, mejore su aspecto utilizando las funciones de estilización de IronBarcode. A continuación se explica cómo crear un código de barras personalizado con colores, anotaciones y márgenes:
using IronBarCode;// Create a barcode with custom stylingGeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);// Apply custom stylingmyBarcode.ResizeTo(300, 100);myBarcode.SetMargins(10);myBarcode.ChangeBarCodeColor(Color.DarkBlue);// Add text annotationsmyBarcode.AddBarcodeValueTextBelowBarcode();myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);// Save the customized barcodemyBarcode.SaveAsPng("customized-barcode.png");
using IronBarCode;
// Create a barcode with custom styling
GeneratedBarcode myBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Apply custom styling
myBarcode.ResizeTo(300, 100);
myBarcode.SetMargins(10);
myBarcode.ChangeBarCodeColor(Color.DarkBlue);
// Add text annotations
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12);
// Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png");
ImportsIronBarCode' Create a barcode with custom stylingDim myBarcode AsGeneratedBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)' Apply custom stylingmyBarcode.ResizeTo(300, 100)myBarcode.SetMargins(10)myBarcode.ChangeBarCodeColor(Color.DarkBlue)' Add text annotationsmyBarcode.AddBarcodeValueTextBelowBarcode()myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12)' Save the customized barcodemyBarcode.SaveAsPng("customized-barcode.png")
Imports IronBarCode
' Create a barcode with custom styling
Dim myBarcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
' Apply custom styling
myBarcode.ResizeTo(300, 100)
myBarcode.SetMargins(10)
myBarcode.ChangeBarCodeColor(Color.DarkBlue)
' Add text annotations
myBarcode.AddBarcodeValueTextBelowBarcode()
myBarcode.AddAnnotationTextAboveBarcode("Product SKU", Font.Arial, Color.Black, 12)
' Save the customized barcode
myBarcode.SaveAsPng("customized-barcode.png")
¿Cómo crear un código de barras a partir de una matriz de bytes?
¿Por qué es importante la codificación de caracteres para los códigos de barras de matriz de bytes?
Para crear códigos de barras a partir de matrices de bytes, asegúrese de que la codificación de caracteres se alinee con el requisito BarcodeEncoding, ya que cada tipo de código de barras acepta diferentes codificaciones de caracteres. La comprensión de formatos de datos de salida garantiza la compatibilidad. Estas son las codificaciones de caracteres disponibles en IronBarcode:
ASCII: Utiliza 7 bits por carácter para letras, dígitos y signos de puntuación en inglés. Ejemplo: 'A' = 65.
UTF-8: Codificación de longitud variable para todos los caracteres Unicode. Ejemplo: € = 0xE2 0x82 0xAC.
UTF-16: Utiliza secuencias de 16 bits para Unicode. Ejemplo: α = 0x03B1.
UTF-32: Secuencia fija de 32 bits por carácter. Ejemplo: α = 0x000003B1.
ISO-8859-1: Amplía ASCII para los idiomas de Europa Occidental. Ejemplo: é = 233.
[[i:La codificación de caracteres predeterminada en IronBarcode es ISO-8859-1.]]
¿Cómo convertir matrices de bytes en códigos de barras?
El siguiente código muestra la generación de un código de barras a partir de datos de bytes:
using IronBarCode;using System.Text;byte[] text = Encoding.UTF8.GetBytes("Hello, World!");byte[] url = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/");byte[] receiptID = Encoding.UTF8.GetBytes("2023-08-04-12345"); // Receipt ID (numeric id)byte[] flightID = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456"); // Flight id (alphanumeric id)byte[] number = Encoding.UTF8.GetBytes("1234");BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
Imports IronBarCode
Imports System.Text
Private text() As Byte = Encoding.UTF8.GetBytes("Hello, World!")
Private url() As Byte = Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/")
Private receiptID() As Byte = Encoding.UTF8.GetBytes("2023-08-04-12345") ' Receipt ID (numeric id)
Private flightID() As Byte = Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456") ' Flight id (alphanumeric id)
Private number() As Byte = Encoding.UTF8.GetBytes("1234")
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
Este fragmento transforma cinco entradas de cadena en objetos System.Byte[]. Para convertir estas matrices de bytes en códigos de barras, páselas a BarcodeWriter con el BarcodeEncoding deseado. Opcionalmente, configure MaxWidth y MaxHeight para el tamaño del código de barras.
Trabajo con datos binarios y caracteres especiales
Cuando trabaje con datos binarios o caracteres especiales, utilice Escribir códigos de barras Unicode para obtener compatibilidad con caracteres internacionales. He aquí un ejemplo de manejo de datos binarios:
using IronBarCode;using System.Text;using System.IO;// Example: Encoding binary data (like a small file) into QR Codebyte[] binaryData = File.ReadAllBytes("document.pdf");string base64Data = Convert.ToBase64String(binaryData);// Create QR code with high error correction for binary dataGeneratedBarcode binaryBarcode = QRCodeWriter.CreateQrCode( base64Data, errorCorrectionLevel: QRCodeWriter.QrErrorCorrectionLevel.High);// Save with appropriate size for data densitybinaryBarcode.ResizeTo(500, 500);binaryBarcode.SaveAsPng("binary-data-qr.png");
using IronBarCode;
using System.Text;
using System.IO;
// Example: Encoding binary data (like a small file) into QR Code
byte[] binaryData = File.ReadAllBytes("document.pdf");
string base64Data = Convert.ToBase64String(binaryData);
// Create QR code with high error correction for binary data
GeneratedBarcode binaryBarcode = QRCodeWriter.CreateQrCode(
base64Data,
errorCorrectionLevel: QRCodeWriter.QrErrorCorrectionLevel.High
);
// Save with appropriate size for data density
binaryBarcode.ResizeTo(500, 500);
binaryBarcode.SaveAsPng("binary-data-qr.png");
C#
¿Cómo crear un BarCode a partir de un flujo de memoria?
¿Cuándo debo utilizar flujos de memoria para la generación de códigos de barras?
Los flujos de memoria funcionan mejor cuando se procesan datos que no requieren almacenamiento en disco, como el contenido generado dinámicamente en aplicaciones web o el procesamiento de bases de datos. La guía Exportar código de barras como flujo proporciona contexto adicional para los flujos de trabajo basados en flujos.
El siguiente código muestra la generación de un código de barras a partir de un flujo de memoria:
using IronBarCode;using System.IO;using System.Text;MemoryStream text = new MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"));MemoryStream url = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"));MemoryStream receiptID = new MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")); // Receipt ID (numeric id)MemoryStream flightID = new MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")); // Flight id (alphanumeric id)MemoryStream number = new MemoryStream(Encoding.UTF8.GetBytes("1234"));BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
using IronBarCode;
using System.IO;
using System.Text;
MemoryStream text = new MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"));
MemoryStream url = new MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"));
MemoryStream receiptID = new MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")); // Receipt ID (numeric id)
MemoryStream flightID = new MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")); // Flight id (alphanumeric id)
MemoryStream number = new MemoryStream(Encoding.UTF8.GetBytes("1234"));
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png");
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png");
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png");
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png");
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png");
ImportsIronBarCodeImportsSystem.IOImportsSystem.TextPrivate text As New MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"))Private url As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"))Private receiptID As New MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")) ' Receipt ID (numeric id)Private flightID As New MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")) ' Flight id (alphanumeric id)Private number As New MemoryStream(Encoding.UTF8.GetBytes("1234"))BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
Imports IronBarCode
Imports System.IO
Imports System.Text
Private text As New MemoryStream(Encoding.UTF8.GetBytes("Hello, World!"))
Private url As New MemoryStream(Encoding.UTF8.GetBytes("https://ironsoftware.com/csharp/barcode/"))
Private receiptID As New MemoryStream(Encoding.UTF8.GetBytes("2023-08-04-12345")) ' Receipt ID (numeric id)
Private flightID As New MemoryStream(Encoding.UTF8.GetBytes("FLT2023NYC-LAX123456")) ' Flight id (alphanumeric id)
Private number As New MemoryStream(Encoding.UTF8.GetBytes("1234"))
BarcodeWriter.CreateBarcode(text, BarcodeEncoding.Aztec).SaveAsPng("text.png")
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode).SaveAsPng("url.png")
BarcodeWriter.CreateBarcode(receiptID, BarcodeEncoding.Code93, 250, 67).SaveAsPng("receiptID.png")
BarcodeWriter.CreateBarcode(flightID, BarcodeEncoding.PDF417, 250, 67).SaveAsPng("flightID.png")
BarcodeWriter.CreateBarcode(number, BarcodeEncoding.Codabar, 250, 67).SaveAsPng("number.png")
¿Cuáles son las ventajas de utilizar flujos de memoria?
Este fragmento crea un MemoryStream a partir de un objeto System.Byte[], luego lo utiliza como entrada en BarcodeWriter.CreateBarcode() para generar un código de barras a partir de datos MemoryStream. Los flujos de memoria ofrecen varias ventajas:
Rendimiento: Sin operaciones de E/S de disco, más rápido para datos temporales
Seguridad: Los datos permanecen en memoria, lo que reduce la exposición de información sensible
Flexibilidad: fácil integración con API y bibliotecas basadas en flujos
Eficiencia de recursos: Gestión y eliminación automática de memoria
Ejemplo avanzado de procesamiento de flujos
Para escenarios complejos que impliquen el procesamiento de secuencias, combine IronBarcode con otras operaciones de secuencias:
using IronBarCode;using System.IO;using System.Text;// Example: Processing multiple barcodes in a batch using streamspublic static List<Stream> GenerateBarcodeStreams(List<string> dataItems){ var barcodeStreams = new List<Stream>(); foreach (var item in dataItems) { // Convert string to stream var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item)); // Generate barcode from stream var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128); // Export barcode back to stream var outputStream = new MemoryStream(); barcode.SaveAsPng(outputStream); outputStream.Position = 0; // Reset position for reading barcodeStreams.Add(outputStream); } return barcodeStreams;}// Usage examplevar orderNumbers = new List<string> { "ORD-001", "ORD-002", "ORD-003" };var barcodes = GenerateBarcodeStreams(orderNumbers);
using IronBarCode;
using System.IO;
using System.Text;
// Example: Processing multiple barcodes in a batch using streams
public static List<Stream> GenerateBarcodeStreams(List<string> dataItems)
{
var barcodeStreams = new List<Stream>();
foreach (var item in dataItems)
{
// Convert string to stream
var dataStream = new MemoryStream(Encoding.UTF8.GetBytes(item));
// Generate barcode from stream
var barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128);
// Export barcode back to stream
var outputStream = new MemoryStream();
barcode.SaveAsPng(outputStream);
outputStream.Position = 0; // Reset position for reading
barcodeStreams.Add(outputStream);
}
return barcodeStreams;
}
// Usage example
var orderNumbers = new List<string> { "ORD-001", "ORD-002", "ORD-003" };
var barcodes = GenerateBarcodeStreams(orderNumbers);
ImportsIronBarCodeImportsSystem.IOImportsSystem.Text' Example: Processing multiple barcodes in a batch using streamsPublicShared Function GenerateBarcodeStreams(dataItems AsList(OfString)) AsList(OfStream) Dim barcodeStreams As New List(OfStream)() For Each item AsStringIn dataItems ' Convert string to stream Dim dataStream As New MemoryStream(Encoding.UTF8.GetBytes(item)) ' Generate barcode from stream Dim barcode AsBarcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128) ' Export barcode back to stream Dim outputStream As New MemoryStream() barcode.SaveAsPng(outputStream) outputStream.Position = 0 ' Reset position for reading barcodeStreams.Add(outputStream) Next Return barcodeStreamsEnd Function' Usage exampleDim orderNumbers As New List(OfString) From {"ORD-001", "ORD-002", "ORD-003"}Dim barcodes AsList(OfStream) = GenerateBarcodeStreams(orderNumbers)
Imports IronBarCode
Imports System.IO
Imports System.Text
' Example: Processing multiple barcodes in a batch using streams
Public Shared Function GenerateBarcodeStreams(dataItems As List(Of String)) As List(Of Stream)
Dim barcodeStreams As New List(Of Stream)()
For Each item As String In dataItems
' Convert string to stream
Dim dataStream As New MemoryStream(Encoding.UTF8.GetBytes(item))
' Generate barcode from stream
Dim barcode As Barcode = BarcodeWriter.CreateBarcode(dataStream, BarcodeEncoding.Code128)
' Export barcode back to stream
Dim outputStream As New MemoryStream()
barcode.SaveAsPng(outputStream)
outputStream.Position = 0 ' Reset position for reading
barcodeStreams.Add(outputStream)
Next
Return barcodeStreams
End Function
' Usage example
Dim orderNumbers As New List(Of String) From {"ORD-001", "ORD-002", "ORD-003"}
Dim barcodes As List(Of Stream) = GenerateBarcodeStreams(orderNumbers)
Para conocer las operaciones asíncronas y mejorar el rendimiento en aplicaciones multihilo, consulte la guía Use Async and Multithread.
Generación del QR de AEAT para VeriFactu y Facturae en España
La generación del código QR de AEAT a partir de los datos estructurados de la factura es el caso de uso central de IronBarcode para el mercado español:
QR VeriFactu: Construya la URL de verificación con los cinco parámetros obligatorios y genere el código QR. La versión del QR debe ser al menos la 4 para acomodar la longitud de la URL de AEAT. IronBarcode selecciona automáticamente la versión óptima:
string nif = "B12345678";string serie = "F2026-0001";string fecha = "2026-05-29";string importe = "1210.00";string huella = "a3f9e8c2b1d4..."; // hash SHA-256 del registro VeriFactustring urlAEAT = $"https://sede.agenciatributaria.gob.es/Sede/factura/check?nif={nif}&numserie={Uri.EscapeDataString(serie)}&fecha={fecha}&importe={importe}&huella={huella}";var qr = BarcodeWriter.CreateBarcode(urlAEAT, BarcodeEncoding.QRCode);qr.ResizeTo(200, 200);qr.SaveAsPng("factura-aeat-qr.png");
string nif = "B12345678";
string serie = "F2026-0001";
string fecha = "2026-05-29";
string importe = "1210.00";
string huella = "a3f9e8c2b1d4..."; // hash SHA-256 del registro VeriFactu
string urlAEAT = $"https://sede.agenciatributaria.gob.es/Sede/factura/check?nif={nif}&numserie={Uri.EscapeDataString(serie)}&fecha={fecha}&importe={importe}&huella={huella}";
var qr = BarcodeWriter.CreateBarcode(urlAEAT, BarcodeEncoding.QRCode);
qr.ResizeTo(200, 200);
qr.SaveAsPng("factura-aeat-qr.png");
ImportsSystemDim nif AsString = "B12345678"Dim serie AsString = "F2026-0001"Dim fecha AsString = "2026-05-29"Dim importe AsString = "1210.00"Dim huella AsString = "a3f9e8c2b1d4..." ' hash SHA-256 del registro VeriFactuDim urlAEAT AsString = $"https://sede.agenciatributaria.gob.es/Sede/factura/check?nif={nif}&numserie={Uri.EscapeDataString(serie)}&fecha={fecha}&importe={importe}&huella={huella}"Dim qr = BarcodeWriter.CreateBarcode(urlAEAT, BarcodeEncoding.QRCode)qr.ResizeTo(200, 200)qr.SaveAsPng("factura-aeat-qr.png")
Imports System
Dim nif As String = "B12345678"
Dim serie As String = "F2026-0001"
Dim fecha As String = "2026-05-29"
Dim importe As String = "1210.00"
Dim huella As String = "a3f9e8c2b1d4..." ' hash SHA-256 del registro VeriFactu
Dim urlAEAT As String = $"https://sede.agenciatributaria.gob.es/Sede/factura/check?nif={nif}&numserie={Uri.EscapeDataString(serie)}&fecha={fecha}&importe={importe}&huella={huella}"
Dim qr = BarcodeWriter.CreateBarcode(urlAEAT, BarcodeEncoding.QRCode)
qr.ResizeTo(200, 200)
qr.SaveAsPng("factura-aeat-qr.png")
Facturae con identificador de factura: Para facturas del sector público enviadas a FACe, el identificador de la factura Facturae (número de serie + NIF emisor) puede codificarse como Code-128 para la referencia física del documento:
Imports ZXing
Dim idFacturae As String = $"ES-B12345678-F2026-0001"
Dim barcode = BarcodeWriter.CreateBarcode(idFacturae, BarcodeEncoding.Code128)
barcode.SaveAsPng("facturae-id.png")
TicketBAI (País Vasco): El QR de un tíquet TicketBAI emitido en Bizkaia, Gipuzkoa o Araba codifica el hash del XML firmado. Genérelo directamente desde los datos binarios del hash SHA-256:
byte[] hashBytes = ComputeHashSHA256(ticketBaiXmlFirmado); // función de su sistemastring hashB64 = Convert.ToBase64String(hashBytes);var qrTicketBai = BarcodeWriter.CreateBarcode(hashB64, BarcodeEncoding.QRCode);qrTicketBai.SaveAsPng("ticketbai-qr.png");
byte[] hashBytes = ComputeHashSHA256(ticketBaiXmlFirmado); // función de su sistema
string hashB64 = Convert.ToBase64String(hashBytes);
var qrTicketBai = BarcodeWriter.CreateBarcode(hashB64, BarcodeEncoding.QRCode);
qrTicketBai.SaveAsPng("ticketbai-qr.png");
ImportsZXingImportsSystemDim hashBytes AsByte() = ComputeHashSHA256(ticketBaiXmlFirmado) ' función de su sistemaDim hashB64 AsString = Convert.ToBase64String(hashBytes)Dim qrTicketBai = BarcodeWriter.CreateBarcode(hashB64, BarcodeEncoding.QRCode)qrTicketBai.SaveAsPng("ticketbai-qr.png")
Imports ZXing
Imports System
Dim hashBytes As Byte() = ComputeHashSHA256(ticketBaiXmlFirmado) ' función de su sistema
Dim hashB64 As String = Convert.ToBase64String(hashBytes)
Dim qrTicketBai = BarcodeWriter.CreateBarcode(hashB64, BarcodeEncoding.QRCode)
qrTicketBai.SaveAsPng("ticketbai-qr.png")
Para entornos de alta disponibilidad con el SII de la AEAT, procese la generación de QR en MemoryStream en lugar de guardar en disco, integrando directamente con la biblioteca de generación de PDFs para incrustar el QR en la factura antes de su envío.
Preguntas Frecuentes
¿Cómo crear un código de barras a partir de texto en C#?
Puede crear un código de barras a partir de texto en C# utilizando IronBarcode con sólo una línea de código: BarcodeWriter.CreateBarcode("SuTexto", BarcodeWriterEncoding.Code128). IronBarcode soporta múltiples formatos incluyendo QR Code, Code128, PDF417, Aztec, y más.
¿Qué tipos de datos puedo codificar en códigos de barras?
IronBarcode permite codificar varios tipos de datos, como cadenas, URL, ID, datos binarios (matrices de bytes) y flujos de memoria. La biblioteca gestiona automáticamente la conversión y codificación en función del formato de código de barras elegido.
¿Qué formato de código de barras debo utilizar para las URL?
Los códigos QR son la mejor opción para codificar URL en IronBarcode. Los códigos QR pueden almacenar hasta 4.296 caracteres alfanuméricos e incluyen funciones de corrección de errores, lo que los hace ideales para direcciones web y direcciones de correo electrónico.
¿Qué formato de código de barras es mejor para los números de pedido y los códigos de serie?
Code128 es el formato ideal para datos alfanuméricos como números de pedido y códigos de serie cuando se utiliza IronBarcode. Es muy eficiente para las aplicaciones modernas y proporciona una excelente densidad de datos para conjuntos de caracteres mixtos.
¿Puedo crear códigos de barras a partir de datos binarios?
Sí, IronBarcode admite la creación de códigos de barras a partir de datos binarios utilizando matrices System.Byte[] o entradas System.IO.Stream a través del método CreateBarcode, lo que permite codificar cualquier tipo de información binaria.
¿En qué formatos de imagen puedo guardar los códigos de barras?
IronBarcode permite guardar los códigos de barras generados en varios formatos de imagen, como PNG, JPEG, BMP, GIF y TIFF. La biblioteca ofrece opciones de exportación flexibles para diferentes casos de uso.
¿Cuántos datos puedo almacenar en un código de barras PDF417?
Los códigos de barras PDF417 creados con IronBarcode pueden almacenar hasta 1.850 caracteres alfanuméricos, lo que los hace perfectos para datos complejos como billetes de avión, etiquetas de envío e identificaciones gubernamentales.
¿Qué formato de código de barras es mejor para la venta de entradas por móvil?
Los códigos de barras aztecas son óptimos para aplicaciones móviles de venta de billetes y transporte cuando se utiliza IronBarcode. Requieren menos espacio que los códigos QR a la vez que mantienen una gran capacidad de datos y legibilidad en dispositivos móviles.
What example use cases benefit from using IronBarcode's PDF417 format?
PDF417 is suitable for complex data storage like flight tickets, government IDs, and other applications requiring reliable data encoding. It can store up to 1,850 alphanumeric characters.
How can IronBarcode handle binary data for QR code generation?
IronBarcode can handle binary data by converting it to a Base64 string and then generating a QR code with high error correction. This approach is useful for encoding small file data or binary data streams.