Saltar al pie de página
USO DE IRONBARCODE

C# Generar BarCode a partir de String: Tutorial completo con IronBarcode

La codificación de datos de cadenas en imágenes de códigos de barras es un requisito fundamental para los sistemas de inventario, las aplicaciones de venta al por menor y la gestión de documentos. Este tutorial demuestra cómo generar códigos de barras a partir de valores de cadena en C# usando IronBarcode , cubriendo todo, desde la instalación hasta el guardado de imágenes de códigos de barras en múltiples formatos, su estilo para uso en producción y el procesamiento de grandes lotes a partir de datos de bases de datos.

IronBarcode es una biblioteca .NET desarrollada por Iron Software que simplifica la generación y lectura de códigos de barras para desarrolladores .NET que crean aplicaciones Windows, servicios web y API alojadas en la nube. Comienza tu prueba gratuita para seguir los ejemplos de código a continuación.

¿Cómo instalar IronBarcode en un proyecto .NET ?

La instalación de IronBarcode lleva unos segundos si se utiliza la CLI de .NET o el Administrador de paquetes NuGet dentro de Visual Studio.

Opción 1: CLI .NET (recomendada for .NET 10):

dotnet add package Barcode
dotnet add package Barcode
SHELL

Opción 2: Consola del Administrador de paquetes NuGet en Visual Studio:

Install-Package BarCode

Alternativamente, busque "IronBarcode" en la GUI del Administrador de paquetes NuGet e instale el paquete oficial. La biblioteca está dirigida a .NET Framework 4.6.2+ y.NET 5 a .NET 10 , lo que garantiza la compatibilidad con las cargas de trabajo .NET modernas.

Después de la instalación, agregue una única directiva using en la parte superior de cada archivo que genere o lea códigos de barras:

using IronBarCode;
using IronBarCode;
$vbLabelText   $csharpLabel

Esta directiva expone BarcodeWriter, BarcodeReader, BarcodeEncoding y los demás tipos públicos tratados en esta guía.

¿Cómo generar un código de barras simple a partir de una cadena en C#?

El método BarcodeWriter.CreateBarcode es el punto de entrada para la generación de códigos de barras. Pase la cadena que desea codificar junto con un valor BarcodeEncoding y obtendrá un objeto GeneratedBarcode listo para guardar o manipular más.

using IronBarCode;

// Generate a Code 128 barcode from a product SKU string
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
barcode.SaveAsPng("product_barcode.png");
using IronBarCode;

// Generate a Code 128 barcode from a product SKU string
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
barcode.SaveAsPng("product_barcode.png");
$vbLabelText   $csharpLabel

Generación de códigos de barras

C# Generar código de barras a partir de una cadena: Tutorial completo con IronBarcode: Imagen 1 - Ejemplo de salida de código de barras

Esto crea una imagen de código de barras Code128 a partir de la cadena de producto y la guarda como archivo PNG. El método CreateBarcode gestiona toda la complejidad de la codificación, por lo que se puede generar una imagen de código de barras con un código mínimo. IronBarcode admite guardar en formatos PNG, JPEG, GIF, TIFF, BMP y SVG .

El método también acepta parámetros opcionales de ancho y alto para controlar las dimensiones de salida, lo que ayuda a garantizar una calidad de escaneo adecuada en el entorno de destino:

using IronBarCode;

// Specify width and height in pixels for the barcode image
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120);
barcode.SaveAsPng("product_barcode_sized.png");
using IronBarCode;

// Specify width and height in pixels for the barcode image
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120);
barcode.SaveAsPng("product_barcode_sized.png");
$vbLabelText   $csharpLabel

Establecer dimensiones explícitas es especialmente útil al generar etiquetas para impresoras de etiquetas térmicas, donde el tamaño de salida debe coincidir exactamente con el stock de etiquetas.

¿Qué formatos de código de barras admite IronBarcode?

IronBarcode admite más de 20 tipos de códigos de barras para diferentes casos de uso. Seleccionar el formato correcto garantiza un escaneo adecuado y una capacidad de datos adecuada para la aplicación.

using IronBarCode;

string url = "https://ironsoftware.com/csharp/barcode/";
string numericId = "0123456789012";

// QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode)
    .SaveAsPng("qrcode.png");

// UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA)
    .SaveAsPng("upc_barcode.png");

// PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417)
    .SaveAsJpeg("pdf417_barcode.jpeg");
using IronBarCode;

string url = "https://ironsoftware.com/csharp/barcode/";
string numericId = "0123456789012";

// QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode)
    .SaveAsPng("qrcode.png");

// UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA)
    .SaveAsPng("upc_barcode.png");

// PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417)
    .SaveAsJpeg("pdf417_barcode.jpeg");
$vbLabelText   $csharpLabel

Salidas de imágenes de BarCode

C# Generar código de barras a partir de una cadena: Tutorial completo con IronBarcode: Imagen 2 - Códigos de barras generados

La siguiente tabla resume cuándo utilizar cada formato principal:

Formatoos de códigos de barras compatibles con IronBarcode por caso de uso
FormatoMejor paraConjunto de caracteres
`QRCode`URL, texto, escaneo móvilASCII + Unicode
`Code128`Códigos de producto alfanuméricos, etiquetas de envíoASCII completo
`UPCA` / `EAN13`sistemas de punto de venta al por menorSólo numérico
`PDF417`Documentos de identidad, tarjetas de embarque, documentosDatos binarios
`DataMatrix`Etiquetas pequeñas, electrónicaASCII + Binario
`Aztec`Billetes de transporte, embarque móvilASCII + Unicode

Para obtener la lista completa de codificaciones compatibles, visita la referencia de tipos de códigos de barras de IronBarcode .

¿Cómo personalizar y diseñar imágenes de códigos de barras en C#?

Más allá de la generación básica de códigos de barras, IronBarcode expone una API de estilo fluido para ajustar colores, agregar anotaciones y cambiar el tamaño de imágenes de códigos de barras sin ninguna biblioteca de procesamiento de imágenes externa.

using IronBarCode;
using IronSoftware.Drawing;

string orderNumber = "ORD-2024-00542";
var styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128);

// Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue);
styledBarcode.ChangeBackgroundColor(Color.White);

// Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", new Font("Arial", 12), Color.Black, 5);
styledBarcode.AddBarcodeValueTextBelowBarcode(new Font("Arial", 10), Color.Gray, 5);

// Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150);
styledBarcode.SaveAsPng("styled_order_barcode.png");
using IronBarCode;
using IronSoftware.Drawing;

string orderNumber = "ORD-2024-00542";
var styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128);

// Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue);
styledBarcode.ChangeBackgroundColor(Color.White);

// Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", new Font("Arial", 12), Color.Black, 5);
styledBarcode.AddBarcodeValueTextBelowBarcode(new Font("Arial", 10), Color.Gray, 5);

// Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150);
styledBarcode.SaveAsPng("styled_order_barcode.png");
$vbLabelText   $csharpLabel

Edición de código de barras con estilo

C# Generar código de barras a partir de una cadena: Tutorial completo con IronBarcode: Imagen 3 - código de barras con estilo

¿Qué propiedades de estilo están disponibles?

La clase GeneratedBarcode expone varias categorías de métodos de estilo:

  • Control de color -- ChangeBarCodeColor, ChangeBackgroundColor aceptan cualquier Color de IronSoftware.Drawing
  • Anotaciones de texto : agregue texto encima o debajo del código de barras con fuente, tamaño y color personalizados
  • Control de margen : configure el relleno alrededor del código de barras para mejorar el rendimiento del escáner en etiquetas desordenadas
  • Rotación : gire la imagen del código de barras lateralmente o en diagonal para diseños de etiquetas que requieren orientación vertical
  • Cambiar tamaño : corrige el ancho y la altura en píxeles sin distorsionar los datos codificados

Los métodos de estilo se encadenan de forma natural, manteniendo el código legible mientras producen imágenes de código de barras que coinciden con el diseño visual de la aplicación. Para obtener una guía más detallada, consulte la guía práctica de estilo de código de barras .

¿Cómo generar múltiples códigos de barras a partir de datos de una base de datos?

Las aplicaciones del mundo real con frecuencia requieren la generación de códigos de barras para colecciones de artículos: catálogos de productos, ejecuciones de reposición de existencias o flujos de trabajo de despacho de pedidos. IronBarcode gestiona el procesamiento por lotes sin ninguna configuración adicional.

using IronBarCode;

// Data sourced from a database query result
List<string> productIds =
[
    "PROD-001-X",
    "PROD-002-Y",
    "PROD-003-Z",
    "PROD-004-W"
];

// Generate one barcode image per product ID
foreach (string productId in productIds)
{
    var barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100);
    barcode.SaveAsPng($"barcodes/{productId}.png");
}
using IronBarCode;

// Data sourced from a database query result
List<string> productIds =
[
    "PROD-001-X",
    "PROD-002-Y",
    "PROD-003-Z",
    "PROD-004-W"
];

// Generate one barcode image per product ID
foreach (string productId in productIds)
{
    var barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100);
    barcode.SaveAsPng($"barcodes/{productId}.png");
}
$vbLabelText   $csharpLabel

BarCodes de salida

C# Generar código de barras a partir de una cadena: Tutorial completo con IronBarcode: Imagen 4 - múltiples códigos de barras generados

Escalado a grandes volúmenes

El patrón de bucle anterior se escala a miles de registros sin modificaciones. Para la generación de códigos de barras de gran volumen, IronBarcode admite operaciones asincrónicas y multiproceso para maximizar el rendimiento en servidores de múltiples núcleos.

Las imágenes de códigos de barras generadas se pueden incorporar en informes PDF, imprimir en etiquetas o almacenar en un sistema de gestión de documentos. Cada imagen codifica la cadena original en un patrón binario que los lectores de códigos de barras decodifican en texto.

Para trabajos de producción por lotes que generan miles de códigos de barras por ejecución, considere precalentar el motor IronBarcode antes de que comience el ciclo. La primera llamada a CreateBarcode inicializa los cachés de codificación internos; Como resultado, las llamadas posteriores dentro del mismo proceso se completan más rápido. Al envolver todo el lote en un único método cronometrado, también resulta sencillo registrar estadísticas agregadas (total de códigos de barras generados, cualquier falla de codificación y tiempo transcurrido) antes de que finalice el lote. Este patrón se integra perfectamente con marcos de trabajo en segundo plano como Hangfire o IHostedService integrado de .NET para tareas de generación programadas.

¿Cómo guardar y exportar códigos de barras en diferentes formatos de archivo?

GeneratedBarcode ofrece una variedad de métodos de guardado que cubren los formatos de imagen más comunes utilizados en aplicaciones comerciales:

using IronBarCode;

string value = "EXPORT-TEST-001";
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);

// Save to disk in multiple formats
barcode.SaveAsPng("barcode.png");       // Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg");      // Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif");       // Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff");     // Multi-page archival format
barcode.SaveAsBmp("barcode.bmp");       // Uncompressed bitmap

// Export as a byte array for in-memory operations (API responses, database storage)
byte[] pngBytes = barcode.ToStream(ImageFormato.Png).ToArray();
using IronBarCode;

string value = "EXPORT-TEST-001";
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);

// Save to disk in multiple formats
barcode.SaveAsPng("barcode.png");       // Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg");      // Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif");       // Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff");     // Multi-page archival format
barcode.SaveAsBmp("barcode.bmp");       // Uncompressed bitmap

// Export as a byte array for in-memory operations (API responses, database storage)
byte[] pngBytes = barcode.ToStream(ImageFormato.Png).ToArray();
$vbLabelText   $csharpLabel

La elección del formato adecuado depende del consumidor final. PNG funciona bien para etiquetas y documentos listos para imprimir. JPEG es adecuado para aplicaciones donde el tamaño de almacenamiento es una limitación. Para incrustar códigos de barras directamente en documentos PDF , IronBarcode se integra con IronPDF para estampar o insertar imágenes de códigos de barras mediante programación.

La sobrecarga ToStream es particularmente valiosa en las API web y las funciones en la nube donde escribir en el disco no es deseable. La matriz de bytes se puede almacenar en una columna BLOB de una base de datos, cargar en un almacenamiento en la nube o transmitir directamente a una respuesta HTTP sin ningún archivo intermedio en el sistema de archivos.

¿Cómo validar datos de cadena antes de codificarlos?

No todas las cadenas son válidas para todos los formatos de código de barras. UPC-A requiere exactamente 12 dígitos numéricos, EAN-13 requiere 13 y algunos formatos 1D rechazan caracteres fuera de un subconjunto ASCII limitado. Pasar datos no válidos a CreateBarcode genera un IronBarCodeEncodingException. Envolver la llamada en un bloque try/catch y validar la entrada por adelantado evita excepciones no controladas en producción:

using IronBarCode;

bool TryCreateBarcode(string value, BarcodeEncoding encoding, string outputPath)
{
    if (string.IsNullOrWhiteSpace(value))
    {
        Console.WriteLine("Value must not be empty.");
        return false;
    }

    try
    {
        var barcode = BarcodeWriter.CreateBarcode(value, encoding);
        barcode.SaveAsPng(outputPath);
        return true;
    }
    catch (IronBarCodeEncodingException ex)
    {
        Console.WriteLine($"Encoding failed: {ex.Message}");
        return false;
    }
}

// Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png");   // succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png");  // encoding exception
using IronBarCode;

bool TryCreateBarcode(string value, BarcodeEncoding encoding, string outputPath)
{
    if (string.IsNullOrWhiteSpace(value))
    {
        Console.WriteLine("Value must not be empty.");
        return false;
    }

    try
    {
        var barcode = BarcodeWriter.CreateBarcode(value, encoding);
        barcode.SaveAsPng(outputPath);
        return true;
    }
    catch (IronBarCodeEncodingException ex)
    {
        Console.WriteLine($"Encoding failed: {ex.Message}");
        return false;
    }
}

// Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png");   // succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png");  // encoding exception
$vbLabelText   $csharpLabel

Cómo elegir el formato correcto para los datos de entrada

Cuando el formato del código de barras se puede configurar en tiempo de ejecución, un ayudante que asigna el tipo de contenido a la codificación adecuada evita fallas silenciosas:

  • Utilice BarcodeEncoding.QRCode cuando la cadena contenga URL, direcciones de correo electrónico o caracteres Unicode multibyte.
  • Utilice BarcodeEncoding.Code128 para cadenas alfanuméricas generales de hasta aproximadamente 80 caracteres.
  • Utilice BarcodeEncoding.EAN13 o BarcodeEncoding.UPCA solo cuando los datos sean puramente numéricos y la longitud sea fija. El dígito de control lo calcula automáticamente IronBarcode.
  • Utilice BarcodeEncoding.DataMatrix para cadenas alfanuméricas muy cortas que deben caber en una etiqueta físicamente pequeña.

Agregar validación de formato antes de llamar a CreateBarcode mantiene los mensajes de error visibles para el usuario en lugar de en crípticos seguimientos de pila en los registros de la aplicación.

¿Cómo se lee un código de barras a partir de un valor de cadena?

Generar un código de barras es solo la mitad del flujo de trabajo en muchos sistemas. La API de lectura de códigos de barras utiliza BarcodeReader.Read para decodificar una imagen a la cadena original.

using IronBarCode;

// Read all barcodes from an image file
var results = BarcodeReader.Read("product_barcode.png");

foreach (var result in results)
{
    // Output the decoded string value
    Console.WriteLine($"Decoded value: {result.Value}");
    Console.WriteLine($"Formato detected: {result.BarcodeType}");
}
using IronBarCode;

// Read all barcodes from an image file
var results = BarcodeReader.Read("product_barcode.png");

foreach (var result in results)
{
    // Output the decoded string value
    Console.WriteLine($"Decoded value: {result.Value}");
    Console.WriteLine($"Formato detected: {result.BarcodeType}");
}
$vbLabelText   $csharpLabel

Esto facilita la creación de flujos de trabajo de código de barras de ida y vuelta: generar un código de barras a partir de un registro de producto, guardarlo en un disco o en una cola de impresión de etiquetas y luego escanear la etiqueta física y decodificar el valor para buscar el registro. Para leer códigos de barras de archivos PDF o transmisiones de cámaras en vivo , IronBarcode proporciona métodos dedicados con la misma API sencilla.

¿Cómo se utiliza IronBarcode en las API web de ASP.NET Core ?

IronBarcode funciona dentro de los controladores ASP.NET Core y los controladores API mínimos. El patrón más común devuelve una imagen de código de barras como resultado de un archivo o un URI de datos codificado en base64 para su representación en el navegador.

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", (string value) =>
{
    var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
    byte[] imageBytes = barcode.ToStream(ImageFormato.Png).ToArray();
    return Results.File(imageBytes, "image/png");
});

app.Run();
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

// Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", (string value) =>
{
    var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
    byte[] imageBytes = barcode.ToStream(ImageFormato.Png).ToArray();
    return Results.File(imageBytes, "image/png");
});

app.Run();
$vbLabelText   $csharpLabel

El punto final genera un código de barras a pedido para cualquier valor pasado en la ruta URL. Para las implementaciones de producción, agregue almacenamiento en caché para que las solicitudes repetidas del mismo valor de código de barras no regeneren la imagen. Consulte el tutorial completo de generación de códigos de barras ASP.NET para obtener una guía más detallada que incluye inyección de dependencia y almacenamiento en caché de respuestas.

¿Cuales son tus próximos pasos?

Generar códigos de barras a partir de datos de cadenas en C# es sencillo con IronBarcode. La API fluida maneja la complejidad de la codificación de códigos de barras y al mismo tiempo proporciona flexibilidad para la personalización y el procesamiento por lotes. Ya sea que el objetivo sean simples códigos de barras Code 128 para inventario o códigos QR para aplicaciones móviles, IronBarcode ofrece una funcionalidad de código de barras confiable para aplicaciones .NET .

Para ir más allá:

Empiece con IronBarcode ahora.
green arrow pointer

Preguntas Frecuentes

¿Cómo instalar IronBarcode para generar códigos de barras en C#?

Ejecute 'dotnet add package Barcode' desde la CLI de .NET o abra el Administrador de paquetes NuGet en Visual Studio, busque ' IronBarcode' e instale el paquete oficial.

¿Qué formatos de código de barras se pueden generar a partir de una cadena utilizando IronBarcode?

IronBarcode admite más de 20 formatos, incluyendo código QR, Código 128, UPC-A, EAN-13, PDF417, Data Matrix y Aztec. El formato se especifica mediante la enumeración BarcodeEncoding.

¿Se puede personalizar la apariencia de los códigos de barras generados con IronBarcode ?

Sí. IronBarcode expone métodos para cambiar el color de la barra, el color de fondo, agregar anotaciones de texto encima o debajo del código de barras, establecer márgenes, cambiar el tamaño y rotar la imagen de salida.

¿ IronBarcode admite la generación de códigos de barras por lotes?

Sí. Itere sobre una lista o un conjunto de resultados de base de datos y llame a BarcodeWriter.CreateBarcode para cada valor. Para volúmenes muy altos, IronBarcode también admite operaciones asíncronas y multiproceso.

¿En qué formatos de imagen puede IronBarcode guardar códigos de barras?

IronBarcode puede guardar códigos de barras en formato PNG, JPEG, GIF, TIFF, BMP y SVG. El método ToStream devuelve una matriz de bytes para su uso en memoria sin necesidad de escribir en el disco.

¿Cómo se codifica una cadena en un código de barras utilizando IronBarcode?

Llama a BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128), donde value es la cadena y BarcodeEncoding especifica el formato. Luego, llama a SaveAsPng u otro método de guardado en el objeto GeneratedBarcode devuelto.

¿Qué versiones de .NET admite IronBarcode ?

IronBarcode es compatible con .NET Framework 4.6.2 y versiones posteriores, además de .NET 5 a .NET 10, cubriendo cargas de trabajo .NET tanto antiguas como modernas.

¿Se puede utilizar IronBarcode en aplicaciones web ASP.NET Core ?

Sí. IronBarcode funciona dentro de controladores y manejadores de API mínimos. Un patrón común llama a CreateBarcode, convierte el resultado en una matriz de bytes con ToStream y lo devuelve como un resultado de archivo desde el punto final.

¿Cómo leer un código de barras y devolverlo a su cadena original en C#?

Utilice BarcodeReader.Read(filePath) para decodificar una imagen. El método devuelve una colección de objetos BarcodeResult, cada uno con la cadena Value decodificada y el BarcodeType detectado.

¿Existe una prueba gratuita para IronBarcode?

Sí. IronBarcode ofrece una licencia de prueba gratuita que permite la evaluación completa de todas las funciones antes de comprometerse con una licencia paga para la implementación de producción.

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

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame