IRONSOFTWAREHOME
VÍDEOS

Migrando deOnBarcodepara IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 de agosto de 2026

Este guia abrange todo o processo de migração doOnBarcodepara o IronBarcode . Ele aborda a mudança de configuração em três etapas, fornece exemplos de código antes e depois para cada padrão comum, mapeia a APIOnBarcodepara seus equivalentes no IronBarcode, documenta problemas que surgem durante a migração e fornece uma lista de verificação de termos de pesquisa para auditar sua base de código antes de considerar a migração concluída.

Por que migrar do OnBarcode?

**Sobrecarga de Aquisição de Dois SKUs:**OnBarcodepublica preços perpétuos para o SDK do Generator (apenas Linear e Linear + 2D) e lista o SDK do Reader como um produto precificado separadamente. Uma organização que precisa de ambas as capacidades deve concluir dois processos de aquisição contra dois SKUs — selecionando o nível correto do Generator para os simbologias em uso, depois comprando o Reader separadamente — antes que o custo total seja acordado. O atrito é a duplicação em duas compras, em vez de um único item de linha.

Sobrecarga de Produto Dividida: A geração e a leitura são produtos separados com pacotes NuGet separados, namespaces de licença separados, chaves de licença separadas e cronogramas de versão separados. Um projeto que utiliza ambos os produtos deve configurar duas chaves de licença na inicialização, rastrear duas versões de pacotes durante as atualizações e manter o conhecimento de dois ciclos de lançamento independentes. Quando o requisito de leitura é adicionado a um projeto que originalmente previa apenas a geração de conteúdo, todo o processo de aquisição e integração deve ser repetido para o segundo produto.

Lacunas no fluxo de trabalho com PDFs: OOnBarcodenão oferece suporte nativo para leitura de códigos de barras em documentos PDF. Projetos que processam códigos de barras incorporados em faturas, manifestos de remessa, pedidos de compra ou digitalizações de arquivo precisam adquirir uma biblioteca separada de renderização de PDF para imagem, integrá-la ao fluxo de trabalho, gerenciar sua licença separadamente e passar as páginas renderizadas para o SDKOnBarcodeReader uma de cada vez. Isso resulta em uma solução com duas dependências, quando uma solução com apenas uma dependência seria suficiente.

Verbosidade da API: O geradorOnBarcoderequer a instância de um objeto Barcode, atribuindo várias propriedades — incluindo propriedades com valores padrão sensatos, como Resolution, BarWidth e BarHeight — e, em seguida, chamando um método de geração. O mesmo resultado pode ser obtido com significativamente menos código usando uma API de fábrica estática. Multiplicado pela geração em lote, o padrão de atribuição de propriedades produz grandes volumes de código repetitivo que precisam ser revisados ​​e mantidos.

O problema fundamental

A configuração de licença dupla é o ponto de atrito mais imediato para qualquer projeto que necessite tanto de geração quanto de leitura de dados. OOnBarcoderequer duas chamadas separadas para dois namespaces de licença distintos na inicialização:

// OnBarcode: two products, two DLL references, no runtime key
//OnBarcodeuses pre-licensed DLLs — the purchased DLL is already activated.
// There is no runtime SetLicense() call; the license is baked into the downloaded assembly.
using OnBarcode.Barcode;
using OnBarcode.Barcode;
C#

O IronBarcode simplifica isso para uma única atribuição de propriedade que abrange todas as funcionalidades — geração, leitura, suporte a PDF e operações em lote — sob uma única chave:

// IronBarcode: one package, one key, one line
using IronBarCode;

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

Todas as operações de código de barras no aplicativo — independentemente de gerar, ler ou processar PDFs — são executadas sob essa única configuração.

##IronBarcode vs OnBarcode: Comparação de Recursos

RecursoOnBarcodeIronBarcode
Geração de código de barrasSimSim
Leitura de código de barrasProduto separado, compra separadaIncluído
Leitura de código de barras em PDFNão suportado nativamenteNativo — nenhuma biblioteca externa é necessária.
Detecção automática de formato na leituraNão — BarcodeType[] explícita requeridaSim
Metadados do resultado (formato, posição, página)Não disponível — apenas string[] brutoSim — BarcodeResults com metadados completos
Código QR com sobreposição de logotipoCódigo GDI+ manual necessárioEmbutido
Preço publicadoSim — páginas por produto (níveis do Generator + Reader separado)Sim — uma única página cobre todas as capacidades
Uma única chave de licença para todas as funcionalidades.Não — chaves separadas por produtoSim
Distribuição NuGetDisponível, juntamente com downloads de DLL legadasDisponível desde o lançamento.
Acesso ao código-fonteSomente nível ilimitadoNão disponível
Suporte para .NET 8/9SimSim
Configuração de licença Docker/nuvemManualSuporte a variáveis ​​de ambiente

Guia rápido: Migração doOnBarcodepara o IronBarcode

Passo 1: Remova as referências ao pacote OnBarcode

Se o seu projeto utiliza pacotes NuGet , remova ambos:

dotnet remove package OnBarcode.Barcode.Generator
dotnet remove package OnBarcode.Barcode.Reader
SHELL

Se o seu projeto utiliza a distribuição antiga baseada em DLL, também remova o bloco de referência manual do seu .csproj:

<!-- Remove this block entirely -->
<ItemGroup>
  <Reference Include="OnBarcode.Barcode">
    <HintPath>lib\OnBarcode.Barcode.dll</HintPath>
    <Private>true</Private>
  </Reference>
</ItemGroup>
XML

Exclua os arquivos DLL do diretório lib/ ou de onde quer que estejam armazenados. Manter os assemblies antigos junto com o novo pacote NuGet causará conflitos de namespace em tempo de compilação.

Passo 2: Adicionar IronBarcode

Um único pacote abrange geração, leitura e suporte a PDF:

dotnet add package IronBarcode
SHELL

Não é necessário um segundo pacote para leitura. Não é necessário nenhum pacote adicional para suporte a PDF.

Etapa 3: Atualize os namespaces e substitua a configuração de licença dupla.

Substitua ambas as diretivasOnBarcodeusing por uma única importação IronBarcode:

// Remove
using OnBarcode.Barcode;
using OnBarcode.Barcode;

// Add
using IronBarCode;

Substitua as referências duplas de DLL por uma única atribuição de chave. Insira este código uma única vez, no início da inicialização do aplicativo, antes de qualquer operação de leitura de código de barras:

// Remove theOnBarcodeDLL references and using directives
// Add
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
C#

Exemplos de migração de código

Geração de código de barras Code 128

O caso básico do Código 128 ilustra o padrão de atribuição de propriedades versus o padrão de fábrica estática.

Abordagem OnBarcode:

using OnBarcode.Barcode;

Linear barcode = new Linear();
barcode.Type = BarcodeType.CODE128;
barcode.Data = "SHIP-2024-001";
barcode.Resolution = 96;
barcode.X = 1;
barcode.BarcodeHeight = 80;
barcode.ShowText = true;
barcode.drawBarcode("shipping-label.png");

Abordagem do IronBarcode:

using IronBarCode;

BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

O tipo de dado e de codificação são passados como argumentos para CreateBarcode. Propriedades como resolução e altura da barra não são necessárias para produzir uma saída que possa ser escaneada; As configurações padrão são adequadas para a maioria dos usos. Quando dimensões personalizadas são necessárias, elas podem ser adicionadas como chamadas encadeadas entre CreateBarcode e SaveAsPng sem introduzir estado de objeto mutável.

Geração de código QR com logotipo

QR codes com logotipo requerem que oOnBarcoderecorra ao System.Drawing para o passo de sobreposição de imagem. O IronBarcode fornece isso como uma operação integrada.

Abordagem OnBarcode:

using OnBarcode.Barcode;
using System.Drawing;

QRCode qr = new QRCode();
qr.Data = "https://example.com/product/4891";
qr.QRCodeDataMode = QRCodeDataMode.Auto;
qr.QRCodeECL = QRCodeECL.H; // H-level error correction required for logo overlay

Image qrImage = qr.drawBarcode();

using (Graphics g = Graphics.FromImage(qrImage))
{
    Image logo = Image.FromFile("brand-logo.png");
    int logoSize = qrImage.Width / 5;
    int x = (qrImage.Width - logoSize) / 2;
    int y = (qrImage.Height - logoSize) / 2;
    g.DrawImage(logo, x, y, logoSize, logoSize);
}

qrImage.Save("product-qr.png");

Abordagem do IronBarcode:

using IronBarCode;

var qr = QRCodeWriter.CreateQrCodeWithLogo("https://example.com/product/4891", "brand-logo.png", 500);
qr.SaveAsPng("product-qr.png");

O nível de correção de erros, o cálculo do tamanho do logotipo e a composição da imagem são tratados internamente. Nenhuma dependência System.Drawing é necessária.

Leitura de códigos de barras a partir de uma imagem

A leitura de um arquivo de imagem ilustra a consolidação do produto com maior clareza. Com o OnBarcode, a leitura requer o SDK Reader separado, uma chamada de licença separada e a especificação explícita do formato. Com o IronBarcode, trata-se de uma única chamada estática usando o mesmo pacote e a mesma chave já configurada.

Abordagem OnBarcode:

using OnBarcode.Barcode;

//OnBarcodereader is distributed as a pre-licensed DLL — no runtime SetLicense() call.
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };
string[] results = scanner.Scan("received-label.png");

foreach (string value in results)
    Console.WriteLine(value);
C#

Abordagem do IronBarcode:

using IronBarCode;

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

Sem criação de instâncias, sem matriz de formato, sem configuração de licença separada. O formato é detectado automaticamente. Cada resultado contém o valor decodificado e o formato detectado. Para obter detalhes sobre as opções de leitura e os tipos de imagem suportados, consulte o guia sobre como ler códigos de barras em imagens .

Leitura de códigos de barras em um PDF

Este exemplo de migração aplica-se a equipes que renderizavam páginas PDF em imagens usando uma biblioteca de terceiros antes de passar essas imagens para o SDK doOnBarcodeReader.

Abordagem OnBarcode:

//OnBarcodehas no native PDF support.
// A separate PDF rendering library was required — for example PdfiumViewer or Aspose.PDF.
var pageImages = RenderPdfPagesToImages("invoices.pdf"); // external library call

using OnBarcode.Barcode;
BarcodeScanner scanner = new BarcodeScanner();
scanner.BarcodeTypes = new BarcodeType[] { BarcodeType.Code128, BarcodeType.QRCode };

foreach (var pageImage in pageImages)
{
    string[] results = scanner.Scan(pageImage);
    foreach (string value in results)
        Console.WriteLine(value);
}
C#

Abordagem do IronBarcode:

using IronBarCode;

var results = BarcodeReader.Read("invoices.pdf");
foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Format}{result.Value}");

Sem etapa de renderização, sem biblioteca PDF externa, sem matriz de formato. A funcionalidade de leitura de código de barras em PDF processa todas as páginas automaticamente e inclui o número da página em cada resultado.

Geração em lote

A geração de códigos de barras para uma coleção de itens segue o mesmo padrão de diferenciação que a geração de um único item.

Abordagem OnBarcode:

using OnBarcode.Barcode;

foreach (var item in inventoryItems)
{
    Linear barcode = new Linear();
    barcode.Type = BarcodeType.CODE128;
    barcode.Data = item.Sku;
    barcode.Resolution = 96;
    barcode.BarWidth = 1;
    barcode.BarHeight = 80;
    barcode.ShowText = true;
    barcode.drawBarcode($"labels/{item.Id}.png");
}

Abordagem do IronBarcode:

using IronBarCode;

foreach (var item in inventoryItems)
{
    BarcodeWriter.CreateBarcode(item.Sku, BarcodeEncoding.Code128)
        .SaveAsPng($"labels/{item.Id}.png");
}

Referência de mapeamento da APIOnBarcodepara IronBarcode

OnBarcodeIronBarcodeNotas
DLL pre-licenciada (sem chamada de chave de tempo de execução)IronBarCode.License.LicenseKey = "key"Cessão de propriedade; chamado uma vez na startup
Duas referências de DLL (gerador + leitor)Pacote NuGet únicoUm pacote cobre todas as capacidades
new Linear()BarcodeWriter.CreateBarcode(data, encoding)Fábrica estática; nenhuma instância de objeto
barcode.BarcodeType = BarcodeType.CODE128BarcodeEncoding.Code128 como parâmetroPassado como segundo argumento para CreateBarcode
barcode.Data = "..."Primeiro parâmetro de CreateBarcodeOs dados são o primeiro argumento.
barcode.drawBarcode("file.png").SaveAsPng("file.png")Método nomeado de formato
barcode.drawBarcode("file.jpg").SaveAsJpeg("file.jpg")Método nomeado de formato
barcode.drawBarcode("file.pdf").SaveAsPdf("file.pdf")Saída PDF nativa
BarcodeType.CODE128BarcodeEncoding.Code128Constante renomeada
BarcodeType.QRCodeBarcodeEncoding.QRCodeMapeamento direto
BarcodeType.EAN13BarcodeEncoding.EAN13Mapeamento direto
BarcodeType.DataMatrixBarcodeEncoding.DataMatrixMapeamento direto
BarcodeType.PDF417BarcodeEncoding.PDF417Mapeamento direto
new BarcodeScanner() { BarcodeTypes = [...] }BarcodeReader.Read(path) — estáticoSem instância, sem especificação de formato
scanner.Scan("file.png")string[]BarcodeReader.Read("file.png")BarcodeResultsTipo de retorno mais rico
results[0] (string bruta)result.ValueValor da string decodificada
N / Dresult.FormatFormato detectado — não disponível emOnBarcode
N / Dresult.PageNumberO código-fonte da página para o PDF diz:
N / DBarcodeReader.Read("document.pdf")Leitura nativa de PDF; Não existe equivalente emOnBarcode
Sobreposição manual GDI+ para logotipo QRQRCodeWriter.CreateQrCodeWithLogo()Suporte integrado para logotipo
configuração BarcodeType[]Não é necessárioA detecção automática é a opção padrão.

Problemas e soluções comuns em migrações

Problema 1: Conflitos de referência de DLL

OnBarcode: Projetos na distribuição de DLL legada têm elementos <Reference> em .csproj apontando para lib\OnBarcode.Barcode.dll ou caminhos similares. Se a DLL antiga permanecer no disco quando o IronBarcode for adicionado, o compilador verá duas assemblies fornecendo os mesmos prefixos de namespace e produzirá erros de referência ambígua.

Solução: Remova o bloco de referência <ItemGroup> de .csproj antes de executar dotnet add package IronBarcode. Exclua os arquivos DLL do disco. Verifique, através de uma compilação limpa, se não restam referências de assembly obsoletas.

# Search for lingeringOnBarcodeDLL references in project files
grep -r "OnBarcode" --include="*.csproj" .
grep -r "OnBarcode" --include="*.props" .
SHELL

Issue 2: Conflitos de Nome de Tipo Durante a Migração Faseada

OnBarcode: O namespace do leitor exporta uma classe chamada BarcodeScanner.IronBarcode tem uma classe estática chamada BarcodeReader. Esses nomes não entram em conflito diretamente, mas qualquer arquivo que importe simultaneamente OnBarcode.Barcode.Reader e IronBarCode pode ver ambiguidade de enum BarcodeType —OnBarcodedefine BarcodeType para sua seleção de formato, e IronBarcode usa BarcodeEncoding. Manter ambos os namespaces ativos durante a migração resultará em erros de compilação em qualquer referência BarcodeType.

Solução: Complete a migração de cada arquivo atomicamente — remova a diretiva using OnBarcode.Barcode.Reader e adicione using IronBarCode na mesma edição. Não deixe ambas as diretivas using presentes em nenhum arquivo. Se uma abordagem gradual for necessária, use nomes totalmente qualificados temporariamente:

// Temporary disambiguation during phased migration
var results = IronBarCode.BarcodeReader.Read("file.png");

Problema 3: Remoção da matriz BarcodeType

OnBarcode: O leitor requer reader.BarcodeTypes = new BarcodeType[] { ... } para funcionar. Os desenvolvedores que migram o código do leitor às vezes têm o hábito de especificar formatos explicitamente e procuram uma configuração equivalente no IronBarcode.

Solução: Remova completamente a especificação de formato. BarcodeReader.Read realiza detecção automática em todos os formatos suportados. Nenhuma configuração é necessária, e não existe equivalente de BarcodeType[] no IronBarcode porque não é necessário.

// No format configuration required
var results = BarcodeReader.Read("label.png");

Lista de verificação para migração do OnBarcode

Tarefas pré-migração

Antes de fazer alterações, faça uma auditoria no código-fonte para localizar todos os usos de OnBarcode:

# Find allOnBarcodenamespace imports
grep -rn "using OnBarcode" --include="*.cs" .

# Find all license configuration calls
grep -rn "SetLicense" --include="*.cs" .

# Find all generator usage
grep -rn "new Linear\|new QRCode\|drawBarcode\|BarcodeType\." --include="*.cs" .

# Find all reader usage
grep -rn "BarcodeScanner\|\.Scan(\|BarcodeType\[\]" --include="*.cs" .

# Find DLL references in project files
grep -rn "OnBarcode" --include="*.csproj" .
grep -rn "OnBarcode" --include="*.sln" .
SHELL

Documente quais arquivos usam apenas geração, quais usam apenas leitura e quais usam ambas. Observe quaisquer arquivos que incluam o bloco DLL <Reference> manual em vez de uma referência ao pacote NuGet.

Tarefas de atualização de código

  1. Remova o pacote NuGet OnBarcode.Barcode.Generator
  2. Remova o pacote NuGet OnBarcode.Barcode.Reader
  3. Remova qualquer entrada DLL manual <Reference> de arquivos .csproj
  4. Exclua os arquivos DLLOnBarcodedo repositório.
  5. Execute dotnet add package IronBarcode
  6. Substitua using OnBarcode.Barcode por using IronBarCode em cada arquivo
  7. Substitua using OnBarcode.Barcode.Reader por using IronBarCode em cada arquivo
  8. Remova ambas as entradas de DLL <Reference> doOnBarcode(gerador e leitor) — não há chamadas de licença de tempo de execução para substituir
  9. Adicione IronBarCode.License.LicenseKey = "YOUR-KEY" uma vez na inicialização da aplicação
  10. Converta cada new Linear() ou new QRCode() + bloco de atribuição de propriedade para BarcodeWriter.CreateBarcode(data, encoding)
  11. Substitua barcode.drawBarcode("file.png") por .SaveAsPng("file.png") (ou método de formato apropriado)
  12. Substitua new BarcodeScanner() { BarcodeTypes = [...] } + .Scan(path) por BarcodeReader.Read(path)
  13. Atualize o tratamento de resultados de indexação string[] para result.Value e result.Format em BarcodeResults
  14. Remova qualquer código de renderização de PDF para imagem usado para contornar a limitação de PDF do OnBarcode.
  15. Substitua renderização de PDF em múltiplas etapas + loops de digitalização por uma única chamada BarcodeReader.Read("file.pdf")

Testes pós-migração

  • Verificar se cada tipo de código de barras usado no projeto (Code 128, QR, EAN, Data Matrix, PDF417) gera uma saída legível por scanner.
  • Escaneie os códigos de barras gerados com um leitor físico ou dispositivo móvel para confirmar a legibilidade.
  • Verificar se a leitura do código de barras retorna os valores corretos para as imagens de teste conhecidas.
  • Confirme se a leitura de PDF retorna valores corretos e números de página corretos para documentos de teste com várias páginas. Execute a aplicação em qualquer ambiente de CI para confirmar se a configuração da chave de licença funciona corretamente no pipeline.
  • Verifique se nenhuma string OnBarcode permanece em .cs, .csproj ou arquivos de configuração após a migração estar completa

Principais benefícios da migração para o IronBarcode

Pacote e licença consolidados: após a migração, um único pacote NuGet e uma única chave de licença abrangem todas as operações de código de barras. Não há produtos separados para adquirir, cronogramas de versões independentes para acompanhar ou configuração de licença dupla para manter na inicialização. A complexidade de um arranjo com dois produtos é substituída por uma única dependência.

Aquisição transparente: a IronBarcode publica os níveis de licença perpétua com os respectivos preços no site do produto. Uma organização pode determinar o custo total, enviar um pedido de compra e concluir a aquisição sem precisar de uma conversa com o departamento de vendas. A página de licenciamento do IronBarcode inclui preços para todos os níveis e detalhes sobre as principais configurações para ambientes Docker e em nuvem.

Suporte nativo a PDF: Projetos que anteriormente exigiam uma biblioteca de renderização de PDF separada para processar PDFs com códigos de barras incorporados podem agora eliminar completamente essa dependência. Uma única chamada BarcodeReader.Read processa todas as páginas de um documento PDF sem qualquer etapa de renderização, e cada resultado inclui o número da página da qual foi extraído.

Resultados de Leitura Mais Ricos: O tipo de retorno BarcodeResults fornece o valor decodificado, o formato de código de barras detectado, coordenadas da caixa delimitadora dentro da imagem de origem e número da página para leituras de PDF. Aplicações que anteriormente trabalhavam com um string[] plano agora podem revelar informações de formato, suportar fluxos de trabalho de anotação ou implementar filtragem baseada em confiança sem processamento adicional.

Superfície de API reduzida: o padrão de fábrica estática substitui o modelo de atribuição de propriedades. As operações de geração comuns exigem menos linhas de código, e as operações de leitura não exigem a criação de instâncias nem a pré-configuração de formato. As operações em lote se beneficiam de uma menor quantidade de código por item, o que facilita a revisão e a manutenção ao longo do tempo.

Observe: Aspose,OnBarcodee PDFium são marcas registradas de seus respectivos proprietários. Este site não é afiliado, endossado ou patrocinado por Aspose Pty Ltd, Chromium Project, Google ou OnBarcode. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redaçã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.