Ir para o conteúdo do rodapé
COMPARAR COM OUTROS COMPONENTES

Comparação entre as bibliotecas de código de barras GrapeCity Barcode e IronBarcode em C#

O controle de código de barras da ComponentOne gera códigos de barras dentro de um aplicativo Windows Forms. Ele faz isso muito bem — a API é clara, a qualidade da saída é sólida e se integra naturalmente ao designer WinForms. Mas o âmbito de suas atividades é limitado. Não consegue ler códigos de barras. Não pode ser executado fora do contexto do Windows. E não se trata de um produto independente — ele é distribuído como parte do ComponentOne Studio Enterprise, uma assinatura de aproximadamente US$ 1.473 por desenvolvedor por ano, que inclui mais de 100 controles de interface do usuário para WinForms, WPF, Blazor e ASP.NET. Se você está avaliando opções de código de barras para um projeto .NET e encontrou o ComponentOne em uma lista de comparação, este artigo explica o que esse escopo significa na prática.

Entendendo o código de barras C1

C1BarCode é um controle visual do WinForms. O fluxo de trabalho de geração cria uma instância, define propriedades e chama GetImage() para recuperar um System.Drawing.Image:

// ComponentOne C1BarCode
using C1.Win.C1BarCode;
using System.Drawing;

// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;

using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne C1BarCode
using C1.Win.C1BarCode;
using System.Drawing;

// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;

using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.C1BarCode
Imports System.Drawing
Imports System.Drawing.Imaging

' License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"

Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.Code128
barcode.Text = "ITEM-12345"
barcode.BarHeight = 100
barcode.ModuleSize = 2
barcode.ShowText = True
barcode.CaptionPosition = CaptionPosition.Below

Using image As Image = barcode.GetImage()
    image.Save("barcode.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

A API de configuração de propriedades é familiar para desenvolvedores WinForms — ela mapeia diretamente para a superfície do designer. CodeType, BarHeight, ModuleSize, ShowText e CaptionPosition são todas propriedades visíveis para o designer que funcionam de forma idêntica no código.

O C1BarCode suporta os principais formatos 1D e 2D: Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code e PDF417, entre outros. Para geração de WinForms, abrange os casos de uso mais comuns.

Sem API de leitura

Essa não é uma lacuna que uma opção de configuração preenche. Não existe a classe C1BarCodeReader. Não existe o método Decode() em C1BarCode. O controle de código de barras da ComponentOne é projetado para ser apenas de geração.

Se sua aplicação precisa escanear códigos de barras a partir de imagens carregadas, verificar etiquetas impressas, processar documentos com códigos incorporados ou extrair dados de códigos QR em uma API web — nada disso é possível com o C1BarCode. Você precisaria de uma biblioteca separada para leitura, o que levanta a questão de por que pagar por um componente exclusivo para geração de código de barras dentro de um Suite Enterprise com mais de 100 controles, quando bibliotecas de código de barras independentes abrangem ambas as operações.

A ausência de uma API de leitura não é incomum para controles de código de barras WinForms projetados para impressão. O que torna isso um ponto de decisão é quando os requisitos aumentam — e os requisitos de código de barras quase sempre aumentam.

Restrição exclusiva do Windows

O C1BarCode requer uma configuração de framework de destino específica para Windows:


<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>

<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
XML

O moniker de estrutura de destino net8.0-windows e UseWindowsForms não são preferências opcionais. C1.Win.C1BarCode depende de System.Windows.Forms tipos — UserControl, PaintEventArgs, Graphics — que existem apenas no Windows. Remover net8.0-windows quebra a compilação.

Em contraste, oIronBarcodetem como alvo o net8.0 (ou qualquer TFM compatível) sem restrições de plataforma:


<TargetFramework>net8.0</TargetFramework>

<TargetFramework>net8.0</TargetFramework>
XML

Isso é importante em diversos cenários práticos:

  • Azure App Service no Linux: Plano padrão para novas implantações do App Service. net8.0-windows não pode ser alvo.
  • Contêineres Docker: Contêineres Linux são o padrão. Um contêiner Windows é maior, custa mais e não está disponível em muitos planos de nuvem.
  • API Web ASP.NET Core : Um endpoint de geração de código de barras que só pode ser implantado no Windows é uma restrição de implantação que a equipe eventualmente precisará remover.
  • Azure Functions: O plano de consumo é executado no Linux. Uma função de geração de código de barras com um destino net8.0-windows não pode ser implantada no plano de consumo.
  • Desenvolvimento para macOS: Os desenvolvedores no macOS não podem executar um projeto net8.0-windows localmente, mesmo para testar a lógica de geração.

A restrição de plataforma não é um problema se o seu aplicativo for uma ferramenta de desktop WinForms que só será executada no Windows. Isso se torna um problema no momento em que os requisitos de implantação incluem qualquer ambiente Linux ou em nuvem.

Pacotes de Suite

O C1BarCode não está disponível como um pacote NuGet independente. Faz parte do ComponentOne Studio Enterprise, que inclui o Suite completo de controles ComponentOne para WinForms, WPF, Blazor e ASP.NET. O preço do ComponentOne Studio Enterprise é de aproximadamente US$ 1.473 por desenvolvedor por ano (assinatura).

Esse Suite inclui mais de 100 componentes: grades, gráficos, agendadores, controles de entrada, designers de relatórios, controles de mapa, medidores e muito mais. Se você estiver desenvolvendo um aplicativo WinForms com grande volume de dados e precisar de muitos desses controles, o preço do Suite pode ser vantajoso. Se você precisa gerar códigos de barras e chegou à ComponentOne porque ela apareceu em uma busca, você está comprando um Suite de interface de usuário Enterprise completo, principalmente por causa de um único controle.

Não existe um pacote C1BarCode independente. dotnet add package C1.Win.C1BarCode não existe — o pacote é C1.Win.C1BarCode como parte do licenciamento GrapeCity.Documents ou do instalador do ComponentOne Studio. Para desenvolvedores que desejam a funcionalidade de código de barras sem o Suite completo, não há opção de compra parcial.

A estrutura de preços doIronBarcodeé diferente: trata-se de uma biblioteca de código de barras independente com licença perpétua a partir de US$ 749 para um único desenvolvedor. Não há controle de grade, biblioteca de gráficos ou designer de relatórios — apenas a funcionalidade de código de barras que você procura.

Personalização de código QR

Ambas as bibliotecas suportam a geração de códigos QR com opções de personalização. O estilo da API difere significativamente.

Abordagem do ComponentOne para definir propriedades:

// ComponentOne — QR code with error correction and color
using C1.Win.C1BarCode;
using System.Drawing;

C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;

using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne — QR code with error correction and color
using C1.Win.C1BarCode;
using System.Drawing;

C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;

using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.C1BarCode
Imports System.Drawing
Imports System.Drawing.Imaging

C1.C1License.Key = "YOUR-COMPONENTONE-KEY"

Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.QRCode
barcode.Text = "https://example.com/product/4821"
barcode.QRCodeVersion = QRCodeVersion.Version5
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High
barcode.QRCodeModel = QRCodeModel.Model2
barcode.ForeColor = Color.DarkBlue
barcode.BackColor = Color.White
barcode.ModuleSize = 4

Using image As Image = barcode.GetImage()
    image.Save("product-qr.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

Cadeia fluenteIronBarcode:

//IronBarcode— QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;

QRCodeWriter.CreateQrCode(
        "https://example.com/product/4821",
        300,
        QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("product-qr.png");
//IronBarcode— QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;

QRCodeWriter.CreateQrCode(
        "https://example.com/product/4821",
        300,
        QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("product-qr.png");
Imports IronBarCode
Imports System.Drawing

QRCodeWriter.CreateQrCode( _
        "https://example.com/product/4821", _
        300, _
        QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .ChangeBarCodeColor(Color.DarkBlue) _
    .SaveAsPng("product-qr.png")
$vbLabelText   $csharpLabel

A abordagem ComponentOne requer a instanciação de um objeto C1BarCode e a definição de várias propriedades antes de chamar GetImage(). O QRCodeWriter doIronBarcodeusa uma cadeia fluente — cada operação retorna o objeto de código de barras e você chama o .SaveAsPng() no final. Não há instâncias para gerenciar.

OIronBarcodetambém suporta a incorporação de logotipos em códigos QR, o que o C1BarCode não faz:

// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("branded-qr.png");
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("branded-qr.png");
' QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500) _
    .AddBrandLogo("company-logo.png") _
    .ChangeBarCodeColor(Color.DarkBlue) _
    .SaveAsPng("branded-qr.png")
$vbLabelText   $csharpLabel

Entendendo o IronBarcode

IronBarcode é uma biblioteca independente para .NET que abrange a geração e a leitura de códigos de barras. Ele é instalado a partir do NuGet (dotnet add package IronBarcode), é compatível com qualquer TFM .NET suportado, sem restrições de plataforma, e funciona no Windows, Linux, macOS, Docker, Azure e AWS Lambda.

A funcionalidade de leitura abrange documentos PDF nativamente:

// Read barcodes from a PDF — no image extraction needed
using IronBarCode;

var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;

var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
Imports IronBarCode

' Read barcodes from a PDF — no image extraction needed
Dim results = BarcodeReader.Read("invoice.pdf")
For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}")
Next
$vbLabelText   $csharpLabel

Para cenários de alto rendimento, o BarcodeReaderOptions controla a relação entre velocidade e precisão e a detecção de múltiplos códigos de barras:

// Multi-barcode read with performance options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};

var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
// Multi-barcode read with performance options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};

var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
Imports IronBarCode

' Multi-barcode read with performance options
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .ExpectedBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.QRCode
}

Dim results = BarcodeReader.Read("warehouse-manifest.jpg", options)
$vbLabelText   $csharpLabel

A geração abrange os formatos padrão com uma API estática consistente:

// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

// Geração de código QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

// Geração de código QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();
' Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping-label.png")

' Geração de código QR to byte array (for HTTP response)
Dim qrBytes As Byte() = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Plataformas suportadas: Windows, Linux, macOS, Docker, Azure (Serviço de Aplicativos e Funções), AWS Lambda. Versões do .NET suportadas: .NET 4.6.2 até .NET 9.

Comparação de recursos

Recurso Código de barras C1 da GrapeCity IronBarcode
Geração de código de barras Sim Sim
Leitura de código de barras Não Sim
Geração de código QR Sim Sim
Incorporação de logotipo QR Não Sim
Entrada de PDF para leitura N / D (sem leitura) Sim (nativo)
Plataforma de destino .NET @@--CÓDIGO-64030--@@ apenas Qualquer TFM (net8.0, etc.)
O uso do Windows Forms é obrigatório. Sim Não
Implantação Linux/Docker Não Sim
implantação do macOS Não Sim
Funções do Azure (Linux) Não Sim
ASP.NET Core do lado do servidor Limitado (somente para Windows) Sim
Pacote NuGet independente Não (somente suíte) Sim
Preços individuais N / D A partir de $749 perpétuo
Preços de Suite Aproximadamente US$ 1.473/desenvolvedor/ano (assinatura) N / D
API de geração fluente Não (definidor de propriedade) Sim
@@--CÓDIGO-64032--@@ Não Sim
@@--CÓDIGO-64033--@@ Não Sim
@@--CÓDIGO-64034--@@ Não Sim
Versões .NET suportadas .NET 6+ (Windows) .NET 4.6.2 até .NET 9
Opção de licença perpétua Não (assinatura) Sim

Referência de Mapeamento de API

Para equipes que estão migrando do C1BarCode para o IronBarcode, aplicam-se as seguintes equivalências diretas:

ComponentOne C1Código de barras IronBarcode
@@--CÓDIGO-64035--@@ @@--CÓDIGO-64036--@@
@@--CÓDIGO-64037--@@ Estático — nenhuma instância necessária
@@--CÓDIGO-64038--@@ BarcodeEncoding.Code128 (passado como parâmetro)
@@--CÓDIGO-64040--@@ Primeiro argumento de @@--CÓDIGO-64033--@@
@@--CÓDIGO-64042--@@ .ResizeTo(width, 100) no gravador de código de barras
@@--CÓDIGO-64044--@@ .ResizeTo() controla o dimensionamento em pixels
@@--CÓDIGO-64046--@@ @@--CÓDIGO-64047--@@
@@--CÓDIGO-64048--@@ @@--CÓDIGO-64049--@@
@@--CÓDIGO-64050--@@ @@--CÓDIGO-64051--@@ / @@--CÓDIGO-64052--@@
@@--CÓDIGO-64053--@@ @@--CÓDIGO-64054--@@ enum
@@--CÓDIGO-64055--@@ Automático (ou parâmetro de versão)
Sem API de leitura @@--CÓDIGO-64056--@@
@@--CÓDIGO-64057--@@ obrigatório @@--CÓDIGO-64058--@@ (ou qualquer TFM)
@@--CÓDIGO-64059--@@ obrigatório Não é necessário

Quando as equipes trocam

A necessidade de leitura surge. Este é o gatilho mais comum. Uma equipe cria um sistema de geração de etiquetas de código de barras com o C1BarCode e, em seguida, recebe a solicitação de verificar leituras, processar documentos de remessas recebidas ou decodificar códigos QR a partir de imagens carregadas. A biblioteca C1BarCode não pode ajudar. As opções são: adicionar uma segunda biblioteca de código de barras para leitura ou substituir a C1BarCode por uma biblioteca que suporte ambas as funções.

Implantação em Linux ou Docker. Um aplicativo de desktop WinForms distribuído para desktops Windows não enfrenta essa restrição. Uma API ASP.NET Core que gera imagens de código de barras é essencial — especialmente se precisar ser executada em um contêiner Linux ou implantada no Azure App Service no Linux. A estrutura de destino net8.0-windows bloqueia imediatamente essas opções de implantação.

Arquitetura de microsserviços ou sem servidor. Azure Functions, AWS Lambda e microsserviços em contêineres priorizam o Linux. Um serviço de geração de código de barras que não pode ser implantado no Linux não é um microsserviço viável.

Custo da assinatura do Suite versus escopo de requisitos. As equipes que pagam pelo ComponentOne Studio Enterprise e já utilizam seus grids, gráficos e outros controles já justificaram o investimento na assinatura. Equipes que assinaram o serviço principalmente ou exclusivamente para geração de códigos de barras estão pagando por mais de 100 controles que não utilizam. O custo da assinatura por desenvolvedor aumenta exponencialmente com o tamanho da equipe.

Preferência por licença perpétua. O ComponentOne Studio funciona apenas por assinatura. Não existe opção de licença perpétua. Para equipes que preferem ser proprietárias do software que distribuem — especialmente por motivos de conformidade ou manutenção a longo prazo — o licenciamento perpétuo da IronBarcode, a partir de US$ 749, tem uma estrutura diferente.

Conclusão

O C1BarCode gera códigos de barras de forma limpa em um contexto WinForms. Essa é realmente a sua principal vantagem, e para um aplicativo desktop WinForms que precisa apenas de geração de rótulos no Windows, é uma escolha funcional dentro do Suite ComponentOne.

O escopo termina aí. Sem necessidade de leitura, implantação exclusiva para Windows, sem pacote independente, licenciamento por assinatura. Quando os requisitos de um projeto vão além da geração de WinForms no Windows — como um requisito de leitura, uma implantação em Linux, uma API web, um contêiner Docker ou uma função na nuvem — o C1BarCode não consegue atendê-los. OIronBarcodeabrange a geração e leitura de códigos de barras, funciona em qualquer plataforma compatível com .NET e está disponível como um pacote independente, sem necessidade de assinatura de um Suite Enterprise com 100 controles.

Perguntas frequentes

O que é o código de barras GrapeCity?

GrapeCity Barcode é uma biblioteca .NET para geração e leitura de códigos de barras em aplicações C#. É uma das diversas alternativas que os desenvolvedores avaliam ao selecionar uma solução de código de barras para projetos .NET.

Quais são as principais diferenças entre o código de barras GrapeCity e o IronBarcode?

O IronBarcode utiliza uma API estática e sem estado, que não requer gerenciamento de instâncias, enquanto o GrapeCity Barcode normalmente exige a criação e configuração de instâncias antes do uso. O IronBarcode também oferece suporte nativo a PDF, detecção automática de formato e licenciamento com chave única em todos os ambientes.

O licenciamento do IronBarcode é mais fácil do que o do GrapeCity Barcode?

O IronBarcode utiliza uma única chave de licença que abrange tanto o ambiente de desenvolvimento quanto o de produção. Isso simplifica os pipelines de CI/CD e as configurações do Docker em comparação com sistemas de licenciamento que separam as chaves do SDK das chaves de tempo de execução.

O IronBarcode é compatível com todos os formatos de código de barras que o GrapeCity Barcode suporta?

O IronBarcode suporta mais de 30 simbologias de código de barras, incluindo QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 e muitas outras. A detecção automática de formato significa que não é necessária a enumeração explícita de formatos.

O IronBarcode suporta leitura nativa de códigos de barras em PDF?

Sim. O IronBarcode lê códigos de barras diretamente de arquivos PDF usando BarcodeReader.Read("document.pdf") sem a necessidade de uma biblioteca de renderização de PDF separada. Os resultados por página incluem número da página, formato do código de barras, valor e nível de confiança.

Como o IronBarcode lida com o processamento em lote em comparação com o GrapeCity Barcode?

Os métodos estáticos do IronBarcode são sem estado e naturalmente seguros para threads, permitindo o uso direto de Parallel.ForEach sem gerenciamento de instâncias por thread. Não há limite de throughput em nenhum plano de preços.

Quais versões do .NET o IronBarcode suporta?

O IronBarcode é compatível com o .NET Framework 4.6.2+, .NET Core 3.1 e .NET 5, 6, 7, 8 e 9 em um único pacote NuGet. As plataformas suportadas incluem Windows x64/x86, Linux x64 e macOS x64/ARM.

Como faço para instalar o IronBarcode em um projeto .NET?

Instale o IronBarcode via NuGet: execute 'Install-Package IronBarCode' no Console do Gerenciador de Pacotes ou 'dotnet add package IronBarCode' na CLI. Não são necessários instaladores de SDK ou arquivos de tempo de execução adicionais.

Posso avaliar o IronBarcode antes de comprar, ao contrário do GrapeCity?

Sim. O modo de avaliação do IronBarcode retorna os valores completos dos códigos de barras decodificados — apenas as imagens de saída geradas recebem uma marca d'água. Você pode testar a precisão de leitura em seus próprios documentos antes de efetuar a compra.

Qual é a diferença de preço entre o GrapeCity Barcode e o IronBarcode?

O IronBarcode tem um preço inicial de US$ 749 para uma licença perpétua de desenvolvedor único, que abrange desenvolvimento e produção. Detalhes sobre preços e opções de volume estão disponíveis na página de licenciamento do IronBarcode. Não há necessidade de uma licença de tempo de execução separada.

É simples migrar do GrapeCity Barcode para o IronBarcode?

A migração do GrapeCity Barcode para o IronBarcode envolve principalmente a substituição de chamadas de API baseadas em instâncias pelos métodos estáticos do IronBarcode, a remoção de código repetitivo de licenciamento e a atualização dos nomes das propriedades de resultado. A maioria das migrações consiste em reduzir o código em vez de adicioná-lo.

O IronBarcode gera códigos QR com logotipos?

Sim. O método `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` incorpora uma imagem da marca em um código QR nativamente, com correção de erros configurável. Códigos QR coloridos também são suportados através do método `ChangeBarCodeColor()`.

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 ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim