IRONSOFTWAREHOME
COMPARAR CON OTROS COMPONENTES

Código de barras DevExpress vs IronBarcode: Control de UI vs Biblioteca Independiente

Curtis Chau
Curtis Chau
Updated: 26 de abril de 2026

DevExpress es un kit de herramientas de interfaz de usuario .NET muy valorado. Los controles de cuadrícula, planificador, gráfico y tabla dinámica son ampliamente utilizados por equipos empresariales. Sin embargo, la compatibilidad con códigos de barras es otra historia. DevExpress envía un BarCodeControl — un control de WinForms y una etiqueta de Blazor DxBarCode — que te permite renderizar un código de barras en un formulario. El soporte de DevExpress ha confirmado que no existe capacidad de lectura y no hay planes actuales para agregarla. Si sus códigos de barras se encuentran en un proceso en segundo plano, una API web, un documento PDF o cualquier entorno sin un formulario de interfaz de usuario, este control no se aplica.

Esa limitación reduce la oferta de códigos de barras de DevExpress a un nicho específico: la representación visual de un código de barras dentro de una interfaz de usuario de DevExpress WinForms o Blazor . Para ese nicho de mercado funciona perfectamente. Para cualquier otra cosa —generación del lado del servidor, lectura de imágenes o PDF, procesamiento sin interfaz gráfica en Azure Functions o contenedores Docker— se necesita una herramienta diferente.

Comprensión de los controles de código de barras de DevExpress

DevExpress BarCodeControl vive en DevExpress.XtraEditors, con sus clases generadoras de simbología en DevExpress.XtraPrinting.BarCode. No es una biblioteca independiente. Está incluido en la suite DXperience, que comienza en $1,699.99 al año (suscripciones universales son $2,299.99). No existe ningún paquete NuGet independiente que contenga solo códigos de barras y que puedas instalar.

El BarCodeControl es un control de WinForms. Se configura con un objeto de simbología, se establecen las propiedades y se muestra en pantalla. Guardar ese renderizado en un archivo requiere llamar a DrawToBitmap, que espera un Bitmap preasignado del tamaño correcto:

// DevExpress WinForms: UI control, not a library
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // Code128Generator, etc.
using System.Drawing;
using System.Drawing.Imaging;

var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f;  // document units, not pixels
barCode.ShowText = true;

// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();

Aquí se observan varios puntos de fricción. Primero, barCode.Module está en unidades de documento en lugar de píxeles, lo que crea una discrepancia si estás pensando en dimensiones de píxeles. Segundo, debes conocer el tamaño final en píxeles antes de asignar el Bitmap. En tercer lugar, el control requiere que se carguen los ensamblados de WinForms, lo que significa que una API mínima de ASP.NET Core o un servicio de consola en segundo plano deben cargar la infraestructura de Windows Forms solo para generar una imagen de código de barras.

La etiqueta de Blazor DxBarCode es conceptualmente similar pero es un componente Razor para renderización de IU, no un API de generación del lado del servidor.

Sin capacidad de lectura

La postura oficial de DevExpress es que no ofrecen funciones de reconocimiento o escaneo de códigos de barras. El Centro de Soporte de DevExpress establece: "El control BarCode de DevExpress está diseñado solo para generación de códigos de barras. No proporcionamos funcionalidad de reconocimiento/escaneo de códigos de barras." No hay planes actuales para agregarla.

Para los equipos que comienzan con una aplicación DevExpress WinForms y posteriormente necesitan escanear un código de barras de una imagen cargada o leer un código QR de un archivo PDF adjunto, la caja de herramientas de DevExpress no les será de utilidad. Deberán incorporar una biblioteca independiente para gestionar la lectura, lo que plantea de inmediato la cuestión de si la generación de la aplicación también debería migrar a esa biblioteca para mantener la coherencia de la API.

IronBarcode maneja ambas direcciones:

// IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;

var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}

Para leer un archivo PDF no se necesitan bibliotecas adicionales:

// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page barcode: {result.Value}");
}

El problema de la agrupación de Suite

Los componentes de código de barras de DevExpress no se venden como producto independiente. Para usar BarCodeControl en cualquier proyecto, tu equipo necesita una suscripción a DevExpress — el nivel de ASP.NET & Blazor comienza en $1,099.99/año, DXperience (WinForms + WPF) es de $1,699.99/año, y Universal es de $2,299.99/año. El Suite incluye la cuadrícula, el gráfico, el programador, la tabla dinámica y muchos otros controles, lo cual es razonable si está creando una aplicación completa de DevExpress WinForms o Blazor . Si solo necesita la generación de códigos de barras para un servicio de backend, estará pagando por un conjunto completo de herramientas de interfaz de usuario que el servicio nunca utilizará.

IronBarcode es un paquete independiente:

dotnet add package IronBarcode
SHELL

La licencia Lite perpetua tiene un precio inicial de 749 dólares para un desarrollador. No incluye ningún kit de herramientas de interfaz de usuario. Obtendrás generación y lectura de códigos de barras, compatibilidad multiplataforma y nada más que no hayas solicitado.

Limitación de uso sin interfaz gráfica

El problema fundamental con BarCodeControl en escenarios del lado del servidor es que es un control de WinForms. En un proyecto de API mínima de ASP.NET Core .NET 6 o superior, los ensamblados de WinForms no se referencian de forma predeterminada. Para instanciar BarCodeControl, tu proyecto API debe, o bien, dirigir explícitamente a Windows y cargar el runtime de Windows Forms, o agregar referencias alternativas que traen infraestructura de IU que tu API nunca renderizará.

En un plan de consumo de Azure Functions, no hay ninguna capa de interfaz de usuario. En un contenedor Docker que ejecuta una imagen base de Linux, las dependencias de Windows Forms GDI+ pueden estar completamente ausentes. DevExpress no soporta oficialmente el uso de BarCodeControl en estos entornos sin interfaz.

IronBarcode utiliza una API estática y totalmente programática:

// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

Esta misma llamada funciona en una aplicación de consola, un controlador ASP.NET Core , una función de Azure activada por un mensaje de Service Bus o un contenedor Docker que se ejecuta en Linux. La API no cambia entre entornos. No existe ninguna dependencia de ensamblado de interfaz de usuario.

Un endpoint de ASP.NET Core que devuelve un código de barras como respuesta de un archivo PNG tiene este aspecto:

app.MapGet("/barcode/{sku}", (string sku) =>
{
    var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
        .ResizeTo(400, 100)
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});

No hay un patrón equivalente con BarCodeControl sin soluciones significativas.

Entendiendo IronBarcode

IronBarcode es una biblioteca .NET independiente para generar y leer códigos de barras. La API es completamente estática: no hay instancias que gestionar, ni ciclo de vida de control, ni dependencia de la interfaz de usuario. La generación y la lectura funcionan en la misma llamada:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .SaveAsPng("order-label.png");

// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
    .ResizeTo(450, 120)
    .ToPngBinaryData();

// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921

La activación de la licencia se realiza con una sola línea al iniciar el sistema:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

No hay llamada de red. Sin código repetitivo para el manejo de errores. Validación local.

Código QR lado a lado

Los códigos QR ilustran la brecha de API entre un control de interfaz de usuario y una biblioteca de programación.

Código QR de DevExpress — Control WinForms:

// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraEditors;              // BarCodeControl
using DevExpress.XtraPrinting.BarCode;     // QRCodeGenerator + QRCodeErrorCorrectionLevel

var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;

var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();

Código QR de IronBarcode : mismo resultado, sin necesidad de ensamblar la interfaz de usuario.

// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .SaveAsPng("qr.png");

Agregar el logotipo de la marca en el centro del código QR:

QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("qr-branded.png");

DevExpress no tiene un equivalente para logotipos incrustados. El control genera un código QR estándar y nada más.

Comparación de características

CaracterísticaCódigo de barras DevExpressIronBarcode
Generación de BarCodesSí (control WinForms, etiqueta Blazor )Sí (API programática, todos los entornos)
Lectura/escaneo de códigos de barrasNo — confirmado oficialmenteSí, imágenes, archivos PDF, matrices de bytes
Lectura de códigos de barras PDFNoSí, es nativo, no requiere biblioteca adicional.
Paquete NuGet independienteNo, se requiere la Suite DXperience.Sí — solo IronBarcode
Costo de la SuiteDesde $1,099.99/año (ASP.NET y Blazor) hasta $2,299.99/año (Universal)N/A — independiente
Costo de la licenciaSólo por suscripciónPerpetuo desde $999
API mínima de ASP.NET CoreRequiere soluciones alternativas para WinForms.Soporte nativo
Azure FunctionsNo se apoya sin cabezaSoporte completo
Docker / LinuxProblemas de GDI+ en imágenes base de LinuxSoporte completo
Aplicaciones de consolaRequiere la carga del ensamblado de WinFormsSoporte nativo
Generación de código QRSí (mediante la simbología de QRCodeGenerator)Sí (QRCodeWriter)
Código QR con logotipo integradoNoSí — .AddBrandLogo()
Niveles de corrección de errores QRH, Q, M, LMáximo, Alto, Medio, Bajo
Código 128
Matriz de datos
PDF417
azteca
Salida del archivoDrawToBitmap: asignación manual de mapas de bits.SaveAsPng(), .SaveAsGif(), .SaveAsSvg()
Salida binaria (respuesta HTTP)Mapa de bits manual → MemoryStreamtoPngBinaryData()
Lectura multihiloN/A — sin lecturaMaxParallelThreads = 4
Lectura de múltiples códigos de barrasN/A — sin lecturaExpectMultipleBarcodes = true
PlataformasWindows (WinForms / Blazor)Windows, Linux, macOS, Docker, Azure, AWS Lambda
Compatibilidad con versiones de .NET.NET Framework + .NET moderno (Windows).NET Framework 4.6.2 hasta el actual .NET

Referencia de mapeo de API

Los equipos familiarizados con el patrón de DevExpress BarCodeControl encontrarán útiles estas equivalencias:

Código de barras DevExpressIronBarcode
new BarCodeControl()Estático: no se necesita instancia
new Code128Generator() + barCode.Symbology = symbologyBarcodeEncoding.Code128 pasado como parámetro
new QRCodeGenerator() + QRCodeErrorCorrectionLevel.HQRCodeWriter.CreateQrCode("data", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
new DataMatrixGenerator() + DataMatrixSize.Matrix26x26BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new PDF417Generator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.PDF417)
new AztecGenerator()BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Aztec)
barCode.Module = 0.02f (unidades de documento).ResizeTo(width, height) (píxeles)
barCode.ShowText = true.AddBarcodeText()
DrawToBitmap(bitmap, rect) — asignación manual de Bitmap.SaveAsPng(path) — maneja el tamaño automáticamente
Manual BitmapMemoryStream para respuesta HTTP.ToPngBinaryData()
No se puede leer la APIBarcodeReader.Read(imagePath)
No hay tipo de resultado de lectura.Value (cadena), .Format (BarcodeEncoding)
Se requiere el ensamblaje de la interfaz de usuario en cada proyecto.Funciona en cualquier tipo de proyecto .NET.
Solo suite (desde $1,099.99/año)Versión independiente (desde $999 con licencia perpetua)

Cuando los equipos cambian

Existen varios escenarios específicos que suelen desencadenar el cambio de los controles de código de barras de DevExpress a IronBarcode.

Se requiere la lectura de códigos de barras. El escenario más común es una aplicación WinForms que lleva años generando códigos de barras y recibe una nueva solicitud de funcionalidad: la aplicación ahora debe escanear o verificar códigos de barras a partir de imágenes cargadas o capturas de cámara. DevExpress no tiene API de lectura. El equipo necesita una nueva biblioteca de todos modos, y tiene sentido consolidar la generación en esa misma biblioteca.

Se necesita un punto final de API web. Un equipo desarrolla un microservicio que genera etiquetas de código de barras bajo demanda, a las que se accede desde una interfaz web, una aplicación móvil u otro servicio. El proyecto ASP.NET Core no tiene dependencia de WinForms y el equipo no desea añadirla. La API estática de IronBarcode se integra en un punto final HTTP sin necesidad de código adicional de interfaz de usuario.

Implementación de Azure Functions o Lambda. Las implementaciones sin servidor suelen utilizar imágenes base de Linux y entornos de ejecución mínimos. BarCodeControl no está diseñado para este entorno. IronBarcode se ejecuta en Linux, en contenedores Docker, en Azure Functions y en AWS Lambda sin necesidad de realizar cambios en la configuración.

Costo de renovación de Suite para una sola función. Cuando llega el momento de la renovación y un equipo audita lo que realmente utiliza de la suite DXperience, descubrir que el único componente de DevExpress en un servicio particular es BarCodeControl crea una conversación sobre costos. Pagar una suscripción completa de DXperience ($1,699.99/año nuevo, $849.99/año en renovación) para generación de códigos de barras cuando una biblioteca independiente cuesta $999 perpetua es un argumento difícil de hacer.

Lectura de múltiples códigos de barras en archivos PDF. Los flujos de trabajo de procesamiento de documentos (lectura de códigos de barras en archivos PDF de facturas, manifiestos de envío o formularios escaneados) requieren compatibilidad con PDF y capacidad de lectura. IronBarcode lee directamente los archivos PDF sin necesidad de ninguna biblioteca adicional. DevExpress no ofrece ninguna de estas capacidades.

Conclusión

La oferta de códigos de barras de DevExpress se entiende mejor como una función de renderizado de interfaz de usuario integrada en un kit de herramientas de interfaz de usuario. Si tu aplicación es una aplicación de WinForms o Blazor que ya utiliza DevExpress para sus controles de cuadrícula y gráficos, y tu única necesidad de código de barras es mostrar visualmente un código de barras en un formulario, el BarCodeControl es una elección razonable — ya tienes la licencia.

En el momento que necesites cualquiera de lo siguiente, BarCodeControl deja de ser la herramienta adecuada: leer códigos de barras, generar códigos de barras en un contexto del lado del servidor, ejecutar en un entorno sin interfaz, trabajar en Linux, u operar sin una referencia de ensamblado de WinForms. El soporte de DevExpress ha confirmado que no dispone de funcionalidad de lectura y que no tiene previsto añadirla. La limitación del modo sin interfaz gráfica es un problema arquitectónico, no de configuración. Un control de interfaz de usuario es un control de interfaz de usuario.

IronBarcode está diseñado para el trabajo programático con códigos de barras: generación y lectura a través de una API estática, en cualquier entorno y en cualquier plataforma. Ambas herramientas resuelven problemas diferentes. El código de barras de DevExpress se utiliza para renderizar dentro de un formulario. IronBarcode sirve para procesar códigos de barras.

Curtis Chau
Escritor Técnico

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.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta