IRONSOFTWAREHOME
COMPARAR COM OUTROS COMPONENTES

Biblioteca de código de barras vs IronBarcode: Onde o Gerador de Código Aberto Para

Curtis Chau
Curtis Chau
Updated: 26 de abril de 2026

BarcodeLib é uma biblioteca .NET de código aberto que a maioria dos desenvolvedores acabam descobrindo que só pode criar códigos de barras. Uma parte deles também descobre o conflito de versão do SkiaSharp — geralmente no pior momento possível, quando acabaram de adicionar Biblioteca de código de barras a um projeto MAUI ou Blazor que já depende do SkiaSharp, e a compilação começa a lançar avisos NU1608. Este artigo cobre ambos os problemas. Biblioteca de código de barras é uma biblioteca legítima com um caso de uso claro. Entender onde isso termina é a questão prática.

Entendendo o BarcodeLib

BarcodeLib é uma biblioteca de código aberto para geração de imagens de código de barras para .NET, mantida no GitHub por Brad Barnhill. Está ativo desde 2007 e suporta cerca de 30 variantes de simbologia 1D. A licença Apache 2.0 permite seu uso comercial gratuito. Para geração pura de códigos de barras lineares — criando uma imagem a partir de uma string — funciona de forma confiável e tem servido bem a esse propósito ao longo de muitos anos de uso ativo.

A API é baseada em instâncias. Você cria um objeto Barcode, define as propriedades e chama Encode() com uma constante de tipo, uma string de dados e dimensões de pixel. O resultado é um SKImage (SkiaSharp) que você então codifica e salva ou transmite conforme necessário. Este fluxo de trabalho é acessível, e para projetos onde o requisito é estritamente imprimir imagens de códigos de barras lineares — etiquetas de envio, etiquetas de inventário, etiquetas de preço de varejo — é suficiente.

Principais características arquitetônicas do BarcodeLib:

  • Escopo somente de geração: A biblioteca não possui nenhuma API de leitura ou decodificação de qualquer tipo; Toda a sua superfície pública está voltada para a produção de imagens a partir de sequências de dados.
  • API baseada em instância: Cada operação requer a instanciação de um objeto Barcode e a configuração das propriedades de etiqueta e fonte antes de chamar Encode()
  • Retorna SKImage: A saída é um objeto de imagem SkiaSharp, que requer um passo SKEncodedImageFormat e um fluxo para produzir um arquivo ou matriz de bytes
  • Simbologias somente 1D: Suporta cerca de 30 formatos lineares incluindo Code128, EAN-13, UPC-A e Code39; o enum BarcodeStandard.Type na fonte 3.x atual não contém QR Code, Data Matrix, PDF417, Aztec ou outras entradas 2D
  • Dependência de SkiaSharp (v3.x): A série 3.x substituiu System.Drawing.Common por SkiaSharp para habilitar o suporte multiplataforma; Isso introduz o risco de conflito de versões quando outros pacotes no projeto também dependem do SkiaSharp.
  • Gratuito, sem necessidade de chave de licença: a licença Apache 2.0 cobre o uso comercial sem necessidade de chave de execução ou ativação.

Padrão de geração do núcleo do BarcodeLib

O fluxo de trabalho padrão de geração do Biblioteca de código de barras requer criar uma instância, configurar propriedades e chamar Encode() com dimensões:

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
b.IncludeLabel = true;
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

Este é o fluxo de trabalho completo de geração. O padrão setter de propriedades é o design: a configuração acontece na instância antes da chamada Encode(), e o valor de retorno é um SKImage que deve ser codificado e escrito em um fluxo.

Entendendo o IronBarcode

IronBarcode é uma biblioteca comercial .NET para códigos de barras que abrange tanto a geração quanto a leitura em um único pacote. Ele é instalado via NuGet, funciona no .NET Framework 4.6.2 até o .NET 9 e opera em Windows, Linux, macOS, Docker, Azure e AWS Lambda. A biblioteca é desenvolvida e mantida pela Iron Software com um modelo de suporte comercial.

A API de geração é estática e fluida — não há instância para criar, nem propriedades para definir antes da chamada principal. As opções de configuração encadeiam no resultado de BarcodeWriter.CreateBarcode() ou QRCodeWriter.CreateQrCode(). Os métodos de saída no final do encadeamento — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — eliminam o padrão intermediário MemoryStream que o Biblioteca de código de barras requer. A leitura faz parte do mesmo pacote, sem necessidade de biblioteca separada ou integração com o ZXing .NET para manter.

Principais características do IronBarcode:

  • Geração e leitura em um pacote: BarcodeWriter lida com geração; BarcodeReader lida com leitura; ambos são distribuídos na mesma instalação do NuGet.
  • API fluente estática: Não requer instanciação; cadeias de configuração após CreateBarcode() usando métodos fluentes
  • Saída direta de matriz de bytes: .ToPngBinaryData() retorna byte[] sem um passo MemoryStream
  • Suporte a PDF em ambas as extremidades: BarcodeReader.Read() aceita arquivos PDF nativamente; Os resultados da geração podem ser incorporados em PDFs.
  • Sem dependência do SkiaSharp: Independente do gráfico de versões do SkiaSharp, eliminando conflitos com o NU1608 no MAUI e em outros projetos.
  • Licença comercial com SLA: Preço entre US$ 749 e US$ 5.999 (licença perpétua); Inclui suporte comercial e garantia de atualização regular.
  • ReadingSpeed afinamento: BarcodeReaderOptions permite trocar minuciosidade da varredura por desempenho em volume

Comparação de recursos

RecursoBiblioteca de código de barrasIronBarcode
Geração de código de barrasSim (apenas 1D)Sim (1D e 2D)
Leitura de código de barrasNãoSim
2D symbologies (QR, Data Matrix, PDF417, Aztec)NãoSim
Leitura de código de barras em PDFNãoSim
Dependência SkiaSharp no gráficoSim (v3.x)Não
API encadeável fluenteNãoSim
LicençaApache 2.0 (gratuito)$999–$5.999 perpétuo

Comparação Detalhada de Recursos

RecursoBiblioteca de código de barrasIronBarcode
Geração
Geração Code128SimSim
Geração EAN-13 / UPC-ASimSim
Geração de código QRNãoSim (com incorporação de logotipo)
Data Matrix / PDF417 / AstecaNãoSim
Cobertura de simbologia 1D~30 variantes30+ variantes
API de geração encadeável fluenteNãoSim
Saída direta byte[]Manual (codificar fluxo).ToPngBinaryData()
Saída da geração de PDFNãoSim
Leitura
Leitura de código de barras a partir de imagemNãoSim (BarcodeReader.Read())
Leitura de código de barras a partir de PDFNãoSim (nativo, sem biblioteca extra)
Detecção de múltiplos códigos de barrasNãoSim (ExpectMultipleBarcodes)
Ajuste da velocidade de leituraN / DSim (ReadingSpeed enum)
Plataforma
WindowsSimSim
Linux / macOSParcial (dependente de SkiaSharp)Completo
Docker / contêinerConfiguração necessáriaSim
Compatibilidade do projeto MAUIRisco de conflito (NU1608)Sem conflito
.NET Framework 4.6.2+SimSim
.NET 6–9Sim (requer SkiaSharp 3.x)Sim
Licenciamento
Código aberto / gratuitoSim (Apache 2.0)Não
Suporte comercial / SLANãoSim
É necessária uma chave de licença.NãoSim
PreçosLivre$999–$5.999 perpétuo

API de geração de código de barras

As APIs de geração representam filosofias de design diferentes: Biblioteca de código de barras usa configuração de instância mutável enquanto IronBarcode usa uma cadeia fluente em um ponto de entrada estático.

Abordagem BarcodeLib

BarcodeLib requer construir uma instância e definir propriedades antes de chamar Encode() com dimensões. A saída é um SKImage:

using BarcodeStandard;
using SkiaSharp;

public byte[] GenerateCode128(string data)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(BarcodeStandard.Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}

O tipo de retorno SKImage significa que a saída de matriz de bytes requer uma chamada de codificação SKEncodedImageFormat e um MemoryStream. A propriedade IncludeLabel é uma alternância booleana — Biblioteca de código de barras renderiza a string de dados codificada como a etiqueta visível sob as barras.

Abordagem do IronBarcode

A geração do IronBarcode é totalmente estática. Cadeias de configuração após CreateBarcode(), e métodos de saída terminam a cadeia diretamente:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public byte[] GenerateCode128(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .AddBarcodeValueTextBelowBarcode()
        .ToPngBinaryData();
}

.ToPngBinaryData() retorna a matriz de bytes diretamente — sem objeto intermediário Image ou MemoryStream. .AddBarcodeValueTextBelowBarcode() renderiza a string de dados codificada como uma etiqueta abaixo das barras. Para cenários de geração avançados, consulte a documentação de geração de código de barras do IronBarcode .

Capacidade de leitura de código de barras

A leitura é a fronteira funcional mais significativa entre essas duas bibliotecas. O Biblioteca de código de barras não possui capacidade de leitura; O IronBarcode inclui um mecanismo de leitura completo no mesmo pacote.

Abordagem BarcodeLib

BarcodeLib não possui uma API de leitura. Não há método Decode(), Scan() ou ReadBarcode(). A leitura nunca fez parte do design da biblioteca. Qualquer tentativa de chamar um método de decodificação resulta em um erro de compilação:

using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();

// There is no Decode, Scan, or Read method on Barcode.
// b.Decode("barcode.png");      // does not exist
// b.Scan("barcode.png");        // does not exist
// b.ReadBarcode("barcode.png"); // does not exist

// The only public operation is generation:
SKImage img = b.Encode(BarcodeStandard.Type.Code128, "PRODUCT-12345", 300, 100);

Equipes que precisam tanto da geração quanto da leitura de código de barras em conjunto com o Biblioteca de código de barras devem adicionar uma segunda biblioteca — normalmente o ZXing .NET — o que introduz sua própria carga de gerenciamento de dependências e uma segunda superfície de API para manter.

Abordagem do IronBarcode

BarcodeReader.Read() aceita arquivos de imagem, arquivos PDF, fluxos e objetos System.Drawing.Bitmap. A leitura de um PDF não requer nenhuma biblioteca adicional:

using IronBarCode;

// Read from an image
var results = BarcodeReader.Read("barcode.png");
Console.WriteLine(results.First().Value);  // "PRODUCT-12345"

// Read all barcodes from a PDF — no separate PDF library needed
var pdfResults = BarcodeReader.Read("invoice-batch.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Tune reading for speed vs. thoroughness
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-scan.png", options);

O enum ReadingSpeed permite ajustar o desempenho da varredura para cenários de alto volume. Para obter orientações sobre a configuração de leitura, consulte a documentação de leitura do IronBarcode .

Conflito de dependência SkiaSharp

A dependência do SkiaSharp introduzida no Biblioteca de código de barras 3.x cria um tipo de conflito que não existe no IronBarcode.

Abordagem BarcodeLib

Começando com Biblioteca de código de barras 3.x, a biblioteca introduziu o SkiaSharp como um backend gráfico para substituir System.Drawing.Common, que se tornou exclusivo doWindowsapós .NET 6. O Biblioteca de código de barras 3.1.5 declara SkiaSharp >= 2.88.8. Se um projeto já usa SkiaSharp através de outra dependência — comum em projetos MAUI usando SkiaSharp.Views.Maui e Microsoft.Maui.Graphics, que tendem para o SkiaSharp 3.x — as versões resolvidas podem não convergir. O resultado é, no mínimo, um aviso NU1608 e, na pior das hipóteses, uma falha na vinculação do assembly em tempo de execução:

warning NU1608: Detected package version outside of dependency constraint:
BarcodeLib 3.1.5 requires SkiaSharp (>= 2.88.8) but
version SkiaSharp 3.116.1 was resolved.
Text

Forçar uma resolução por referências explícitas de pacotes é uma rota, embora não garanta compatibilidade em tempo de execução:

<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />
  <PackageReference Include="SkiaSharp" Version="3.116.1" />
  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>
XML

Mesmo com substituições explícitas, a compatibilidade depende das chamadas de API internas do Biblioteca de código de barras coincidirem com o que a versão do SkiaSharp resolvida expõe. Como um projeto mantido pela comunidade, o Biblioteca de código de barras não possui contrato de suporte comercial vinculado ao seu ritmo de lançamento.

Abordagem do IronBarcode

O IronBarcode não compartilha o gráfico de dependências do SkiaSharp com o código do aplicativo. Não há negociação de versões para gerenciar, nenhum erro NU1608 para diagnosticar e nenhum risco de vinculação de assembly em tempo de execução relacionado à resolução de versão do SkiaSharp. Projetos MAUI, projetos Blazor e qualquer outro aplicativo que dependa do SkiaSharp podem instalar o IronBarcode sem qualquer conflito de versão. Para padrões de integração específicos do MAUI, consulte a documentação do IronBarcode MAUI .

Referência de Mapeamento de API

Biblioteca de código de barrasIronBarcode
new Barcode()API estática — nenhuma instância necessária
b.Encode(BarcodeStandard.Type.Code128, "data", 300, 100)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).ResizeTo(300, 100)
b.IncludeLabel = true.AddBarcodeValueTextBelowBarcode()
Retorna SKImage.SaveAsPng(path) / .ToPngBinaryData()
BarcodeStandard.Type.Code128BarcodeEncoding.Code128
BarcodeStandard.Type.Code39BarcodeEncoding.Code39
BarcodeStandard.Type.Ean13BarcodeEncoding.EAN13
BarcodeStandard.Type.UpcABarcodeEncoding.UPCA
Não suportado (sem 2D no BarcodeLib)BarcodeEncoding.QRCode (também QRCodeWriter)
Sem API de leituraBarcodeReader.Read(path)
SkiaSharp no gráfico de dependênciaNenhuma dependência SkiaSharp

Quando as equipes consideram migrar do Biblioteca de código de barras para o IronBarcode

A exigência de leitura aparece.

Um sistema que gera etiquetas de envio há meses recebe um novo requisito: o aplicativo também deve processar etiquetas devolvidas pelos fornecedores. A integração com o armazém precisa analisar os códigos de barras presentes nos manifestos de remessas de entrada. Um sistema de gerenciamento de documentos precisa indexar códigos de barras em PDFs digitalizados. A Biblioteca de código de barras não consegue atender a nenhum desses requisitos — a API de leitura não existe. A equipe avalia a possibilidade de adicionar o ZXing .NET junto com a BarcodeLib, pondera o ônus de manutenção de duas bibliotecas e os dois grafos de dependência separados, e decide que o caminho mais limpo é uma biblioteca que lide com a geração e a leitura em uma única instalação do NuGet .

Conflito SkiaSharp em um projeto MAUI

Uma equipe adiciona a biblioteca Biblioteca de código de barras a um aplicativo MAUI existente e imediatamente se depara com avisos NU1608 durante a restauração. Eles investigam, identificam a incompatibilidade de versão entre o intervalo esperado de SkiaSharp do Biblioteca de código de barras e a versão necessária pelo MAUI, adicionam substituições explícitas <PackageReference> para forçar uma resolução, e consequem que a compilação passe. Em seguida, ocorre uma falha de execução no dispositivo quando os binários nativos do SkiaSharp carregam a versão errada. A correção requer uma investigação mais aprofundada do registro de vinculação do assembly. A mudança para o IronBarcode resolve o conflito pela raiz — não encontrando uma versão compatível do SkiaSharp, mas eliminando completamente a dependência compartilhada.

Processamento de código de barras em PDF necessário

Aplicações que geram documentos PDF com códigos de barras incorporados — faturas, ordens de serviço, manifestos de envio — às vezes precisam ler esses códigos de barras novamente durante o processamento subsequente. O Biblioteca de código de barras gera imagens de código de barras, mas não oferece suporte a PDF em nenhuma das extremidades. A leitura de códigos de barras de um PDF com o Biblioteca de código de barras requer primeiro a renderização do PDF em imagens usando uma biblioteca PDF separada e, em seguida, a passagem dessas imagens para uma biblioteca de leitura também separada. O IronBarcode lida com toda a cadeia nativamente: BarcodeReader.Read("file.pdf") percorre cada página e retorna todos os códigos de barras detectados sem uma etapa de renderização intermediária.

Surgimento da Necessidade de Código QR ou Outra Simbologia 2D

Projetos que inicialmente requeriam apenas códigos de barras lineares muitas vezes evoluem para precisar de saída de Código QR, Data Matrix, PDF417 ou Aztec. O Biblioteca de código de barras não gera simbologia 2D em sua série 3.x — o enum BarcodeStandard.Type não contém QR Code ou outras entradas 2D — então qualquer requisito 2D significa adicionar uma segunda biblioteca ou substituir o Biblioteca de código de barras totalmente. Os QRCodeWriter e BarcodeWriter do IronBarcode cobrem QR Code (com incorporação de logotipo, controle de cor e ajuste de correção de erro), Data Matrix, PDF417, e Aztec através da mesma API fluente. Equipes cujas necessidades de simbologia se expandem para 2D descobrem que a lacuna impulsiona a decisão de migração.

Considerações Comuns de Migração

API de instância para API fluente estática

O código do Biblioteca de código de barras usa um padrão de objeto mutável: cria uma instância Barcode, define propriedades, chama Encode(). O IronBarcode usa um padrão fluente estático: chama BarcodeWriter.CreateBarcode(), encadeia métodos de configuração, termina com um método de saída. O código existente que armazena uma instância Barcode como um campo ou a passa entre métodos precisará ser reestruturado. A alteração típica consiste em substituir o bloco de configuração de propriedades por uma cadeia de métodos:

// The property setters on b become chained methods
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .AddBarcodeValueTextBelowBarcode()
    .SaveAsPng(outputPath);

SKImage para Saída Direta

O Biblioteca de código de barras 3.x retorna SKImage, que requer SKEncodedImageFormat e um fluxo para produzir bytes. Qualquer código digitado para SKImage ou passando por image.Encode(...).SaveTo(stream) precisará ser atualizado. A cadeia fluente do IronBarcode termina diretamente com o formato de saída desejado — .SaveAsPng(), .ToPngBinaryData(), .ToAnyImageData() — removendo a necessidade do objeto de imagem intermediário e da etapa de codificação para fluxo.

Enum de Tipo para Enum de Codificação de Código de Barras

O Biblioteca de código de barras 3.x usa o enum BarcodeStandard.Type com valores PascalCase, como BarcodeStandard.Type.Code128. O IronBarcode usa o enum BarcodeEncoding com valores como BarcodeEncoding.Code128. Os valores 1D mapeiam diretamente: Code128Code128, Ean13EAN13, UpcAUPCA, Code39Code39. Um grep por BarcodeStandard.Type. em arquivos .cs identifica todas as ocorrências que precisam ser atualizadas.

Limpeza de referência SkiaSharp

Projetos que adicionaram entradas explícitas <PackageReference Include="SkiaSharp"> apenas para resolver os avisos NU1608 do Biblioteca de código de barras podem remover essas substituições após mudar para o IronBarcode. O comando dotnet list package --include-transitive confirma se o SkiaSharp ainda é necessário por outros pacotes no projeto antes de removê-lo.

Funcionalidades adicionais do IronBarcode

Além da geração direta e da comparação de leitura, o IronBarcode inclui funcionalidades que o Biblioteca de código de barras não oferece:

Compatibilidade com .NET e Preparação para o Futuro

O IronBarcode oferece suporte ao .NET Framework 4.6.2 até o .NET 9 e mantém um ritmo regular de lançamentos alinhado com o cronograma de lançamentos do .NET da Microsoft. Com a crescente adoção do .NET 10 até 2026, o desenvolvimento ativo da IronBarcode garante a compatibilidade futura sem exigir alterações no projeto. A biblioteca funciona sem modificações no Windows, Linux, macOS, Docker, Azure e AWS Lambda. O Biblioteca de código de barras também mantém um desenvolvimento ativo da comunidade, embora seu suporte multiplataforma na série 3.x dependa da compatibilidade de versão do SkiaSharp discutida nas seções de comparação acima. Para projetos que visam o .NET moderno no Linux ou em contêineres, a arquitetura multiplataforma sem dependências do IronBarcode evita a negociação de versões introduzida pelo backend SkiaSharp do BarcodeLib.

Conclusão

BarcodeLib e IronBarcode representam diferentes escopos de solução para trabalho com código de barras em .NET. Biblioteca de código de barras é uma biblioteca gratuita, focada e dedicada exclusivamente à geração de código, que tem atendido de forma confiável ao seu caso de uso definido por quase duas décadas.IronBarcode é uma biblioteca comercial que abrange tanto a geração quanto a leitura de códigos de barras, com uma API estática e fluente e sem dependência do SkiaSharp. A diferença não reside na qualidade dentro de um escopo compartilhado — reside no próprio escopo.

O Biblioteca de código de barras continua sendo uma escolha apropriada para projetos com requisitos estáveis de geração apenas linear noWindowsou em ambientes onde a paisagem de versão do SkiaSharp é controlada. Sua licença Apache 2.0, custo zero, e API direta o tornam uma solução prática para sistemas de etiquetas de envio, geradores de etiquetas de inventário e aplicações semelhantes que nunca precisarão digitalizar códigos de barras ou produzir simbologias 2D.

IronBarcode torna-se a escolha mais prática quando os requisitos vão além da geração de imagem linear: quando é necessária a capacidade de leitura, quando o projeto é um aplicativo MAUI ou multiplataforma onde os conflitos de versão do SkiaSharp são prováveis, quando o processamento de código de barras em PDF está no roteiro, ou quando qualquer simbologia 2D (Código QR, Data Matrix, PDF417, Aztec) é necessária. O custo da licença comercial representa a questão-limite — para equipes cujos requisitos se alinham com o que o IronBarcode adiciona sobre o BarcodeLib, a solução de pacote único e o suporte comercial são a troca de valor.

A avaliação honesta é que a maioria das equipes não começa a usar o IronBarcode desde o início. Eles começam com o Biblioteca de código de barras porque é gratuito e suficiente. Eles migram para o IronBarcode quando suas necessidades ultrapassam o que o escopo de geração exclusivo do Biblioteca de código de barras suporta. A migração está bem documentada e as alterações na interface da API são previsíveis. Compreender onde o Biblioteca de código de barras para — e especificamente que ele para na geração — é a informação prática necessária para tomar a decisão correta em relação ao momento da execução.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.