Saltar al pie de página
USO DE IRONBARCODE

Construya un SDK de código de barras en C#: Genere, lea y escanee códigos de barras con una sola biblioteca

La mayoría de los proyectos de SDK de códigos de barras en C# comienzan con el mismo dolor de cabeza: juntar bibliotecas separadas para generación, lectura y exportación, luego lidiar con compatibilidad entre tipos de códigos de barras y plataformas. IronBarcode elimina esa fricción por completo. Es una sola biblioteca .NET que maneja cada operación de código de barras que los desarrolladores suelen necesitar de un SDK de escáner de códigos de barras dedicado, desde crear códigos de barras lineales y códigos QR hasta escanear múltiples códigos de barras desde imágenes imperfectas y archivos PDF.

En este artículo, te guiaremos a través de las capacidades principales que hacen de IronBarcode una solución completa para proyectos de SDK de códigos de barras: generar imágenes de códigos de barras, leer datos de códigos de barras de archivos y configurar configuraciones de escaneo avanzadas para una precisión de calidad de producción. Cada ejemplo de código a continuación se ejecuta tal cual en una aplicación de consola .NET.

NuGet Instalar con NuGet

PM >  Install-Package BarCode

Echa un vistazo a IronBarcode en NuGet para una instalación rápida. Con más de 10 millones de descargas, está transformando el desarrollo de PDF con C#. También puede descargar el DLL.

¿Qué debe manejar un SDK de código de barras en proyectos .NET?

Un SDK de escáner de códigos de barras capaz necesita cubrir tres operaciones esenciales: generar códigos de barras, leer datos de códigos de barras de imágenes y documentos, y manejar problemas de calidad de escaneo del mundo real. Las mejores opciones de SDK de lector de códigos de barras también admiten una amplia gama de simbologías sin requerir bibliotecas separadas para cada una.

IronBarcode admite tanto códigos de barras lineales (Code 128, Code 39, UPC-A, UPC-E, EAN-8, EAN-13, GS1 DataBar) como códigos de barras 2D (Código QR, Data Matrix, PDF417, Aztec, MaxiCode). Esta cobertura significa que los desarrolladores .NET pueden procesar todo, desde etiquetas UPC-A de retail hasta códigos QR de almacén usando un único DLL de código de barras, sin dependencias adicionales, sin binarios nativos específicos de la plataforma. Una licencia de prueba gratuita da acceso completo a todas las características durante 30 días.

La biblioteca se ejecuta en sistemas operativos Windows, macOS y Linux, con soporte para implementaciones de aplicaciones .NET MAUI y Android. También se integra con herramientas de informes como Crystal Reports para escenarios que requieren generación de códigos de barras incrustada dentro de documentos empresariales. Ya sea que el proyecto sea una aplicación de consola, un escáner móvil .NET MAUI, o un lector de códigos de barras del lado del servidor procesando miles de imágenes, la misma API de SDK de escáner de códigos de barras lo maneja todo.

How Can Developers Generate Barcode Images in C#?

El método BarcodeWriter.CreateBarcode genera una imagen de código de barras a partir de un valor de cadena y una simbología especificada en una sola llamada. El objeto GeneratedBarcode devuelto puede guardarse como un archivo PNG, BMP, JPEG, PDF, HTML, o exportarse en formatos vectoriales como SVG.

using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
using IronBarCode;
// Generate a Code 128 barcode image from string data
var barcode = BarcodeWriter.CreateBarcode("PKG-2025-88421", BarcodeEncoding.Code128);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.ResizeTo(500, 150);
barcode.SaveAsPng("shipping-label.png");
// Create a styled QR code with a logo
var qrCode = QRCodeWriter.CreateQrCode("https://example.com/track/88421", 300);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkSlateGray);
qrCode.SaveAsPng("tracking-qr.png");
$vbLabelText   $csharpLabel

Imágenes de Código de Barras Generadas

Construir un SDK de Código de Barras en C#: Generar, Leer y Escanear Códigos de Barras con Una Biblioteca: Imagen 1 - Imágenes de salida de código de barras y código QR

La clase BarcodeWriter acepta datos como una cadena, un arreglo de bytes, o un flujo, proporcionando flexibilidad para diferentes fuentes de datos. La enumeración BarcodeEncoding controla la simbología, pasa BarcodeEncoding.QRCode para un código QR, BarcodeEncoding.UPCA para etiquetas de retail UPC-A, o cualquiera de los formatos de códigos de barras soportados. Para códigos QR estilizados, la clase dedicada QRCodeWriter soporta niveles de corrección de errores e inserción de logotipos, simplificando la creación de códigos de marca.

El objeto GeneratedBarcode también proporciona métodos para personalizar propiedades de códigos de barras como márgenes, colores, y texto de anotación. Las imágenes de códigos de barras pueden exportarse en formatos de imágenes rasterizadas (PNG, BMP, JPEG) y formatos vectoriales, o renderizarse directamente en HTML para escenarios de aplicaciones web. Consulta los ejemplos de creación de códigos de barras para opciones de salida adicionales.

¿Cómo funciona el lector de códigos de barras a través de archivos de imagen y PDF?

El método BarcodeReader.Read acepta una ruta de archivo de imagen, un arreglo de bytes, un bitmap o un flujo y devuelve una colección BarcodeResults que contiene cada código de barras encontrado en la entrada. Cada BarcodeResult expone el valor del código de barras, el tipo de codificación, el número de página, los datos binarios y la región de la imagen del código de barras.

using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
    Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
    Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
using IronBarCode;
// Use the barcode reader to decode all barcodes from an image file
var results = BarcodeReader.Read("multiple-barcodes.png");
foreach (var result in results)
{
    Console.WriteLine($"Type: {result.BarcodeType} | Value: {result.Value}");
}
// The barcode reader also scans multi-page PDF documents
var pdfResults = BarcodeReader.ReadPdf("invoice-batch.pdf");
foreach (var item in pdfResults)
{
    Console.WriteLine($"Page {item.PageNumber}: {item.Value}");
}
$vbLabelText   $csharpLabel

Salida de Lectura de Códigos de Barras

Construir un SDK de Código de Barras en C#: Generar, Leer y Escanear Códigos de Barras con Una Biblioteca: Imagen 2 - Salida de lectura de datos de código de barras

El lector de códigos de barras realiza el reconocimiento de códigos de barras mediante todas las simbologías principales por defecto, detectando automáticamente códigos de barras lineales, códigos de barras 2D y códigos QR sin requerir que el desarrollador especifique qué tipo escanear. Al escanear un PDF, ReadPdf procesa cada página y devuelve resultados con números de página adjuntos, ideal para flujos de trabajo de indexación y archivo de documentos.

Cada BarcodeResult en la colección proporciona acceso a los datos decodificados del código de barras tanto como una cadena como un arreglo de bytes. Esto es particularmente útil al procesar códigos Data Matrix u otras simbologías que codifican datos binarios. El resultado del lector de códigos de barras también incluye las coordenadas de posición del código de barras, lo que permite a las aplicaciones mapear dónde apareció cada código en el archivo de imagen fuente. Para el procesamiento por lotes de una carpeta completa de imágenes, pasa un IEnumerable<string> de rutas de archivo al lector de códigos de barras con multitarea habilitada para ejecución paralela.

¿Cómo puede un SDK de escáner de códigos de barras manejar la calidad de imagen del mundo real?

Las imágenes de códigos de barras del mundo real, de cámaras de almacén, capturas móviles o documentos escaneados, rara vez son perfectas en píxeles. La clase BarcodeReaderOptions proporciona un control granular sobre la velocidad de escaneo, las simbologías esperadas, los filtros de corrección de imagen y el procesamiento por lotes multihilo para lograr reconocimiento de códigos de barras altamente preciso incluso en entradas dañadas o desalineadas.

using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
    Multithreaded = true,
    MaxParallelThreads = 4,
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter()
    }
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
    Console.WriteLine($"Detected: {barcode.BarcodeType} &mdash; {barcode.Value}");
}
using IronBarCode;
// Configure the barcode reader for challenging, real-world image quality
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Detailed,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.AllOneDimensional | BarcodeEncoding.QRCode,
    Multithreaded = true,
    MaxParallelThreads = 4,
    ImageFilters = new ImageFilterCollection
    {
        new SharpenFilter(),
        new ContrastFilter()
    }
};
// Scan multiple barcodes from a noisy image with high accuracy
var results = BarcodeReader.Read("camera-capture.jpg", options);
foreach (var barcode in results)
{
    Console.WriteLine($"Detected: {barcode.BarcodeType} &mdash; {barcode.Value}");
}
$vbLabelText   $csharpLabel

Salida para Escaneo de Imagen de Código de Barras Ruido

Construir un SDK de Código de Barras en C#: Generar, Leer y Escanear Códigos de Barras con Una Biblioteca: Imagen 3 - Ejemplo de salida para escaneo de imagen de código de barras ruidosa

Establecer ExpectBarcodeTypes a un subconjunto específico de simbologías (en lugar de escanear todos los tipos) mejora dramáticamente tanto la velocidad como la precisión. La enumeración ReadingSpeed ofrece cuatro niveles — Faster, Balanced, Detailed, y ExtremeDetail, permitiendo a los desarrolladores ajustar la compensación entre el tiempo de procesamiento y la exhaustividad del reconocimiento del código de barras. La ImageFilterCollection aplica filtros de preprocesamiento como enfoque, ajuste de contraste y umbral adaptativo antes de que el motor de escaneo procese la imagen del código de barras.

La bandera ExpectMultipleBarcodes le dice al motor que continúe escaneando después de encontrar la primera coincidencia, lo cual es esencial cuando necesitas escanear múltiples códigos de barras en una sola etiqueta o página de documento. Combinado con Multithreaded = true, la biblioteca distribuye el procesamiento por lotes entre los núcleos de la CPU para escenarios de escaneo de alto rendimiento. Para una inmersión más profunda en estas configuraciones, el tutorial de lectura de códigos de barras cubre cada opción de configuración con un código de muestra.

¿Qué tipos de códigos de barras y plataformas están soportados?

IronBarcode cubre las simbologías de códigos de barras más utilizadas en aplicaciones de retail, logística, salud y empresa. La siguiente tabla resume los tipos de códigos de barras soportados y las plataformas de destino.

Categoría Formatos Soportados
Códigos de Barras Lineales Code 128, Code 39, Code 93, UPC-A, UPC-E, EAN-8, EAN-13, GS1 DataBar, ITF, MSI, Codabar
Códigos de Barras 2D Código QR, Data Matrix, PDF417, Aztec, MaxiCode
Formatos de imagen PNG, JPEG, BMP, GIF, TIFF, SVG
Formatos de Documento PDF (multihojas), HTML
Plataformas .NET .NET 8/7/6, .NET Core, .NET Framework 4.6.2+, .NET Standard 2.0+
Tipos de Aplicaciones Consola, Windows Forms, WPF, ASP.NET, .NET MAUI, Blazor
Sistemas Operativos Windows, macOS, Linux, Android (vía .NET MAUI)

La biblioteca se instala como un único paquete NuGet (BarCode) o como un DLL de código de barras independiente mediante descarga directa. No se requieren dependencias de SDK nativos, todo el SDK de escáner de códigos de barras se distribuye como código .NET gestionado. Instálalo en Visual Studio a través del Administrador de Paquetes NuGet, o ejecuta dotnet add package BarCode desde la CLI. Para escenarios de implementación que requieren control a nivel de DLL, la descarga de DLL de IronBarcode proporciona un paquete ZIP listo para integración manual.

IronBarcode también soporta la integración con Crystal Reports y otras herramientas de informes donde se necesita generación de códigos de barras incrustada. Para el desarrollo de aplicaciones .NET MAUI y Android, el SDK de escáner de códigos de barras proporciona lectura de códigos de barras multiplataforma sin requerir SDK específicos de cámara para la plataforma — simplemente pasa un archivo de imagen capturado por la cámara del dispositivo al lector de códigos de barras. El tutorial de escáner de códigos de barras .NET MAUI cubre este flujo de trabajo de .NET MAUI en detalle, incluidas las permisos de Android y un código de muestra para el escaneo móvil.

¿Dónde ir a partir de aquí?

IronBarcode ofrece a los desarrolladores .NET una biblioteca completa de códigos de barras para proyectos a nivel de SDK con generación, lectura, escaneo por lotes y exportación todo incluido, sin la complejidad de manejar múltiples paquetes. La última versión agrega preprocesamiento de imágenes impulsado por ML y el método ReadPdfs para procesamiento por lotes de PDF, continuando con lo que una sola biblioteca puede hacer.

Comience una prueba gratuita para probar cada característica en su propio proyecto sin marcas de agua ni restricciones. Cuando estés listo para la producción, explora las opciones de licencia de IronBarcode comenzando en $799 para desarrolladores individuales — con soporte gratuito incluido del equipo de ingeniería de Iron Software.

Empiece con IronBarcode ahora.
green arrow pointer

Preguntas Frecuentes

¿Para qué se utiliza IronBarcode en proyectos C#?

IronBarcode es una biblioteca de .NET que simplifica las operaciones de códigos de barras permitiendo a los desarrolladores generar, leer y escanear varios tipos de códigos de barras dentro de proyectos C#, eliminando la necesidad de múltiples bibliotecas.

¿Puede IronBarcode manejar múltiples tipos de códigos de barras?

Sí, IronBarcode admite una amplia gama de tipos de códigos de barras, incluyendo códigos de barras lineales y códigos QR, asegurando la compatibilidad en diferentes aplicaciones.

¿Cómo mejora IronBarcode el escaneo de códigos de barras en C#?

IronBarcode mejora el escaneo de códigos de barras proporcionando una funcionalidad robusta para escanear múltiples códigos de barras de imágenes y archivos PDF imperfectos, mejorando la precisión y la eficiencia.

¿Está disponible el código de ejemplo para usar IronBarcode?

Sí, se incluye código de ejemplo para ayudar a los desarrolladores a integrar rápidamente funcionalidades de generación y escaneo de códigos de barras en sus proyectos C# usando IronBarcode.

¿Por qué elegir IronBarcode sobre bibliotecas separadas para operaciones de códigos de barras?

IronBarcode consolida las operaciones de generación, lectura y escaneo de códigos de barras en una sola biblioteca, reduciendo la complejidad y los problemas de compatibilidad asociados a usar múltiples bibliotecas.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me