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

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

O ecossistema de código de barras da Syncfusion gera códigos de barras por meio de controles de interface do usuário e vende um produto separado chamado Barcode Reader OPX para leitura. Esse produto de leitura utiliza internamente o ZXing .NET — uma biblioteca lançada sob a licença Apache 2.0 que qualquer desenvolvedor pode instalar diretamente e gratuitamente. As equipes que precisam tanto da geração quanto da leitura de códigos de barras pagam uma assinatura para usar uma biblioteca gratuita por meio de uma plataforma paga, e esse acordo influencia todas as decisões de arquitetura e custo subsequentes na história do código de barras da Syncfusion .

Entendendo o código de barras da Syncfusion

O código de barras Syncfusion não é uma biblioteca independente; É um componente do pacote Syncfusion Essential Studio. A parte de geração é distribuída como um controle de interface do usuário: SfBarcode para WinForms e WPF, e SfBarcodeGenerator para Blazor e MAUI. Esses controles renderizam um código de barras em um formulário em tempo de execução e foram projetados para serem usados ​​dentro do ecossistema mais amplo de componentes de interface do usuário da Syncfusion.

A parte de leitura é um produto comercial completamente separado. O Barcode Reader OPX é uma oferta distinta da Syncfusion com sua própria licença, seu próprio pacote NuGet e sua própria API. As equipes que precisam tanto de geração quanto de leitura de dados devem adquirir, manter e configurar dois produtos em vez de um.

A Licença Comunitária da Syncfusion oferece um nível gratuito para organizações qualificadas, mas a elegibilidade exige que todas as quatro condições a seguir sejam verdadeiras simultaneamente e continuamente:

  • Limite de receita: Receita bruta anual da empresa inferior a US$ 1.000.000 (todas as fontes de receita, não apenas software)
  • Limite de desenvolvedores: Cinco ou menos desenvolvedores na equipe
  • Limite de funcionários: Dez ou menos funcionários no total
  • Limite de capital: Capital externo total captado inferior a US$ 3.000.000 em todas as rodadas de financiamento.

Organizações governamentais são categoricamente inelegíveis, independentemente do porte. As condições são autodeclaradas e devem ser atendidas continuamente — ultrapassar qualquer um dos limites estabelecidos aciona a obrigação de obter uma licença comercial.

Outras características do ecossistema de código de barras da Syncfusion incluem:

  • Arquitetura de controle somente de geração: SfBarcode e SfBarcodeGenerator não possuem API de leitura. Não existe nenhum método .Read() ou .Scan() em qualquer lugar da superfície de controle.
  • Chaves de licença específicas da versão: as chaves de licença da Syncfusion estão vinculadas a intervalos de versões específicos do Essential Studio. A atualização da versão 24.x para a versão 25.x requer uma nova chave, uma atualização dos segredos em todos os ambientes e uma nova implementação para evitar que as marcas d'água da versão de avaliação apareçam em produção.
  • Registro de plataforma em várias etapas: Cada plataforma de destino (Blazor, MAUI) requer chamadas de registro de serviço específicas da plataforma, além da chamada de licença básica.
  • Não há caminho de geração headless para Blazor: SfBarcodeGenerator é um componente Razor que renderiza no navegador. Não possui API de saída de arquivos no servidor.
  • Sem saída em PDF: Nem o controle WinForms nem o Blazor conseguem gravar um código de barras diretamente em um arquivo PDF.
  • Licenciamento exclusivo para a suíte: o código de barras Syncfusion está incluído no Essential Studio. Não existe a opção de comprar um pacote de código de barras separadamente.
  • O leitor OPX utiliza software livre: o Barcode Reader OPX usa o ZXing .NET (Apache 2.0) internamente. O ZXing .NET está disponível diretamente via NuGet , sem custo algum.

A arquitetura de controle somente de geração

SfBarcode é um controle WinForms com uma API baseada em propriedades: Text, Symbology, BarHeight, NarrowBarWidth, ShowText. A renderização de um código de barras em um formulário funciona conforme o esperado em um designer WinForms. A geração programática de um arquivo de código de barras requer o padrão DrawToBitmap, que envolve a pré-alocação de um Bitmap com as dimensões corretas antes da renderização:

using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

// Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "12345678";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;

barcode.Width = 400;
barcode.Height = 150;
using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("barcode.png", ImageFormat.Png);
using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

// Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "12345678";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;

barcode.Width = 400;
barcode.Height = 150;
using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("barcode.png", ImageFormat.Png);
Imports Syncfusion.Windows.Forms.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

' Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "12345678"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.BarHeight = 100
barcode.NarrowBarWidth = 1
barcode.ShowText = True

barcode.Width = 400
barcode.Height = 150
Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("barcode.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

Esse padrão implica em carregar o runtime do Windows Forms em todos os projetos que o chamam, incluindo aplicativos de console, serviços ASP.NET Core e Funções do Azure. A variante Blazor, SfBarcodeGenerator, é um componente Razor e não possui nenhum caminho de saída de arquivo no servidor.

Entendendo o IronBarcode

IronBarcode é uma biblioteca de código de barras .NET criada para geração e leitura programática em todos os modelos de aplicativos .NET . Ele é distribuído como um único pacote NuGet que abrange tanto a geração quanto a leitura na mesma superfície de API, sem a necessidade de um produto secundário.

A biblioteca foi projetada em torno de um modelo de API estática: os chamadores invocam métodos estáticos (BarcodeWriter.CreateBarcode, BarcodeReader.Read, QRCodeWriter.CreateQrCode) e encadeiam métodos de saída diretamente no resultado. Esse padrão funciona de forma idêntica em aplicativos de desktop WinForms, serviços web ASP.NET Core , Azure Functions, aplicativos de console e contêineres Docker do Linux.

As características principais incluem:

  • Geração e leitura unificadas: ambas as funcionalidades estão no mesmo pacote NuGet , sob a mesma licença e utilizando a mesma interface de API.
  • API estática: Sem instanciação de controle, sem dependência de tempo de execução da interface do usuário, sem indireção.
  • Independente de plataforma: O mesmo código e a mesma chave de licença funcionam em WinForms, Blazor, MAUI, ASP.NET Core, console, Azure Functions e Docker no Linux.
  • Saída direta de arquivo: Os códigos de barras podem ser salvos diretamente em PNG, JPEG, SVG, HTML, PDF e outros formatos sem alocação intermediária.
  • Suporte integrado para PDF: SaveAsPdf() é um método de saída de primeira classe; A biblioteca também consegue ler códigos de barras de documentos PDF nativamente.
  • Detecção automática de formato na leitura: BarcodeReader.Read identifica o formato do código de barras automaticamente, sem exigir que o chamador especifique um tipo.
  • Chave única e estável: A chave de licença não muda entre atualizações NuGet secundárias ou de correção dentro de uma versão principal.
  • Funcionalidades do código QR: Suporta a incorporação de logotipos de marcas e a personalização de cores diretamente na API de geração.

Comparação de recursos

A tabela a seguir resume as principais diferenças entre o Código de barras Syncfusion e o IronBarcode:

Recurso Código de barras Syncfusion IronBarcode
Geração de código de barras Sim — controle de interface do usuário (WinForms, WPF, Blazor, MAUI) Sim — API programática estática, todos os ambientes
Leitura de código de barras Não — requer um leitor de código de barras OPX separado. Sim — mesmo pacote da geração anterior.
Saída de código de barras em PDF Não — requer o arquivo .pdf da Syncfusion separadamente. Sim — SaveAsPdf() integrado
Leitura de código de barras em PDF Não Sim — nativo
Geração sem interface gráfica / do lado do servidor Problema — O controle de interface do usuário requer o tempo de execução do WinForms. Nativo — API estática, sem dependência de interface do usuário
Nível gratuito Licença comunitária (quatro condições simultâneas) Teste gratuito de 30 dias (apenas marca d'água)
Modelo de licença Assinatura anual ( Suite Essential Studio) Perpétuo a partir de $749

Comparação Detalhada de Recursos

Recurso Código de barras Syncfusion IronBarcode
Geração
Geração WinForms Sim (SfBarcode) Sim
Geração WPF Sim (SfBarcode) Sim
Geração Blazor Sim (SfBarcodeGenerator, renderizado pelo navegador) Sim (API do lado do servidor)
Geração MAUI Sim (SfBarcodeGenerator) Sim
Console / Funções do Azure Requer o runtime do WinForms. Nativo
Docker / Linux Limitado Suporte total
Saída direta de arquivo Via DrawToBitmap + Bitmap.Save .SaveAsPng(), .SaveAsPdf(), .SaveAsSvg(), etc.
QR Code com logotipo incorporado Não Sim — .AddBrandLogo()
Leitura
API de leitura em pacote de código de barras Não Sim — BarcodeReader.Read()
Produto de leitura separado Sim — Leitor de código de barras OPX (pago) Não é necessário
OPX encapsula o ZXing .NET (Apache 2.0) Sim — ZXing .NET é gratuito N / D
Leitura de código de barras em PDF Não Sim
Detecção automática de formato N / D Sim
Detecção de múltiplos códigos de barras N / D Sim
Plataforma
API mínima do ASP.NET Core Não é totalmente compatível. Suporte total
Multiplataforma (Linux) Limitado Suporte total
Licenciamento
Nível gratuito Licença comunitária (quatro condições simultâneas) Teste gratuito de 30 dias
Modelo de licença comercial Assinatura anual (Estúdio Essencial) Perpétuo
Preço comercial básico Aproximadamente US$ 995 por desenvolvedor por ano (Padrão) A partir de $749 perpétuo
Escopo da chave de licença Específico da versão (alterações com as versões principais) Versão estável dentro da versão principal
Custo de registro na plataforma Processo em várias etapas (Registrar licença + Adicionar SyncfusionBlazore + Configurar SyncfusionCore) Linha única
Suporte a PDF
Saída em PDF Não — requer o arquivo .pdf da Syncfusion como pacote adicional. Sim — integrado
Leitura de PDF Não Sim — integrado
Formatos
Formatos 1D Código 128, Código 39, EAN-8/13, UPC-A/E, Codabar e outros. Todos os formatos Syncfusion , Plus de PDF417, Aztec, MaxiCode, GS1, USPS IMb e mais de 50 outros.
formatos 2D Código QR, DataMatrix Código QR, DataMatrix, PDF417, Micro PDF417, Aztec, MaxiCode

Arquitetura de Geração

A diferença arquitetônica fundamental entre o Código de barras Syncfusion e oIronBarcodereside na distinção entre um controle de renderização de interface do usuário e uma biblioteca programática de geração de arquivos.

Abordagem Syncfusion

SfBarcode é um controle WinForms. Sua função é renderizar um código de barras como parte do layout visual de um formulário. Para produzir um arquivo a partir dele, o desenvolvedor deve pré-alocar um Bitmap que corresponda ao tamanho de saída pretendido, chamar DrawToBitmap e, em seguida, chamar Bitmap.Save. Cada etapa requer o ambiente de execução do Windows Forms.

SfBarcodeGenerator para Blazor é um componente Razor que é renderizado no navegador através da camada JavaScript Syncfusion Blazor. Não existe API do lado do servidor em SfBarcodeGenerator. A geração de um código de barras para download a partir de um aplicativo Blazor requer interoperabilidade com JavaScript e gatilhos de download do navegador, em vez de uma chamada de API do servidor.

Para aplicações MAUI, SfBarcodeGenerator renderiza códigos de barras dentro do sistema de layout MAUI. A geração de um código de barras como arquivo para transmissão ou impressão requer etapas adicionais de processamento que não são fornecidas pelo próprio controle.

Abordagem do IronBarcode

IronBarcode utiliza uma API estática e encadeável que gera arquivos de saída diretamente. O mesmo padrão de chamada funciona em qualquer modelo de aplicação .NET sem modificações:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("barcode.png");
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("barcode.png");
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-KEY"

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

A documentação sobre geração de códigos de barras 1D abrange todas as simbologias e opções de saída suportadas. Sem instanciação de controle, sem alocação prévia de Bitmap e sem dependência de tempo de execução do Windows Forms.

Leitura de código de barras

Abordagem Syncfusion

Os códigos SfBarcode e SfBarcodeGenerator não possuem capacidade de leitura por projeto. O ecossistema da Syncfusion resolve essa lacuna por meio do Barcode Reader OPX, um produto comercial independente com sua própria licença e processo de compra.

O leitor de código de barras OPX utiliza internamente o ZXing .NET . ZXing .NET é uma biblioteca de código aberto para leitura de códigos de barras, publicada sob a licença Apache 2.0. A licença Apache 2.0 é permissiva e permite o uso comercial irrestrito. Qualquer desenvolvedor pode instalar o ZXing .NET diretamente:

dotnet add package ZXing.Net
dotnet add package ZXing.Net
SHELL

Adquirir o Barcode Reader OPX significa pagar uma assinatura da Syncfusion por um wrapper para uma biblioteca que está disponível gratuitamente. Um fluxo de trabalho completo de código de barras da Syncfusion, abrangendo tanto a geração quanto a leitura, requer dois produtos Syncfusion separados, dois contratos de licença e duas interfaces de API distintas.

Abordagem do IronBarcode

A leitura de código de barras está incluída no mesmo pacote NuGet que a geração. Não é necessário nenhum produto ou licença secundária:

using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode

Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

A documentação sobre leitura de código de barras abrange detecção de múltiplos códigos de barras, pontuação de confiança, leitura de matrizes de bytes e ajuste de velocidade versus precisão. A leitura de documentos PDF também é nativa, sem a necessidade de uma biblioteca PDF separada.

Arquitetura de Licenças

Abordagem Syncfusion

A Licença Comunitária da Syncfusion oferece acesso gratuito, mas impõe quatro condições de elegibilidade simultâneas: receita bruta anual inferior a US$ 1.000.000, cinco ou menos desenvolvedores, dez ou menos funcionários e capital externo total inferior a US$ 3.000.000. Todas as quatro condições devem ser mantidas continuamente. Organizações governamentais não são elegíveis. O descumprimento de qualquer condição gera uma obrigação imediata de licenciamento comercial, e a transição da Licença Comunitária para uma licença comercial passa de US$ 0 para aproximadamente US$ 995 por incorporador por ano no nível Padrão.

Além dos requisitos de elegibilidade, as chaves de licença da Syncfusion são específicas para cada versão. Uma chave emitida para o Essential Studio 24.x não é válida após a atualização para a versão 25.x. Cada atualização importante da versão do NuGet exige a obtenção de uma nova chave no portal da conta, a atualização dos segredos do ambiente e a reimplementação para evitar que as marcas d'água da versão de avaliação apareçam nos resultados de produção.

O cadastro na plataforma adiciona etapas adicionais. Uma aplicação Blazor requer três entradas de configuração separadas:

// Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

// Step 2: Service registration in Program.cs
builder.Services.AddSyncfusionBlazor();

// Step 3: Namespace imports in _Imports.razor
// @using Syncfusion.Blazor
// @using Syncfusion.Blazor.BarcodeGenerator
// Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

// Step 2: Service registration in Program.cs
builder.Services.AddSyncfusionBlazor();

// Step 3: Namespace imports in _Imports.razor
// @using Syncfusion.Blazor
// @using Syncfusion.Blazor.BarcodeGenerator
' Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

' Step 2: Service registration in Program.vb
builder.Services.AddSyncfusionBlazor()

' Step 3: Namespace imports in _Imports.razor
' @Imports Syncfusion.Blazor
' @Imports Syncfusion.Blazor.BarcodeGenerator
$vbLabelText   $csharpLabel

Os aplicativos MAUI exigem uma quarta etapa: builder.ConfigureSyncfusionCore().

Abordagem do IronBarcode

A ativação da licença doIronBarcodeé uma atribuição única, idêntica em todas as plataformas e modelos de aplicação:

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

IronBarCode.License.LicenseKey = "YOUR-KEY"
$vbLabelText   $csharpLabel

A página de licenciamento do IronBarcode descreve o modelo de licença perpétua. O guia de configuração da chave de licença aborda os padrões de variáveis ​​de ambiente para implantações de CI/CD e Docker. A chave não muda entre versões secundárias e de correção dentro de uma versão principal, e nenhum registro de serviço específico da plataforma é necessário.

Saída em PDF

Abordagem Syncfusion

Os controles de código de barras da Syncfusion não conseguem gerar saída em PDF. Incorporar um código de barras em um documento PDF usando as ferramentas Syncfusion requer combinar o pacote de controle de código de barras com Syncfusion.Pdf, gerar o código de barras como um Bitmap até DrawToBitmap e, em seguida, inserir esse bitmap como um elemento de imagem dentro do modelo de objeto do documento PDF. Esse fluxo de trabalho envolve dois produtos Syncfusion distintos, dois pacotes NuGet e um pipeline de renderização com várias etapas.

A leitura de códigos de barras em documentos PDF existentes não é suportada nem pelo controle de código de barras nem pelo Leitor de Código de Barras OPX.

Abordagem do IronBarcode

O PDF é um formato de saída de primeira classe no IronBarcode. Não é necessária nenhuma biblioteca secundária:

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("barcode.pdf");
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("barcode.pdf");
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPdf("barcode.pdf")
$vbLabelText   $csharpLabel

A biblioteca também lê códigos de barras diretamente de documentos PDF:

var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

O guia de geração de PDFs com código de barras aborda a saída de várias páginas e a incorporação de códigos de barras junto com outros conteúdos do PDF.

Referência de Mapeamento de API

Código de barras Syncfusion Equivalente aoIronBarcode
@@--CÓDIGO-64806--@@ @@--CÓDIGO-64807--@@
@@--CÓDIGO-64808--@@ Não é necessário
@@--CÓDIGO-64809--@@ Não é necessário
@@--CÓDIGO-64810--@@ @@--CÓDIGO-64811--@@ (estático)
@@--CÓDIGO-64812--@@ Primeiro parâmetro de CreateBarcode()
@@--CÓDIGO-64814--@@ @@--CÓDIGO-64815--@@
@@--CÓDIGO-64816--@@ @@--CÓDIGO-64817--@@
@@--CÓDIGO-64818--@@ @@--CÓDIGO-64819--@@
@@--CÓDIGO-64820--@@ @@--CÓDIGO-64821--@@
@@--CÓDIGO-64822--@@ @@--CÓDIGO-64823--@@
Manual BitmapMemoryStream @@--CÓDIGO-64826--@@
@@--CÓDIGO-64827--@@ BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) lado do servidor
@@--CÓDIGO-64829--@@ QRCodeWriter.CreateQrCode(value, size) lado do servidor
BarcodeType.Code128 (Enumeração Blazor) @@--CÓDIGO-64815--@@
Leitor de código de barras OPX (encapsula ZXing .NET) @@--CÓDIGO-64834--@@ — nativo, sem wrapper
Não há API de leitura em controles de código de barras. @@--CÓDIGO-64834--@@
Sem saída em PDF @@--CÓDIGO-64835--@@

Quando as equipes consideram migrar do Código de barras Syncfusion para o IronBarcode

Requisitos de leitura de código de barras

Uma equipe que trabalha inteiramente em WinForms ou Blazor pode começar com SfBarcode ou SfBarcodeGenerator para fins de exibição e, posteriormente, receber a solicitação de escanear códigos de barras recebidos de imagens carregadas, anexos de e-mail ou capturas de câmera. Nesse ponto, a superfície de controle da Syncfusion não oferece nenhuma alternativa. A documentação da Syncfusion direciona as equipes para o Barcode Reader OPX, que é uma compra comercial separada que utiliza o ZXing .NET — uma biblioteca disponível gratuitamente sob a licença Apache 2.0. As equipes que descobrem isso frequentemente reavaliam se manter um wrapper pago em torno de um software livre é a decisão arquitetônica apropriada, especialmente quando uma biblioteca unificada de geração e leitura eliminaria completamente a indireção.

Geração do lado do servidor e do backend

Aplicações que começam como ferramentas de desktop WinForms ou WPF às vezes evoluem para incluir uma camada de API web, um serviço de processamento em segundo plano ou uma função na nuvem que precisa gerar arquivos de código de barras. SfBarcode possui uma dependência de tempo de execução do Windows Forms que não se traduz perfeitamente para serviços ASP.NET Core, Azure Functions ou contêineres Docker do Linux. O padrão DrawToBitmap requer uma superfície de renderização WinForms que pode não existir em um ambiente sem interface gráfica. As equipes que atingem esse limite normalmente precisam de uma biblioteca cujo modelo de geração seja desacoplado da pilha de renderização da interface do usuário desde o início.

Alterações nos critérios de elegibilidade para licença comunitária

A Licença Comunitária da Syncfusion é atraente para equipes em estágio inicial, justamente quando elas estão crescendo mais rapidamente. As quatro condições de elegibilidade simultâneas — receita, número de funcionários, número de empregados e capital arrecadado — criam um obstáculo à obtenção de licenças que pode surgir repentinamente. Uma rodada de financiamento Série A normalmente leva uma startup a ultrapassar o limite de capital de US$ 3.000.000 no dia do fechamento da rodada, acionando uma obrigação de licença comercial, independentemente do número de desenvolvedores ou da receita. As equipes que desenvolveram fluxos de trabalho de produção em torno da Licença Comunitária precisam levar em consideração o custo e o cronograma dessa transição, principalmente quando a licença comercial cobre todo o Suite Essential Studio, em vez de apenas o componente de código de barras.

Reduzindo a sobrecarga de configuração específica da versão

As equipes de operações que mantêm aplicativos Syncfusion em pipelines de CI/CD encontram a rotação de chaves de licença como uma tarefa recorrente associada às atualizações de versão do NuGet . Uma chave válida para o Essential Studio 24.x deixa de funcionar após a atualização para a versão 25.x, o que significa que é necessário atualizar os segredos em todos os ambientes de implantação e verificar se as marcas d'água da versão de avaliação não apareceram nas saídas de produção. Equipes com ciclos de lançamento frequentes ou múltiplos destinos de implantação consideram essa sobrecarga de rotação desproporcional ao benefício oferecido, especialmente quando o caso de uso subjacente é gerar uma imagem de código de barras em vez de consumir um Suite completo de componentes de interface do usuário.

Considerações Comuns de Migração

Removendo o registro do provedor de licença Syncfusion

A chamada de licença Syncfusion — @@--CÓDIGO-64806--@@ — normalmente aparece em Program.cs, App.xaml.cs ou em um método de inicialização do aplicativo. Deve ser removido e substituído por IronBarCode.License.LicenseKey = "KEY" no mesmo ponto da sequência de inicialização. As chamadas de registro de serviço associadas (AddSyncfusionBlazor, ConfigureSyncfusionCore) e as importações de namespace em _Imports.razor também devem ser removidas se nenhum outro componente Syncfusion permanecer no projeto.

Padrão SfBarcode para BarcodeWriter

O fluxo de trabalho SfBarcode envolve instanciação de controle, atribuição de propriedade, especificação de dimensão e renderização DrawToBitmap. O equivalente emIronBarcodeé uma única chamada encadeada: BarcodeWriter.CreateBarcode(value, encoding).ResizeTo(w, h).SaveAsPng(path). Os valores da enumeração BarcodeSymbolType mapeiam diretamente para os valores de BarcodeEncodingCode128A mapeia para Code128, QRBarcode mapeia para QRCodeWriter.CreateQrCode.

Padrão de componente Blazor para endpoint de API

SfBarcodeGenerator é um componente Razor; A substituição peloIronBarcodeé uma mudança estrutural, e não uma substituição linha por linha. O padrãoIronBarcodepara Blazor é um endpoint de API minimalista que retorna uma imagem de código de barras em bytes, referenciada pelo componente Razor através de uma tag padrão <img src="...">. Essa abordagem produz um endpoint do lado do servidor que pode ser testado de forma independente e reutilizado em diferentes clientes, em vez de um componente renderizado no navegador vinculado à camada JavaScript do Syncfusion Blazor .

Funcionalidades adicionais do IronBarcode

As seguintes funcionalidades doIronBarcodenão foram abordadas nas seções anteriores e podem ser relevantes dependendo dos requisitos do projeto:

  • Código QR com logotipo da marca incorporado : .AddBrandLogo("logo.png") incorpora o logotipo da empresa no centro do código QR, mantendo a confiabilidade da leitura por meio da correção de erros.
  • Saída SVG : Os códigos de barras podem ser exportados como arquivos vetoriais SVG adequados para impressão e telas de alta resolução (DPI).
  • Saída em HTML : Os códigos de barras podem ser exportados como arquivos HTML independentes.
  • Detecção de múltiplos códigos de barras : BarcodeReader.Read detecta e retorna todos os códigos de barras presentes em uma única imagem.
  • Pontuação de confiança nas leituras : Cada resultado de leitura inclui uma pontuação de confiança que auxilia na filtragem de detecções de baixa qualidade.
  • Anotações e estilização : Os códigos de barras gerados permitem a personalização de margens, cores, fontes e anotações sem a necessidade de uma etapa externa de edição de imagens.
  • Formatos GS1 e USPS IMb : OIronBarcodesuporta formatos especializados não presentes no controle da Syncfusion, incluindo GS1-128, USPS Intelligent Mail Barcode, MaxiCode e Aztec.

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

IronBarcode é compatível com .NET Standard 2.0 e versões superiores, oferecendo compatibilidade com .NET Framework 4.6.2 e versões posteriores, .NET Core 3.1 e todas as versões atuais do .NET , incluindo .NET 8 e .NET 9. A biblioteca recebe atualizações regulares alinhadas ao cronograma de lançamentos do .NET da Microsoft, garantindo compatibilidade com o .NET 10 à medida que seu lançamento se aproxima no final de 2026. Como oIronBarcodeé uma biblioteca programática estática, e não um controle de interface do usuário, ele não é afetado pelas diferenças de evolução da plataforma entre WinForms, WPF, Blazor e MAUI — o mesmo pacote NuGet e a mesma API funcionam em todos os modelos de aplicativos .NET atuais e futuros, sem a necessidade de adaptações específicas para cada plataforma.

Conclusão

Syncfusion Barcode eIronBarcodediferem em um nível arquitetônico que vai além da quantidade de recursos. O Código de barras Syncfusion é um controle de renderização de interface do usuário integrado a um amplo Suite de componentes; seu objetivo é exibir um código de barras dentro de um formulário, e ele cumpre esse objetivo com sucesso.IronBarcodeé uma biblioteca programática para geração e leitura de arquivos, cujo objetivo é processar códigos de barras como dados — gerando arquivos, lendo imagens e operando em qualquer ambiente de implantação. São ferramentas diferentes, projetadas para diferentes casos de uso principais, e a escolha entre elas é determinada principalmente pelo caso de uso que se aplica ao projeto em questão.

O Código de barras Syncfusion é a escolha apropriada quando uma equipe já utiliza o Syncfusion Essential Studio para outros componentes de interface do usuário — grades, gráficos, agendadores — e o requisito do código de barras é exibi-lo em um formulário ou em uma página Blazor . Nesse contexto, o controle de código de barras já está incluído na licença existente, e adicioná-lo a um formulário é uma questão de simplesmente arrastar e soltar um controle no designer. Para equipes com essas condições específicas, a compra doIronBarcodenão agrega valor que a licença existente já não ofereça.

OIronBarcodeé a escolha adequada quando a necessidade vai além da simples exibição de formulários: leitura de códigos de barras a partir de imagens carregadas, geração de arquivos de código de barras em um serviço de backend, leitura de códigos de barras a partir de documentos PDF, implantação em um contêiner Docker no Linux ou criação de um endpoint de API web que retorna imagens de código de barras. É também a escolha adequada para equipes cuja situação de licenciamento não satisfaça permanentemente todas as quatro condições da Licença Comunitária da Syncfusion , ou para equipes que desejam evitar a rotação de chaves específicas da versão como parte do processo de atualização do NuGet . O modelo de licença perpétua e o pacote unificado de geração e leitura daIronBarcodeabordam diretamente essas preocupações operacionais.

A principal limitação do ecossistema de códigos de barras da Syncfusion é que a geração e a leitura são separadas em dois produtos, sendo o produto de leitura um pacote comercial que envolve um software livre. Para equipes que precisam de ambas as funcionalidades, essa configuração gera dois custos de licença, duas interfaces de API e uma dependência do ZXing .NET , que poderia ter sido adotada diretamente. O modelo de pacote único doIronBarcodeelimina essa indireção. A escolha certa é aquela arquitetura que melhor se adequa aos requisitos reais: se a exibição de código de barras em uma interface de usuário Syncfusion existente for o objetivo principal, a Syncfusion é a solução ideal; Se o processamento de código de barras for uma preocupação do backend, oIronBarcodeé a base mais apropriada.

Perguntas frequentes

O que é o código de barras Syncfusion?

Syncfusion 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 Syncfusion Barcode e o IronBarcode?

O IronBarcode utiliza uma API estática e sem estado, que não requer gerenciamento de instâncias, enquanto o Syncfusion 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 Syncfusion 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 Syncfusion 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 Syncfusion 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 Syncfusion?

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 Syncfusion 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 Syncfusion Barcode para o IronBarcode?

A migração do Syncfusion Barcode para o IronBarcode envolve principalmente a substituição de chamadas de API baseadas em instâncias por 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