IRONSOFTWAREHOME
VÍDEOS

Migrando do SDK Scanbot para IronBarcode

Curtis Chau
Curtis Chau
Updated: 8 de junho de 2026

Este guia foi escrito para equipes de desenvolvimento .NET que estão migrando o processamento de códigos de barras do SDK Scanbot para o IronBarcode em cenários de servidor, desktop ou baseados em arquivos expandidos. Não se trata de uma substituição direta: o SDK Scanbot é um componente de digitalização por câmera para dispositivos móveis, enquanto o IronBarcode é uma biblioteca para processamento de arquivos e documentos. A migração é uma mudança de escopo motivada por requisitos que o modelo baseado apenas em câmeras não consegue atender. As equipes que substituem uma interface de usuário de digitalização por câmera móvel em tempo real sem adicionar outros requisitos devem avaliar se a migração é apropriada antes de prosseguir.

Para equipes que começaram a usar o Scanbot para um aplicativo móvel MAUI e agora precisam de processamento de código de barras em ASP.NET Core, uma versão para desktop ou um pipeline de documentos, a migração mecânica é simples. A principal mudança é substituir ScanbotSDKMain.Barcode.StartScannerAsync(configuration) por BarcodeReader.Read(source), onde source é um caminho de arquivo, um fluxo, um array de bytes ou um PDF.

Por que migrar do SDK da Scanbot?

Requisitos de processamento do lado do servidor: o SDK Scanbot não compila em ASP.NET Core, aplicativos de console, Azure Functions ou qualquer projeto que não seja MAUI. Quando o aplicativo móvel requer um servidor complementar que também processe códigos de barras — extraindo-os de PDFs carregados ou validando valores de códigos de barras em documentos recebidos — o Scanbot não consegue ultrapassar essa barreira. IronBarcode funciona em todos esses contextos com a mesma API BarcodeReader.Read().

Suporte para Desktop MAUI: O pacote do Scanbot tem como alvo net10.0-android e net10.0-ios. Um projeto MAUI que adiciona net10.0-windows ou net10.0-maccatalyst ao seu TargetFrameworks falhará em compilar os alvos de desktop porque o pacote Scanbot não fornece assemblies para essas plataformas. O IronBarcode oferece suporte ao MAUI para Windows e macOS, além de iOS e Android, o que significa que o mesmo pacote funciona em um projeto MAUI multiplataforma sem exclusões específicas de plataforma ou referências condicionais.

Fluxos de trabalho de documentos PDF: Não há BarcodeScanner.Read(filePath) no Scanbot. Quando um fluxo de trabalho evolui para incluir a leitura de códigos de barras de documentos enviados, arquivos de imagens digitalizadas ou faturas em PDF, a arquitetura do Scanbot não consegue acomodá-lo. O IronBarcode lê PDFs e imagens diretamente, e cada resultado contém o número da página em que o código de barras foi encontrado.

Previsibilidade do modelo de preços: A Scanbot utiliza uma taxa fixa anual. Para algumas organizações, a renovação anual é o gatilho para avaliar alternativas — particularmente quando o escopo do projeto cresceu para incluir objetivos do servidor ou desktop que estão fora da cobertura do Scanbot. O IronBarcode é uma compra única e perpétua, eliminando a obrigação de renovação anual.

O problema fundamental

O SDK Scanbot requer uma transmissão de vídeo ao vivo da câmera. Quando os requisitos se expandem para além dos dispositivos móveis, não existe um caminho equivalente que supere a dependência existente:

// Scanbot SDK: camera-only — no file or server equivalent exists
var configuration = new BarcodeScannerScreenConfiguration
{
    BarcodeFormats = new[] { BarcodeFormat.Code128, BarcodeFormat.QrCode }
};

// This call requires iOS or Android hardware and a MAUI camera UI
// It cannot be redirected to a file path, stream, or server context
var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);

O IronBarcode aceita os mesmos tipos de origem — arquivo, fluxo, matriz de bytes ou PDF — em qualquer contexto de projeto:

// IronBarcode: the same call works in MAUI, ASP.NET Core, console, WPF, Azure Functions
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// From a file — works on any platform
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value} ({result.BarcodeType})");

IronBarcode vs Scanbot SDK: Comparação de Recursos

RecursoSDK ScanbotIronBarcode
Entrada a partir do caminho do arquivoNãoSim
Entrada do fluxoNãoSim
Entrada de um array de bytesNãoSim
Extração de código de barras PDFNãoSim
Visor da câmera ao vivoSimNão (use o MediaPicker)
Geração de código de barrasNãoSim
iOS PRINCIPALSimSim
Android MAUISimSim
Windows MAUINãoSim
macOS MAUINãoSim
ASP.NET CoreNãoSim
Console / ServidorNãoSim
Azure / Lambda / DockerNãoSim
.NET Framework 4.6.2+NãoSim
Correção de erros de aprendizado de máquinaNãoSim
Recuperação de código de barras danificadoNãoSim
Detecção automática de formatoSimSim
Formatos 1D20+30+
formatos 2DQR, DataMatrix, PDF417, AztecQR, DataMatrix, PDF417, Aztec, MaxiCode
Modelo de licençaTaxa fixa anualUma vez perpétuo
Preços publicadosEntre em contato com vendasSim ($999–$4,799)

Guia rápido: Migração do SDK Scanbot para o IronBarcode

Passo 1: Substitua o pacote NuGet

Remova o pacote Scanbot:

dotnet remove package ScanbotBarcodeSDK.MAUI
SHELL

Se o projeto usar referências de pacotes condicionais no arquivo .csproj, remova essas entradas também:

<!-- Remove any Scanbot-related package references -->
<PackageReference Include="ScanbotBarcodeSDK.MAUI" Version="8.0.0" />
XML

Instale o IronBarcode:

dotnet add package IronBarcode
SHELL

O IronBarcode está disponível no NuGet e é compatível com .NET 6, 7, 8, 9 e .NET Framework 4.6.2+. Para um projeto MAUI de múltiplos alvos, um único dotnet add package funciona em todos os alvos — não são necessárias referências de pacotes condicionais a plataforma.

Etapa 2: Atualizar Namespaces

Substitua os namespaces do Scanbot pelo namespace do IronBarcode:

// Remove
using ScanbotSDK.MAUI;

// Add
using IronBarCode;

Etapa 3: Inicializar a licença

Remova o bloco de inicialização do Scanbot e substitua-o pela chave de licença do IronBarcode. Adicione a inicialização da licença na inicialização do aplicativo em MauiProgram.cs, App.xaml.cs ou Program.cs, dependendo do tipo de projeto:

// Remove this
ScanbotSDKMain.Initialize(new SdkConfiguration
{
    LicenseKey = "YOUR-SCANBOT-LICENSE-KEY",
    LoggingEnabled = false
});

// Add this — one line, placed once at startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Exemplos de migração de código

Captura de fotos MAUI

A chamada de leitura do Scanbot abre uma interface de usuário da câmera em tela cheia e retorna quando o usuário lê um código de barras ou cancela a operação. O IronBarcode não oferece uma interface de câmera; a substituição usa o MediaPicker do MAUI para invocar a câmera do sistema, capturar uma foto e passar os bytes da imagem para BarcodeReader.Read().

Abordagem do SDK Scanbot:

using ScanbotSDK.MAUI;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var configuration = new BarcodeScannerScreenConfiguration
    {
        BarcodeFormats = new[]
        {
            BarcodeFormat.Code128,
            BarcodeFormat.QrCode,
            BarcodeFormat.Ean13
        },
        FinderAspectRatio = new AspectRatio(1, 1),
        TopBarBackgroundColor = Colors.DarkBlue
    };

    var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);

    if (result.Status == OperationResult.Ok)
    {
        foreach (var barcode in result.Barcodes)
            ResultLabel.Text = $"{barcode.Format}: {barcode.Text}";
    }
}

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

private async void ScanButton_Clicked(object sender, EventArgs e)
{
    var photo = await MediaPicker.CapturePhotoAsync();
    if (photo == null) return;

    using var stream = await photo.OpenReadAsync();
    using var ms = new MemoryStream();
    await stream.CopyToAsync(ms);

    var results = BarcodeReader.Read(ms.ToArray());
    var first = results.FirstOrDefault();
    ResultLabel.Text = first != null
        ? $"{first.BarcodeType}: {first.Value}"
        : "No barcode found";
}

A mudança na experiência do usuário consiste em visualizar a tela da câmera do sistema em vez do visor integrado do Scanbot com uma sobreposição da região de digitalização. Para aplicações comerciais — inventário, logística, fluxos de trabalho de documentos — a câmera do sistema é adequada. O tutorial do leitor de código de barras .NET MAUI aborda o padrão de integração completo para dispositivos iOS e Android, incluindo o gerenciamento de permissões.

Opções de digitalização e configuração

Os BarcodeScannerScreenConfiguration do Scanbot controlam quais formatos o scanner aceita e como a interface da câmera se parece. Os BarcodeReaderOptions do IronBarcode controlam como a imagem é analisada — velocidade de processamento, detecção de múltiplos códigos de barras e parâmetros semelhantes. Os conceitos de configuração correspondem a diferentes preocupações porque as operações subjacentes são diferentes.

Abordagem do SDK Scanbot:

var configuration = new BarcodeScannerScreenConfiguration
{
    BarcodeFormats = new[] { BarcodeFormat.Code128, BarcodeFormat.QrCode },
    FinderAspectRatio = new AspectRatio(1, 1),
    FlashEnabled = false,
    OrientationLockMode = OrientationLockMode.Portrait
};

var result = await ScanbotSDKMain.Barcode.StartScannerAsync(configuration);

if (result.Status == OperationResult.Ok)
{
    foreach (var barcode in result.Barcodes)
        Console.WriteLine($"{barcode.Format}: {barcode.Text}");
}

Abordagem do IronBarcode:

using IronBarCode;

// Format detection is automatic — BarcodeReaderOptions controls processing behavior
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = false
};

// Combined with the MediaPicker capture pattern
var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;

using var photoStream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await photoStream.CopyToAsync(ms);

var results = BarcodeReader.Read(ms.ToArray(), options);
foreach (var result in results)
    Console.WriteLine($"{result.BarcodeType}: {result.Value}");

Não é necessário especificar o formato — o IronBarcode detecta automaticamente todos os formatos suportados. Os parâmetros BarcodeReaderOptions que correspondem mais diretamente à configuração do Scanbot são Speed (controla a profundidade do processamento versus desempenho) e ExpectMultipleBarcodes (continua escaneando após a primeira correspondência).

Processamento de PDF no servidor

Este cenário não possui equivalente ao Scanbot. Com o IronBarcode, o mesmo pacote instalado para o aplicativo móvel MAUI pode extrair códigos de barras de PDFs em um endpoint ASP.NET Core do lado do servidor, oferecendo às equipes uma única dependência de código de barras que funciona em ambos os contextos de implantação.

Abordagem do SDK Scanbot:

// SDK Scanbot cannot be used here — the package does not compile
// in ASP.NET Core, Azure Functions, console apps, or any non-MAUI project.
// There is no server-side Scanbot equivalent for this endpoint.
C#

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
// Works in ASP.NET Core, console apps, Azure Functions, Docker — the same package as MAUI
using IronBarCode;

[HttpPost("extract-barcodes")]
public async Task<IActionResult> ExtractBarcodes(IFormFile file)
{
    using var ms = new MemoryStream();
    await file.CopyToAsync(ms);

    // Reads all barcodes from all pages of the uploaded PDF
    var results = BarcodeReader.Read(ms.ToArray());
    var values = results.Select(r => new
    {
        r.Value,
        Format = r.Format.ToString(),
        r.PageNumber
    });

    return Ok(values);
}

IronBarcode lida com PDFs de várias páginas nativamente — cada resultado possui uma propriedade PageNumber indicando em qual página o código de barras foi encontrado. O guia de extração de código de barras em PDF abrange toda a gama de opções de leitura de PDF, incluindo a seleção de intervalo de páginas e a otimização de desempenho para grandes lotes de documentos.

Processamento em segundo plano do ASP.NET Core

Para fluxos de trabalho em lote, como o Azure Functions ou o Worker Services, que processam documentos PDF arquivados, o IronBarcode fornece a mesma API usada no aplicativo MAUI e no controlador ASP.NET Core .

Abordagem do SDK Scanbot:

// SDK Scanbot does not support this deployment context.
// The package will not compile in Azure Functions or Worker Services.
C#

Abordagem do IronBarcode:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Azure Function or Worker Service batch processing
public void ProcessInvoiceBatch(IEnumerable<string> filePaths)
{
    foreach (var filePath in filePaths)
    {
        var results = BarcodeReader.Read(filePath);
        foreach (var result in results)
            Console.WriteLine($"File: {filePath} | Page {result.PageNumber}: {result.Value} ({result.BarcodeType})");
    }
}

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

SDK ScanbotIronBarcode
ScanbotSDKMain.Initialize(new SdkConfiguration { LicenseKey = "..." })IronBarCode.License.LicenseKey = "key"
new BarcodeScannerScreenConfiguration()new BarcodeReaderOptions()
ScanbotSDKMain.Barcode.StartScannerAsync(configuration)BarcodeReader.Read(path / stream / bytes)
result.Status == OperationResult.Okresults.Any() ou results.FirstOrDefault() != null
result.BarcodesValor de retorno de BarcodeReader.Read()
barcode.Formatresult.BarcodeType (IronBarCode.BarcodeEncoding)
barcode.Textresult.Value
BarcodeFormat.Code128BarcodeEncoding.Code128
BarcodeFormat.QrCodeBarcodeEncoding.QRCode
BarcodeFormat.Ean13BarcodeEncoding.EAN13
BarcodeScannerScreenConfiguration.FinderAspectRatioNão há equivalente — o enquadramento da imagem é feito pelo MediaPicker.
BarcodeScannerScreenConfiguration.FlashEnabledNão há equivalente — use as opções do MediaPicker.
Entrada necessária da câmeraCaminho do arquivo, fluxo, matriz de bytes ou PDF
Somente para iOS e Android MAUITodas as plataformas .NET e tipos de projeto

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

Problema 1: Não existe equivalente ao visor eletrônico

SDK Scanbot: Oferece um visor de câmera em tempo real integrado à experiência de digitalização, com sobreposição da região de digitalização, feedback tátil e detecção contínua de código de barras na transmissão de vídeo ao vivo.

Solução: Use o MediaPicker.CapturePhotoAsync() do MAUI para abrir a câmera do sistema e capturar uma imagem fixa para processamento:

var photo = await MediaPicker.CapturePhotoAsync();
if (photo == null) return;

using var stream = await photo.OpenReadAsync();
using var ms = new MemoryStream();
await stream.CopyToAsync(ms);

var results = BarcodeReader.Read(ms.ToArray());

Para aplicações comerciais, a câmera do sistema é adequada. Para aplicativos voltados ao consumidor, nos quais a sobreposição em tempo real é fundamental para a experiência do usuário, avalie se essa mudança na experiência do usuário é aceitável antes de se comprometer com a migração.

Problema 2: Diferenças nas permissões da câmera

SDK Scanbot: O pacote Scanbot lidava com as solicitações de permissão da câmera como parte do fluxo da interface do usuário, portanto, as permissões da câmera eram gerenciadas implicitamente pela inicialização do SDK e pela inicialização do scanner.

Solução: Com MediaPicker, o MAUI lida com as permissões através do mecanismo padrão. Verifique se AndroidManifest.xml inclui a declaração de permissão para a câmera e se Info.plist inclui a chave NSCameraUsageDescription. Essas entradas geralmente estão presentes em modelos de projeto MAUI pré-configurados. Se o aplicativo estava usando apenas o Scanbot para acessar a câmera, confirme se essas entradas do manifesto estão presentes antes de testar:

<!-- Android: AndroidManifest.xml -->
<uses-permission android:name="android.permission.CAMERA" />

<!-- iOS: Info.plist -->
<key>NSCameraUsageDescription</key>
<string>This app uses the camera to scan barcodes.</string>
XML

Problema 3: Erros de compilação do Windows resolvidos

Scanbot SDK: O pacote ScanbotBarcodeSDK.MAUI tem como alvo apenas net10.0-android e net10.0-ios, causando falhas na compilação quando net10.0-windows está presente em TargetFrameworks.

Solução: Remover a referência ao pacote Scanbot resolve a falha na compilação do Windows. O IronBarcode é resolvido corretamente em todos os destinos MAUI sem nenhuma configuração condicional à plataforma:

# Verify the build succeeds on all targets after removing Scanbot and adding IronBarcode
dotnet build -f net10.0-windows10.0.19041.0
dotnet build -f net10.0-ios
dotnet build -f net10.0-android
SHELL

Problema 4: Alteração do Namespace do Enum Format

Scanbot SDK: Usa valores de enum BarcodeFormat tais como BarcodeFormat.Code128 do namespace ScanbotBarcodeSDK.MAUI.

Solução: IronBarcode usa o enum BarcodeEncoding no namespace IronBarCode. Atualize todas as referências de formato e qualquer código que armazene, compare ou alterne entre valores de enumeração de formato:

// Before (Scanbot)
BarcodeFormat.Code128
BarcodeFormat.QrCode
BarcodeFormat.Ean13

// After (IronBarcode)
BarcodeEncoding.Code128
BarcodeEncoding.QRCode
BarcodeEncoding.EAN13

Observe que IronBarcode detecta automaticamente todos os formatos suportados por padrão — a filtragem explícita de formato através de BarcodeReaderOptions só é necessária para otimização de desempenho quando o formato esperado é conhecido de antemão.

Lista de verificação para migração do SDK do Scanbot

Tarefas pré-migração

Realize uma auditoria no código-fonte para identificar todo o uso do SDK Scanbot:

grep -rn "ScanbotSDK.Initialize" --include="*.cs" .
grep -rn "BarcodeScannerScreenConfiguration" --include="*.cs" .
grep -rn "ScanbotSDKMain.Barcode.StartScannerAsync" --include="*.cs" .
grep -rn "result\.Barcodes" --include="*.cs" .
grep -rn "barcode\.Format" --include="*.cs" .
grep -rn "barcode\.Text" --include="*.cs" .
grep -rn "OperationResult\.Ok" --include="*.cs" .
grep -rn "using ScanbotBarcodeSDK" --include="*.cs" .
grep -rn "BarcodeFormat\." --include="*.cs" .
SHELL
  • Documente todos os locais de chamada de varredura e indique se estão em código compartilhado, código específico da plataforma ou manipuladores de eventos da interface do usuário.
  • Identificar se alguma página ou fluxo depende do visor em tempo real do Scanbot como principal meio de interação com o usuário.
  • Confirme que entradas de permissão de câmera existem em AndroidManifest.xml e Info.plist
  • Revise o .csproj para quaisquer referências condicionais de pacotes associadas ao Scanbot

Tarefas de atualização de código

  1. Remova o pacote NuGet ScanbotSDK.MAUI
  2. Remova quaisquer entradas condicionais <PackageReference> para Scanbot do .csproj
  3. Instale o pacote NuGet IronBarcode
  4. Substitua using ScanbotSDK.MAUI; por using IronBarCode; em todos os arquivos
  5. Substitua ScanbotSDK.Initialize(...) por IronBarCode.License.LicenseKey = "key" na inicialização da aplicação
  6. Substitua ScanbotSDKMain.Barcode.StartScannerAsync(configuration) por MediaPicker.CapturePhotoAsync() seguido por cópia de fluxo e BarcodeReader.Read(bytes) em fluxos de trabalho de câmera MAUI
  7. Substitua ScanbotSDKMain.Barcode.StartScannerAsync(configuration) por BarcodeReader.Read(filePath) ou BarcodeReader.Read(stream) em contextos de processamento do lado do servidor e de arquivos
  8. Substitua verificações result.Status == OperationResult.Ok por results.Any() ou results.FirstOrDefault() != null
  9. Substitua referências de coleção result.Barcodes pelo valor de retorno de BarcodeReader.Read()
  10. Substitua o acesso à propriedade barcode.Text por result.Value
  11. Substitua os valores de enum BarcodeFormat.* pelos equivalentes BarcodeEncoding.*
  12. Substitua new BarcodeScannerScreenConfiguration() por new BarcodeReaderOptions() onde opções de processamento são necessárias

Testes pós-migração

  • Verifique se a compilação foi bem-sucedida em todas as plataformas de destino do MAUI, incluindo Windows e macOS, se presentes.
  • Teste o fluxo de MediaPicker.CapturePhotoAsync() em um dispositivo iOS físico e um dispositivo Android físico
  • Confirme se os valores dos códigos de barras decodificados pelo IronBarcode correspondem aos valores decodificados anteriormente pelo Scanbot para os mesmos códigos de barras físicos.
  • Teste a extração de PDFs com várias páginas se o projeto incluir fluxos de trabalho de processamento de documentos.
  • Verifique se a detecção de formato cobre todos os tipos de códigos de barras previamente configurados em BarcodeScannerScreenConfiguration.BarcodeFormats
  • Confirme se os endpoints do lado do servidor ou as tarefas em segundo plano produzem resultados corretos nas mesmas amostras de documentos.
  • Verificar se as solicitações de permissão da câmera aparecem corretamente na primeira inicialização no iOS e no Android.

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

Pacote unificado para todos os destinos de implantação: o IronBarcode é instalado uma única vez e executado em MAUI mobile, MAUI desktop, ASP.NET Core, Azure Functions, aplicativos de console e aplicativos de desktop Windows. As equipes não precisam mais de dependências de código de barras separadas para diferentes partes do mesmo sistema.

Processamento de PDFs e documentos: O IronBarcode lê códigos de barras de arquivos PDF nativamente, e cada resultado contém o número da página em que foi encontrado. Fluxos de trabalho de documentos que anteriormente eram impossíveis dentro do modelo Scanbot tornam-se operações diretas com BarcodeReader.Read("document.pdf").

Suporte a MAUI para desktops Windows e macOS: Projetos MAUI com múltiplas plataformas, incluindo Windows ou macOS, são compilados sem erros após a remoção do Scanbot. O IronBarcode fornece a mesma API de leitura de código de barras em todos os quatro dispositivos MAUI, eliminando o gerenciamento de dependências condicionais à plataforma que o Scanbot exigia.

Licença perpétua: O modelo de compra única elimina as obrigações de renovação anual. Uma vez licenciado, o IronBarcode pode ser usado indefinidamente no plano adquirido, sem taxas recorrentes. Equipes cujos projetos ultrapassaram a área de cobertura móvel do Scanbot constataram que o modelo de contrato perpétuo se alinha melhor ao planejamento de custos a longo prazo.

Geração de código de barras: O IronBarcode pode gerar códigos de barras em todos os formatos suportados, como arquivos de imagem, fluxos de dados ou conteúdo incorporado. Projetos que precisam tanto de leitura quanto de geração de dados não necessitam mais de uma segunda biblioteca além do Scanbot.

Leitura assistida por aprendizado de máquina: o IronBarcode aplica correção de erros baseada em aprendizado de máquina e recuperação de códigos de barras danificados para imagens complexas do mundo real — baixo contraste, danos parciais, baixa qualidade de impressão — que os algoritmos de detecção padrão não conseguem decodificar. Essa funcionalidade é particularmente relevante para fluxos de trabalho de processamento de documentos onde a qualidade da imagem é variável.

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