IRONSOFTWAREHOME
VÍDEOS

Migrando de SDK Scandit para IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 de agosto de 2026

O SDK Scandit é uma plataforma de digitalização por câmera criada para detecção de códigos de barras em tempo real em dispositivos móveis.IronBarcode é uma biblioteca para processamento de códigos de barras baseada em arquivos e do lado do servidor para .NET. Essas duas bibliotecas atendem a casos de uso primários diferentes, e a migração de uma para a outra só é relevante em circunstâncias específicas.

Este guia aborda o caminho de migração para equipes que usam os pacotes .NET da Scandit para processar arquivos, PDFs ou fluxos de documentos do lado do servidor — cenários em que a arquitetura de pipeline de câmera da Scandit cria atrito em vez de valor. Se sua principal necessidade é apontar a câmera de um celular para objetos físicos e receber feedback em tempo real com sobreposições de realidade aumentada, o Scandit continua sendo a ferramenta adequada e este guia não se aplica. Se você precisa ler códigos de barras de imagens carregadas, extrair dados de código de barras de documentos PDF ou executar a detecção de código de barras em ASP.NET Core, Azure Functions, contêineres Docker ou serviços de processamento em segundo plano, este guia fornece um caminho de migração completo.

Por que migrar do SDK da Scandit?

Sobrecarga do Pipeline da Câmera: Toda integração Scandit começa com a mesma sequência de inicialização, independentemente de haver uma câmera presente no ambiente de implantação: construa um DataCaptureContext, configure BarcodeCaptureSettings, enumere as simbologias a habilitar, adquira uma instância de Camera, atribua-a como fonte de quadro, mude a câmera para um estado ativo e habilite a captura de códigos de barras. Essa inicialização existe porque o Scandit processa quadros de vídeo ao vivo. Para o processamento de arquivos no servidor, a sequência não oferece nenhum benefício e introduz uma complexidade com estado que não tem equivalente no ambiente de destino — não há câmera em um contêiner Docker nem fonte de quadros em uma Função do Azure.

Preços não divulgados: A Scandit não publica preços. SparkScan, MatrixScan, digitalização de documentos de identidade, sobreposições de realidade aumentada e analisador sintático são produtos com preços individuais e exigem uma consulta de vendas separada para cada um. Uma proposta de orçamento, comparação de fornecedores ou análise custo-benefício não pode ser concluída sem entrar em um ciclo de vendas. A IronBarcodedivulga seus preços publicamente — US$ 749, US$ 1.499 ou US$ 2.999 para uma compra única e perpétua — portanto, o valor aparece na página antes mesmo de qualquer linha de código ser escrita.

Declaração obrigatória de simbologia: O Scandit exige a ativação explícita de cada formato de código de barras antes do início de uma sessão de leitura. Na digitalização por câmera em tempo real, isso representa uma otimização de desempenho — restringir as simbologias reduz a sobrecarga de processamento por quadro. Não processamento de documentos baseado em arquivos, onde os documentos recebidos podem conter qualquer formato de código de barras de qualquer fornecedor ou parceiro, a declaração obrigatória do formato torna-se uma restrição. Enumerar todas as simbologias possíveis elimina a vantagem de desempenho; Escrever lógica de adivinhação de formato em cima da biblioteca aumenta a sobrecarga de engenharia.

Sem Suporte a PDF: Não há um equivalente direto a BarcodeReader.Read("invoice.pdf") na API do Scandit. A extração de códigos de barras de um documento PDF exige a renderização de cada página em uma imagem raster usando uma biblioteca separada e, em seguida, o processamento dessas imagens renderizadas por meio de um pipeline de simulação de câmera. Essa abordagem introduz dependências adicionais, licenciamento adicional e um esforço de engenharia substancial para uma tarefa rotineira em fluxos de trabalho de processamento de documentos.

O problema fundamental

O Scandit exige que a câmera esteja ligada antes que qualquer trabalho com código de barras possa começar. O IronBarcode requer apenas o caminho do arquivo:

// Scandit SDK: mandatory camera pipeline before first barcode read
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");
var settings = BarcodeCaptureSettings.Create();
settings.EnableSymbologies(new HashSet<Symbology>
{
    Symbology.Ean13Upca,
    Symbology.Ean8,
    Symbology.Code128,
    Symbology.QrCode
});
var barcodeCapture = BarcodeCapture.Create(dataCaptureContext, settings);
var camera = Camera.GetDefaultCamera();
await dataCaptureContext.SetFrameSourceAsync(camera);
await camera.SwitchToDesiredStateAsync(FrameSourceState.On);
barcodeCapture.IsEnabled = true;
// Results arrive later via BarcodeScanned event callback
// IronBarcode: direct file reading
// NuGet: dotnet add package IronBarcode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
    Console.WriteLine($"{result.Value} ({result.Format})");

Todo o bloco do pipeline da câmera — criação de contexto, configurações, ativação de simbologia, aquisição da câmera, atribuição da fonte do quadro, transição de estado — é substituído por uma atribuição de chave de licença e uma única chamada de método.

##IronBarcode vs Scandit SDK: Comparação de Recursos

RecursoSDK ScanditIronBarcode
Implantação primáriadigitalização por câmera móvelProcessamento de arquivos em servidor, nuvem e desktop
É necessário ter uma câmera.SimNão
Leitura de arquivo de imagemNão foi projetado paraTipo de entrada principal
Extração de código de barras PDFNão suportadoSuporte nativo para várias páginas
Entrada de fluxo/matriz de bytesNão suportadoSim
Detecção automática de formatoNão (é necessário especificar)Sim (comportamento padrão)
Resultados orientados a eventosSim (retorno de chamada BarcodeScanned)Não (retorno síncrono)
ASP.NET Core / lado do servidorNão foi projetado paraSuporte completo
Azure Functions / sem servidorNão é práticoSuporte completo
Docker / LinuxNão suportadoSuporte completo
Geração de código de barrasNão suportadoIncluído no pacote
Detecção de múltiplos códigos de barrasMatrixScan (produto separado)Incluído no pacote
Modelo de preçosContate o departamento de vendas (por produto)Níveis perpétuos publicados
Taxas por digitalização/por dispositivoSimNão

Início rápido

Passo 1: Substitua o pacote NuGet

Remover pacotes Scandit:

dotnet remove package Scandit.BarcodePicker
dotnet remove package Scandit.DataCapture.Core
dotnet remove package Scandit.DataCapture.Barcode
SHELL

Instale o IronBarcode:

dotnet add package IronBarcode
SHELL

Etapa 2: Atualizar Namespaces

Substitua importações de namespaces do Scandit pelo namespace do IronBarcode:

// Before (Scandit SDK)
using Scandit.DataCapture.Core;
using Scandit.DataCapture.Barcode;
using Scandit.DataCapture.Barcode.Data;

// After (IronBarcode)
using IronBarCode;

Etapa 3: Inicializar a licença

Adicione a inicialização da licença no início da aplicação, substituindo a chamada DataCaptureContext.ForLicenseKey:

// Before (Scandit SDK)
var dataCaptureContext = DataCaptureContext.ForLicenseKey("YOUR-SCANDIT-LICENSE");

// After (IronBarcode)
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Exemplos de migração de código

Leitura de códigos de barras a partir de um arquivo de imagem

O processamento de um arquivo de imagem estática é um cenário de suporte principal no IronBarcode, mas um fluxo de trabalho não suportado no Scandit. O SDK da Scandit processa quadros de câmera ao vivo; A leitura de um arquivo exige a adaptação do pipeline de captura para tratar um bitmap como uma fonte de quadro, o que não possui implementação nativa.

Abordagem do SDK da Scandit:

// SDK Scandit has no direct file-read API.
// Reading a static image requires constructing a bitmap frame source
// and routing it through the capture pipeline — an unsupported workaround.
// The standard Scandit integration assumes a running camera at all times.
C#

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

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

A leitura de códigos de barras em imagens com o IronBarcode não requer nenhuma configuração de pipeline. A coleção de resultados fica disponível imediatamente após o retorno do método, sem necessidade de inscrição em eventos.

Extraindo códigos de barras de um documento PDF

A extração de códigos de barras em PDF é um território totalmente novo para quem migra do Scandit, que não oferece suporte a PDFs. O IronBarcode lê documentos PDF diretamente, retornando resultados indexados por número de página.

Abordagem do SDK da Scandit:

// Scandit SDK: no PDF support.
// Implementing PDF barcode extraction with Scandit requires:
// 1. A separate PDF rendering library to convert pages to raster images
// 2. Routing each rendered image through the camera simulation pipeline
// 3. Correlating results back to page numbers manually
// This is not a supported workflow and requires significant custom engineering.

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

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

Para obter orientações completas sobre como ler códigos de barras em documentos PDF , incluindo a seleção de intervalo de páginas e o processamento de múltiplos códigos de barras, a documentação do IronBarcode abrange toda a gama de cenários de processamento de PDF. Não é necessária nenhuma biblioteca PDF adicional.

Convertendo retornos de chamada de eventos em valores de retorno diretos

Scandit entrega resultados de códigos de barras através do evento BarcodeScanned porque a digitalização com câmera ao vivo é inerentemente assíncrona — os resultados chegam quando a câmera detecta um código de barras no quadro atual. O IronBarcode retorna os resultados como uma coleção tipada porque a leitura baseada em arquivos tem um limite de conclusão conhecido. Esta é uma das mudanças estruturalmente mais significativas na migração.

Abordagem do SDK da Scandit:

// Scandit SDK: event-driven result delivery
barcodeCapture.BarcodeScanned += (sender, args) =>
{
    foreach (var barcode in args.Session.NewlyRecognizedBarcodes)
    {
        string value = barcode.Data;
        string symbology = barcode.Symbology.ToString();

        // Processing logic embedded inside event handler
        LogBarcodeResult(value, symbology);
        UpdateInventory(value);
    }
};

// Scan continues indefinitely until camera session is terminated

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

var results = BarcodeReader.Read("document.png");
foreach (var result in results)
{
    // Same processing logic, now in standard control flow
    LogBarcodeResult(result.Value, result.Format.ToString());
    UpdateInventory(result.Value);
}

Toda a lógica de processamento que estava incorporada nos callbacks dos manipuladores de eventos é movida para código sequencial padrão. O tratamento de erros, o registro de logs e as operações subsequentes podem ser estruturados usando fluxo de controle comum em vez de padrões de tratamento de eventos.

Endpoint ASP.NET Core para upload de arquivos

Um endpoint de servidor sem estado que lê códigos de barras de um arquivo carregado representa o principal caso de uso do IronBarcode no lado do servidor. Esse padrão não é suportado pela arquitetura de pipeline de câmera da Scandit.

Abordagem do SDK da Scandit:

// Scandit SDK: not applicable to ASP.NET Core file upload scenarios.
// The DataCaptureContext requires a camera hardware session.
// There is no mechanism to process an IFormFile through the Scandit pipeline
// without substantial custom camera-simulation infrastructure.

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

[ApiController]
[Route("api/[controller]")]
public class BarcodeController : ControllerBase
{
    [HttpPost("scan")]
    public IActionResult ScanUploadedDocument(IFormFile file)
    {
        if (file == null || file.Length == 0)
            return BadRequest("No file provided");

        using var stream = file.OpenReadStream();
        var results = BarcodeReader.Read(stream);

        if (!results.Any())
            return NotFound("No barcodes detected");

        return Ok(results.Select(r => new
        {
            r.Value,
            Format = r.Format.ToString(),
            r.PageNumber
        }));
    }
}

O método BarcodeReader.Read aceita um Stream diretamente de IFormFile.OpenReadStream(), não exigindo a criação de um arquivo temporário. Os resultados são retornados de forma síncrona dentro do ciclo de solicitação-resposta, sem gerenciamento assíncrono da câmera.

Processamento simultâneo em lote de vários documentos

Filas de documentos de alto volume exigem processamento paralelo em várias threads. Como a API do IronBarcode é sem estado, ela é inerentemente segura para threads e se compõe diretamente com Parallel.ForEach e padrões de tarefas assíncronas.

Abordagem do SDK da Scandit:

// Scandit SDK: no supported batch file processing pattern.
// The FrameSourceState model assumes a continuous camera session,
// not a queue of discrete documents. Batch processing would require
// one camera simulation pipeline per document or serialized processing
// through a shared pipeline — neither is a supported workflow.

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Collections.Concurrent;

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads = 4
};

var files = Directory.GetFiles("./documents/", "*.pdf");
var allResults = new ConcurrentBag<(string File, BarcodeResult Result)>();

Parallel.ForEach(files, file =>
{
    var results = BarcodeReader.Read(file, options);
    foreach (var result in results)
        allResults.Add((file, result));
});

foreach (var (file, result) in allResults)
    Console.WriteLine($"{Path.GetFileName(file)}: {result.Value} ({result.Format})");

Para padrões avançados que abrangem leitura assíncrona e multithread de códigos de barras , incluindo ajuste de throughput e configuração do número de threads, a documentação do IronBarcode fornece orientações detalhadas.

Referência de mapeamento da API do SDK Scandit para o IronBarcode

SDK ScanditIronBarcodeNotas
DataCaptureContext.ForLicenseKey("key")IronBarCode.License.LicenseKey = "key"Uma tarefa; nenhum objeto de contexto
BarcodeCaptureSettings.Create()new BarcodeReaderOptions()Opcional; Não é necessário para leitura básica.
settings.EnableSymbologies(Symbology.Code128, ...)(not needed)O IronBarcode detecta automaticamente todos os formatos.
Camera.GetDefaultCamera()(not applicable)Sem conceito de câmera
dataCaptureContext.SetFrameSourceAsync(camera)(not applicable)Sem fonte de quadro
camera.SwitchToDesiredStateAsync(FrameSourceState.On)(not applicable)Sem máquina de estados da câmera
barcodeCapture.IsEnabled = trueBarcodeReader.Read(path)Uma única chamada inicia a leitura.
BarcodeScanned += manipulador de eventosforeach padrão sobre o valor de retornoNão é necessário nenhum sistema de eventos.
args.Session.NewlyRecognizedBarcodesValor de retorno de BarcodeReader.Read()Coleta direta
barcode.Dataresult.ValueMesmo conteúdo semântico
barcode.Symbologyresult.FormatEnumeração de formato equivalente
using Scandit.DataCapture.Coreusing IronBarCodeEspaço de nomes único
using Scandit.DataCapture.Barcodeusing IronBarCodeIncluído no mesmo espaço de nomes
Produto SparkScanBarcodeReader.Read(path)Não é necessário nenhum produto adicional.
Produto MatrixScanBarcodeReaderOptions { ExpectMultipleBarcodes = true }Incluído no pacote básico

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

Problema 1: O código do pipeline da câmera não possui tradução direta.

Scandit SDK: O DataCaptureContext, BarcodeCaptureSettings, Camera, e o bloco de configuração BarcodeCapture abrangem 7–10 linhas de código de inicialização com transições de estado assíncronas.

Solução: Este bloco foi completamente apagado. Não possui equivalente ao IronBarcode porque a API baseada em arquivos do IronBarcode não requer inicialização de sessão. Substitua todo o bloco por:

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

Problema 2: Lógica do manipulador de eventos BarcodeScanned

Scandit SDK: A lógica de processamento é incorporada dentro de lambdas de manipulador de eventos BarcodeScanned += ou métodos. Esse padrão não existe no IronBarcode.

Solução: Mova o corpo do manipulador para o código padrão após a chamada BarcodeReader.Read:

// Before: event handler
barcodeCapture.BarcodeScanned += (s, args) =>
{
    foreach (var b in args.Session.NewlyRecognizedBarcodes)
        Console.WriteLine(b.Data);
};

// After: direct iteration
foreach (var result in BarcodeReader.Read("document.png"))
    Console.WriteLine(result.Value);

Problema 3: Chamadas EnableSymbologies espalhadas pelo código-fonte

Scandit SDK: Múltiplos lugares na base de código podem chamar settings.EnableSymbologies(...) com diferentes conjuntos de simbologia para diferentes contextos de digitalização.

Solução: Remova todas as chamadas EnableSymbologies. Por padrão, o IronBarcode detecta automaticamente todos os formatos suportados. Se restrição de formato for necessária para desempenho em cenários específicos, use BarcodeReaderOptions.ExpectBarcodeTypes:

var options = new BarcodeReaderOptions
{
    ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("document.png", options);

Problema 4: Ausência de leitura de PDF na base de código existente

SDK da Scandit: Se a base de código existente converte páginas PDF em imagens antes de enviá-las para o pipeline da Scandit, essa infraestrutura de renderização personalizada não é mais necessária.

Solução: Elimine completamente a etapa de conversão de PDF em imagem. Passe o caminho do PDF diretamente para o IronBarcode:

// Before: render PDF pages to images, then pass each image to Scandit pipeline
// (multiple steps, external PDF library dependency)

// After: pass PDF directly to IronBarcode
var results = BarcodeReader.Read("document.pdf");
// Results include PageNumber property for each detected barcode

Problema 5: Padrões de inicialização assíncrona da câmera

Scandit SDK: A inicialização da câmera usa await para SetFrameSourceAsync e SwitchToDesiredStateAsync. Se o código de chamada estiver estruturado em torno dessas operações assíncronas, removê-las simplifica a cadeia assíncrona.

Solução: Remova completamente a inicialização assíncrona da câmera. BarcodeReader.Read é síncrono. Se executar assíncronamente for necessário para a capacidade de resposta em um contexto de interface do usuário ou servidor, envolva-o em Task.Run:

// Async wrapper for non-blocking execution
var results = await Task.Run(() => BarcodeReader.Read("document.png"));

Lista de verificação para migração do SDK da Scandit

Tarefas pré-migração

Audite todos os pontos de integração do Scandit na base de código:

grep -r "DataCaptureContext\|BarcodeCaptureSettings\|BarcodeCapture" --include="*.cs" .
grep -r "EnableSymbologies\|BarcodeScanned\|NewlyRecognizedBarcodes" --include="*.cs" .
grep -r "using Scandit" --include="*.cs" .
grep -r "barcode\.Data\|barcode\.Symbology\|FrameSourceState" --include="*.cs" .
SHELL

Documente todos os contextos de digitalização — identifique quais caminhos de código lidam com a digitalização da câmera em tempo real (permanecendo no Scandit) versus o processamento de arquivos ou documentos (migrando para o IronBarcode). Observe todos os locais onde as páginas PDF são renderizadas em imagens antes do processamento do Scandit, pois essa etapa de renderização será eliminada.

Tarefas de atualização de código

  1. Remova os pacotes NuGet do Scandit (Scandit.BarcodePicker, Scandit.DataCapture.Core, Scandit.DataCapture.Barcode)
  2. Instale o pacote NuGet IronBarcode
  3. Substitua as importações de using Scandit.DataCapture.* por using IronBarCode
  4. Apague todo o bloco de inicialização DataCaptureContext
  5. Apague todas as chamadas de Camera.GetDefaultCamera() e SetFrameSourceAsync
  6. Apague todas as chamadas de EnableSymbologies
  7. Substitua barcodeCapture.IsEnabled = true por BarcodeReader.Read(filePath)
  8. Converta manipuladores de eventos BarcodeScanned += para foreach sobre resultados de BarcodeReader.Read()
  9. Substitua barcode.Data por result.Value
  10. Substitua barcode.Symbology por result.Format
  11. Remover os pipelines de renderização de PDF para imagem nos casos em que o IronBarcode lê PDFs diretamente.
  12. Adicione IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" na inicialização da aplicação

Testes pós-migração

Verifique o seguinte após concluir as atualizações de código:

  • Confirme se os valores dos códigos de barras retornados pelo IronBarcode correspondem aos valores retornados anteriormente pelo Scandit para os mesmos documentos de entrada.
  • Verifique se todos os formatos de códigos de barra suportados no conjunto de documentos são detectados sem configuração ExpectBarcodeTypes
  • Teste se a extração de PDF retorna valores corretos de PageNumber para documentos de várias páginas
  • Confirme se os endpoints do ASP.NET Core retornam resultados dentro de tempos de resposta aceitáveis ​​sob a carga esperada.
  • Verificar se as implantações em Docker ou contêineres concluem a leitura de código de barras com sucesso sem o hardware da câmera.
  • Teste o processamento em lote concorrente com Parallel.ForEach que produz resultados corretos sem condições de corrida
  • Confirme se o aplicativo inicia e inicializa corretamente com a chave de licença do IronBarcode no lugar do contexto do Scandit.

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

Eliminação da Sobrecarga do Pipeline da Câmera: Remover a sequência de inicialização DataCaptureContext elimina o gerenciamento de câmera com estado, transições de estado assíncronas, e APIs de câmera específicas de plataforma do código do servidor. O código resultante é mais simples, mais curto e não apresenta restrições de plataforma que impeçam a implantação em Linux, em contêineres Docker ou em ambientes de computação sem servidor.

Processamento direto de PDF: A extração nativa de código de barras em PDF elimina a dependência de uma biblioteca de renderização de PDF separada, a sobrecarga de engenharia do pipeline de página para imagem e o custo adicional de licenciamento dessa dependência. Documentos PDF com várias páginas são processados ​​em uma única chamada de método, com resultados indexados por página disponíveis imediatamente.

API síncrona sem estado: O modelo de retorno de valor direto substitui os padrões de retorno de chamada orientados a eventos por código sequencial padrão. O tratamento de erros, o registro de logs e o processamento subsequente se integram naturalmente à arquitetura de aplicativos existente, sem exigir gerenciamento de assinaturas de eventos ou coordenação assíncrona de máquinas de estado.

Preços transparentes divulgados: Os níveis de licença perpétua, listados publicamente a US$ 749, US$ 1.499 e US$ 2.999, permitem que propostas orçamentárias, comparações de fornecedores e processos de aquisição prossigam sem um ciclo de vendas. O custo da licença pode ser determinado antes mesmo de escrever uma única linha de código de integração.

Suporte completo para nuvem e contêineres: a API sem estado e independente de hardware do IronBarcode funciona sem modificações no Azure Functions, AWS Lambda, contêineres Docker no Linux e qualquer outro ambiente de computação onde o runtime .NET esteja disponível. Não é necessária simulação de câmera, soluções alternativas para dependências de hardware ou configuração específica da plataforma para a implantação nesses ambientes.

Detecção Automática de Formato: Remover declarações EnableSymbologies significa que documentos recebidos carregando formatos de código de barras inesperados são manuseados corretamente sem alterações no código. Quando o conjunto de formatos presentes nos documentos recebidos muda — novos fornecedores, novos formatos de etiquetas, novos tipos de documentos — o IronBarcode lida com os novos formatos automaticamente.

Observe: Scandit é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela Scandit. 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.