Como criar um aplicativo SDK de leitor de código de barras .NET MAUI
.NET MAUI cumpre a promessa de um único código base que mira o Android, iOS e Windows. O desafio surge quando você precisa integrar recursos de hardware nativo como a digitalização de códigos de barras. Fazer a ponte das APIs de câmera manualmente significa configurações específicas de plataforma, diretivas de compilação condicionais e horas de depuração. Há um caminho mais rápido.
Este tutorial mostra como construir um leitor de código de barras multiplataforma funcional em .NET MAUI usando o IronBarcode. Você configurará o projeto, configurará permissões de plataforma, digitalizará códigos de barras a partir de arquivos de imagem, lerá códigos de barras de documentos PDF e lidará com múltiplas simbologias com opções de digitalização -- tudo com código que você pode executar em qualquer alvo suportado.
Comece seu teste gratuito e siga os passos abaixo.
Como Configurar um SDK de Leitor de Código de Barras em .NET MAUI?
Configurar um SDK de leitor de código de barras em .NET MAUI requer a criação de um novo projeto, a instalação do pacote NuGet e a configuração das permissões da plataforma. Todo o processo de configuração leva alguns minutos no Visual Studio.
Crie o Projeto .NET MAUI
Abra o Visual Studio e crie um novo projeto de Aplicativo .NET MAUI. Dê ao projeto um nome descritivo como "BarcodeScanner" e selecione .NET 8 ou posterior como a estrutura de destino. O Visual Studio gera a estrutura de projeto padrão com pastas específicas para Android e iOS.
Se você está mirando .NET 10, o mesmo modelo de projeto se aplica. Atualize a propriedade <TargetFrameworks> no seu arquivo .csproj para incluir net10.0-android, net10.0-ios e net10.0-windows10.0.19041.0 conforme necessário. Consulte a documentação de plataformas suportadas do .NET MAUI para a lista completa de identificadores de estrutura de destino e requisitos mínimos de versão do SO.
Instale o IronBarcode
Instale o pacote NuGet do IronBarcode usando o Console do Gerenciador de Pacotes:
Install-Package BarCode
Este comando baixa e instala o SDK de leitor de código de barras junto com todas as dependências necessárias para o aplicativo .NET MAUI.
Configure Permissões de Plataforma
Mesmo ao digitalizar a partir de arquivos de imagem, em vez de um fluxo de câmera ao vivo, é uma boa prática configurar as seguintes permissões para o aplicativo de leitor de código de barras .NET MAUI.
Para Android, adicione o seguinte a Platforms/Android/AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
Para iOS, adicione estas entradas em Platforms/iOS/Info.plist:
<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access needed to select barcode images for scanning.</string>
<key>NSCameraUsageDescription</key>
<string>Camera permission for barcode scanning.</string>
Inicialize o SDK
Defina sua chave de licença cedo no ciclo de vida do aplicativo para garantir que o IronBarcode esteja totalmente ativado antes que qualquer chamada de digitalização seja feita. Coloque a ativação em MauiProgram.cs:
using IronBarCode;
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});
// Activate IronBarcode before the app starts
License.LicenseKey = "YOUR_LICENSE_KEY_HERE";
return builder.Build();
using IronBarCode;
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
});
// Activate IronBarcode before the app starts
License.LicenseKey = "YOUR_LICENSE_KEY_HERE";
return builder.Build();
Imports IronBarCode
Dim builder = MauiApp.CreateBuilder()
builder _
.UseMauiApp(Of App)() _
.ConfigureFonts(Sub(fonts)
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular")
End Sub)
' Activate IronBarcode before the app starts
License.LicenseKey = "YOUR_LICENSE_KEY_HERE"
Return builder.Build()
O IronBarcode fornece uma licença de teste gratuita para desenvolvimento e teste. Defina a chave uma vez na inicialização; todas as chamadas subsequentes para BarcodeReader e BarcodeWriter dentro do mesmo processo usam a licença ativada.
Como Ler Códigos de Barras de Arquivos de Imagem?
A funcionalidade central de qualquer leitor de código de barras MAUI é ler códigos de barras a partir de imagens selecionadas. O método BarcodeReader.Read() aceita um caminho de arquivo e retorna uma coleção de objetos BarcodeResult, um para cada código de barras detectado.
Desenhe a Interface do Usuário
Crie uma interface limpa em MainPage.xaml que permita aos usuários selecionar um arquivo de imagem e visualizar os dados do código de barras escaneado:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BarcodeScanner.MainPage">
<VerticalStackLayout Padding="20" Spacing="15">
<Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
<Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
<Image x:Name="SelectedImageView" HeightRequest="200"/>
<Label x:Name="ResultLabel" FontSize="16"/>
</VerticalStackLayout>
</ContentPage>
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="BarcodeScanner.MainPage">
<VerticalStackLayout Padding="20" Spacing="15">
<Label Text=".NET MAUI Barcode Scanner" FontSize="24" HorizontalOptions="Center"/>
<Button Text="Select Image to Scan" Clicked="OnSelectImageClicked"/>
<Image x:Name="SelectedImageView" HeightRequest="200"/>
<Label x:Name="ResultLabel" FontSize="16"/>
</VerticalStackLayout>
</ContentPage>
Implementar a Digitalização de Códigos de Barras
Adicione a lógica de escaneamento a MainPage.xaml.cs. Este código lida com a seleção de imagens via a API FilePicker MAUI e passa o caminho do arquivo escolhido para o IronBarcode:
using IronBarCode;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnSelectImageClicked(object sender, EventArgs e)
{
var result = await FilePicker.PickAsync(new PickOptions
{
FileTypes = FilePickerFileType.Images,
PickerTitle = "Select a barcode image"
});
if (result != null)
{
// Display the selected image
SelectedImageView.Source = ImageSource.FromFile(result.FullPath);
// Read barcodes from the image file
var barcodes = BarcodeReader.Read(result.FullPath);
ResultLabel.Text = barcodes.Any()
? $"Found: {barcodes.First().Value}"
: "No barcodes detected in selected image.";
}
}
}
using IronBarCode;
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private async void OnSelectImageClicked(object sender, EventArgs e)
{
var result = await FilePicker.PickAsync(new PickOptions
{
FileTypes = FilePickerFileType.Images,
PickerTitle = "Select a barcode image"
});
if (result != null)
{
// Display the selected image
SelectedImageView.Source = ImageSource.FromFile(result.FullPath);
// Read barcodes from the image file
var barcodes = BarcodeReader.Read(result.FullPath);
ResultLabel.Text = barcodes.Any()
? $"Found: {barcodes.First().Value}"
: "No barcodes detected in selected image.";
}
}
}
Imports IronBarCode
Public Partial Class MainPage
Inherits ContentPage
Public Sub New()
InitializeComponent()
End Sub
Private Async Sub OnSelectImageClicked(sender As Object, e As EventArgs)
Dim result = Await FilePicker.PickAsync(New PickOptions With {
.FileTypes = FilePickerFileType.Images,
.PickerTitle = "Select a barcode image"
})
If result IsNot Nothing Then
' Display the selected image
SelectedImageView.Source = ImageSource.FromFile(result.FullPath)
' Read barcodes from the image file
Dim barcodes = BarcodeReader.Read(result.FullPath)
ResultLabel.Text = If(barcodes.Any(), $"Found: {barcodes.First().Value}", "No barcodes detected in selected image.")
End If
End Sub
End Class
Saída

O método BarcodeReader.Read() analisa a imagem selecionada e retorna todos os códigos de barras detectados. O IronBarcode reconhece automaticamente múltiplas simbologias de códigos de barras incluindo QR codes, Code 128, Code 39, EAN-13, e muitos outros formatos suportados. A coleção de resultados expõe propriedades como BarcodeType, Value, PageNumber e coordenadas do retângulo delimitador para cada código detectado.
Como Escanear Códigos de Barras de Documentos PDF?
Uma capacidade que distingue o IronBarcode de muitas alternativas é a leitura de códigos de barras diretamente de arquivos PDF. Isso é essencial para aplicativos .NET MAUI que lidam com fluxos de trabalho de documentos — manifestos de embarque, ordens de compra, registros médicos, e casos de uso semelhantes que dependem de códigos de barras incorporados em PDF.
O método BarcodeReader.ReadPdf() aceita um caminho de arquivo e retorna a mesma coleção BarcodeResult que o leitor de imagem, com uma propriedade adicional PageNumber que identifica de qual página do PDF cada código de barras veio:
using IronBarCode;
private async void OnSelectPdfClicked(object sender, EventArgs e)
{
var result = await FilePicker.PickAsync(new PickOptions
{
PickerTitle = "Select a PDF with barcodes"
});
if (result != null)
{
// Read barcodes from every page of the PDF
var barcodes = BarcodeReader.ReadPdf(result.FullPath);
var output = string.Join("\n", barcodes.Select(b =>
$"Page {b.PageNumber}: [{b.BarcodeType}] {b.Value}"));
await DisplayAlert("Scan Results", output.Length > 0 ? output : "No barcodes found.", "OK");
}
}
using IronBarCode;
private async void OnSelectPdfClicked(object sender, EventArgs e)
{
var result = await FilePicker.PickAsync(new PickOptions
{
PickerTitle = "Select a PDF with barcodes"
});
if (result != null)
{
// Read barcodes from every page of the PDF
var barcodes = BarcodeReader.ReadPdf(result.FullPath);
var output = string.Join("\n", barcodes.Select(b =>
$"Page {b.PageNumber}: [{b.BarcodeType}] {b.Value}"));
await DisplayAlert("Scan Results", output.Length > 0 ? output : "No barcodes found.", "OK");
}
}
Imports IronBarCode
Private Async Sub OnSelectPdfClicked(sender As Object, e As EventArgs)
Dim result = Await FilePicker.PickAsync(New PickOptions With {
.PickerTitle = "Select a PDF with barcodes"
})
If result IsNot Nothing Then
' Read barcodes from every page of the PDF
Dim barcodes = BarcodeReader.ReadPdf(result.FullPath)
Dim output = String.Join(vbLf, barcodes.Select(Function(b) $"Page {b.PageNumber}: [{b.BarcodeType}] {b.Value}"))
Await DisplayAlert("Scan Results", If(output.Length > 0, output, "No barcodes found."), "OK")
End If
End Sub
Saída

O método ReadPdf() escaneia todas as páginas de um PDF e retorna dados de código de barras junto com números de página, tornando simples o processamento de documentos que contêm múltiplos códigos de barras. Se o PDF abrange dezenas de páginas, considere passar um objeto BarcodeReaderOptions com PageNumbers definido para um intervalo específico para limitar o escaneamento às páginas relevantes e reduzir o tempo de processamento.
Como Lidamos com Múltiplos Códigos de Barras e QR Codes?
Aplicativos de produção frequentemente precisam detectar múltiplos códigos de barras de uma única imagem ou filtrar resultados por tipo de código de barras. A classe BarcodeReaderOptions expõe as propriedades de configuração que controlam o comportamento de detecção. Definir ExpectMultipleBarcodes para true instrui o leitor a continuar escaneando após a primeira correspondência, em vez de parar cedo:
using IronBarCode;
// Configure the reader for multi-barcode detection with type filtering
var options = new BarcodeReaderOptions
{
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
foreach (var barcode in barcodes)
{
Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}
using IronBarCode;
// Configure the reader for multi-barcode detection with type filtering
var options = new BarcodeReaderOptions
{
ExpectMultipleBarcodes = true,
ExpectBarcodeTypes = BarcodeEncoding.QRCode | BarcodeEncoding.Code128,
Speed = ReadingSpeed.Balanced
};
var barcodes = BarcodeReader.Read(imagePath, options);
foreach (var barcode in barcodes)
{
Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}");
}
Imports IronBarCode
' Configure the reader for multi-barcode detection with type filtering
Dim options As New BarcodeReaderOptions With {
.ExpectMultipleBarcodes = True,
.ExpectBarcodeTypes = BarcodeEncoding.QRCode Or BarcodeEncoding.Code128,
.Speed = ReadingSpeed.Balanced
}
Dim barcodes = BarcodeReader.Read(imagePath, options)
For Each barcode In barcodes
Console.WriteLine($"Type: {barcode.BarcodeType}, Value: {barcode.Value}")
Next
A propriedade Speed controla o equilíbrio entre tempo de escaneamento e precisão. ReadingSpeed.Faster prioriza por produtividade, adequado para aplicativos que escaneiam imagens de alta qualidade em massa. ReadingSpeed.ExtraSlow aplica passagens de correção de imagem mais agressivas para entradas desafiadoras — baixo contraste, ângulos inclinados ou códigos parcialmente ocultos. ReadingSpeed.Balanced é o ponto de partida correto para a maioria dos aplicativos.
A enumeração BarcodeEncoding suporta combinações bit a bit, permitindo restringir o escaneamento exatamente às simbologias relevantes para o caso de uso, sem penalizar o desempenho com verificações desnecessárias.
Como Ler Códigos de Barras de Streams de Memória?
Caminhos de arquivos funcionam bem na maioria dos cenários, mas alguns fluxos de trabalho do .NET MAUI passam dados de imagem através da memória — quadros capturados de uma prévia de câmera, bytes baixados de uma API REST, ou dados de imagem gerados em processo. IronBarcode suporta entradas System.IO.Stream diretamente na sobrecarga BarcodeReader.Read():
using IronBarCode;
using System.IO;
// Read a barcode from a MemoryStream (e.g., an in-memory image buffer)
private BarcodeResult[] ReadFromStream(Stream imageStream)
{
return BarcodeReader.Read(imageStream);
}
// Example: download an image and scan without writing to disk
private async Task<string> ScanDownloadedBarcode(string imageUrl)
{
using var httpClient = new HttpClient();
using var stream = await httpClient.GetStreamAsync(imageUrl);
using var memoryStream = new MemoryStream();
await stream.CopyToAsync(memoryStream);
memoryStream.Position = 0;
var barcodes = BarcodeReader.Read(memoryStream);
return barcodes.Any() ? barcodes.First().Value : string.Empty;
}
using IronBarCode;
using System.IO;
// Read a barcode from a MemoryStream (e.g., an in-memory image buffer)
private BarcodeResult[] ReadFromStream(Stream imageStream)
{
return BarcodeReader.Read(imageStream);
}
// Example: download an image and scan without writing to disk
private async Task<string> ScanDownloadedBarcode(string imageUrl)
{
using var httpClient = new HttpClient();
using var stream = await httpClient.GetStreamAsync(imageUrl);
using var memoryStream = new MemoryStream();
await stream.CopyToAsync(memoryStream);
memoryStream.Position = 0;
var barcodes = BarcodeReader.Read(memoryStream);
return barcodes.Any() ? barcodes.First().Value : string.Empty;
}
Imports IronBarCode
Imports System.IO
Imports System.Net.Http
Imports System.Threading.Tasks
' Read a barcode from a MemoryStream (e.g., an in-memory image buffer)
Private Function ReadFromStream(imageStream As Stream) As BarcodeResult()
Return BarcodeReader.Read(imageStream)
End Function
' Example: download an image and scan without writing to disk
Private Async Function ScanDownloadedBarcode(imageUrl As String) As Task(Of String)
Using httpClient As New HttpClient()
Using stream As Stream = Await httpClient.GetStreamAsync(imageUrl)
Using memoryStream As New MemoryStream()
Await stream.CopyToAsync(memoryStream)
memoryStream.Position = 0
Dim barcodes = BarcodeReader.Read(memoryStream)
Return If(barcodes.Any(), barcodes.First().Value, String.Empty)
End Using
End Using
End Using
End Function
A sobrecarga de fluxo aceita qualquer subclasse Stream, incluindo MemoryStream, FileStream e fluxos de rede. A biblioteca lida com a detecção de formato internamente, então você não precisa especificar o tipo de imagem antes de chamar Read().
Como Gerar Códigos de Barras em um App MAUI?
IronBarcode lida tanto com a geração quanto com a leitura de códigos de barras. A classe BarcodeWriter produz códigos de barras como arquivos de imagem, objetos Bitmap ou instâncias Stream que você pode exibir em linha em uma visualização MAUI. Isso é útil para aplicativos de inventário que precisam imprimir ou compartilhar códigos de barras junto com a funcionalidade de digitalização:
using IronBarCode;
// Generate a QR code and display it in a MAUI Image control
private async void OnGenerateQrClicked(object sender, EventArgs e)
{
// Create a QR code barcode
var qrCode = QRCodeWriter.CreateQrCode(
value: "https://ironsoftware.com/csharp/barcode/",
qrCodeSize: 500,
errorCorrection: QRCodeWriter.QrErrorCorrectionLevel.Medium
);
// Save to a temporary file and display
var tempPath = Path.Combine(FileSystem.CacheDirectory, "generated-qr.png");
qrCode.SaveAsPng(tempPath);
GeneratedImageView.Source = ImageSource.FromFile(tempPath);
}
using IronBarCode;
// Generate a QR code and display it in a MAUI Image control
private async void OnGenerateQrClicked(object sender, EventArgs e)
{
// Create a QR code barcode
var qrCode = QRCodeWriter.CreateQrCode(
value: "https://ironsoftware.com/csharp/barcode/",
qrCodeSize: 500,
errorCorrection: QRCodeWriter.QrErrorCorrectionLevel.Medium
);
// Save to a temporary file and display
var tempPath = Path.Combine(FileSystem.CacheDirectory, "generated-qr.png");
qrCode.SaveAsPng(tempPath);
GeneratedImageView.Source = ImageSource.FromFile(tempPath);
}
Imports IronBarCode
' Generate a QR code and display it in a MAUI Image control
Private Async Sub OnGenerateQrClicked(sender As Object, e As EventArgs)
' Create a QR code barcode
Dim qrCode = QRCodeWriter.CreateQrCode(
value:="https://ironsoftware.com/csharp/barcode/",
qrCodeSize:=500,
errorCorrection:=QRCodeWriter.QrErrorCorrectionLevel.Medium
)
' Save to a temporary file and display
Dim tempPath = Path.Combine(FileSystem.CacheDirectory, "generated-qr.png")
qrCode.SaveAsPng(tempPath)
GeneratedImageView.Source = ImageSource.FromFile(tempPath)
End Sub
A classe QRCodeWriter suporta todos os quatro níveis de correção de erros de QR (Baixo, Médio, Quartil, Alto), dimensionamento personalizado e opções de estilo, incluindo controle de cor de primeiro plano/fundo. Para simbologias não-QR, use BarcodeWriter.CreateBarcode() com o valor BarcodeEncoding apropriado. A referência de API de geração de código de barras documenta todos os formatos de saída suportados.
Quais São as Principais Capacidades Desta Biblioteca de Scanner de Códigos de Barras?
IronBarcode oferece várias vantagens para projetos de digitalização de códigos de barras .NET MAUI que o distinguem de alternativas de código aberto como o ZXing.Net.MAUI:
| Capacidade | Detalhe |
|---|---|
| Suporte multiplataforma | Alvos: Android, iOS e Windows a partir de um único pacote NuGet |
| Múltiplas fontes de entrada | Digitalização a partir de caminhos de arquivos, fluxos de memória, e documentos PDF |
| Cobertura de formato | Decodifica mais de 30 simbologias 1D e 2D incluindo QR, Data Matrix, e PDF417 |
| Geração de código de barras | Produz QR codes e códigos de barras 1D como saída em PNG, bitmap, ou stream |
| Correção de imagem | Lida automaticamente com entradas rotacionadas, inclinadas, e de baixo contraste |
| Sem dependência de SDK nativo | Biblioteca pura .NET sem necessidade de vinculações nativas específicas de plataforma |
O ponto "sem dependência de SDK nativo" importa em projetos .NET MAUI porque as bibliotecas nativas específicas de plataforma requerem etapas de vinculação separadas para cada alvo. IronBarcode evita essa complexidade totalmente, o que significa que a mesma referência NuGet produz binários funcionais para todas as três plataformas suportadas sem configuração adicional.
Para uma lista completa de formatos de código de barras suportados, veja a documentação de formatos suportados pelo IronBarcode. Para preços e termos de licenciamento para implantação em produção, reveja a página de licenciamento do IronBarcode.
Quais são as melhores práticas para escaneamento de código de barras em produção?
Implantar um leitor de código de barras para produção requer atenção a algumas áreas além da chamada básica de leitura. As diretrizes seguintes abordam os pontos de falha mais comuns em aplicativos .NET MAUI de código de barras.
Escolha a velocidade de leitura certa. ReadingSpeed.Balanced lida corretamente com a maioria das imagens do mundo real. Reserve ReadingSpeed.ExtraSlow para escaneamentos de documentos impressos ou imagens que os usuários não possam capturar novamente. Evite ReadingSpeed.ExtraSlow para fluxos de trabalho de alto volume, pois cada escaneamento leva consideravelmente mais tempo.
Filtre por tipos esperados. Se o aplicativo processa apenas códigos QR, defina ExpectBarcodeTypes = BarcodeEncoding.QRCode. Restringir o espaço de busca reduz o tempo de processamento e elimina falsos positivos de outras simbologias presentes em gráficos de fundo.
Use ExpectMultipleBarcodes apenas quando necessário. Configurar isso para true sempre faz o leitor realizar passagens adicionais. Para entradas com um único código de barras, mantenha o padrão (false) para que o escaneamento retorne assim que o primeiro código válido for encontrado.
Lide de forma elegante com resultados vazios. BarcodeReader.Read() retorna um array vazio em vez de lançar exceções quando nenhum código de barras é detectado. Verifique .Any() antes de acessar First() e apresente uma mensagem clara ao usuário. Um aviso de tentativa com orientações ("certifique-se de que o código de barras está bem iluminado e centralizado") melhora mais a experiência do usuário do que um erro genérico.
Cacheie o objeto de opções. Criar uma instância de BarcodeReaderOptions em cada escaneamento adiciona alocações. Construa as opções uma vez a nível de classe e reutilize em chamadas.
Consulte o guia de solução de problemas do IronBarcode e o tutorial do leitor de código de barras para orientações adicionais sobre como diagnosticar falhas de digitalização e otimizar o desempenho.
Quais são os seus próximos passos?
Construir um scanner de código de barras .NET MAUI com IronBarcode requer a instalação de um único pacote NuGet, configuração das permissões da plataforma e chamada de BarcodeReader.Read() com um caminho de arquivo ou fluxo. A mesma API tem como alvo Android, iOS e Windows sem ramos de código específicos de plataforma.
Para estender ainda mais o aplicativo, considere os seguintes recursos:
- Lista completa de recursos do IronBarcode -- catálogo de todas as capacidades de digitalização e geração
- Referência de API do leitor de código de barras -- documentação completa de métodos e propriedades
- Tutorial passo-a-passo do leitor de código de barras MAUI -- guia estendido cobrindo integração com câmera
- Guia do scanner de documentos MAUI -- casos de uso de digitalização de documentos
Inicie sua avaliação gratuita para obter uma chave de licença de desenvolvimento, ou explore opções de licenciamento para implantação em produção.
Perguntas frequentes
O que é .NET MAUI e por que a integração da leitura de código de barras é um desafio?
O .NET MAUI é um framework de interface de usuário multiplataforma que oferece suporte a Android, iOS e Windows a partir de uma única base de código. A leitura de códigos de barras é um desafio, pois cada plataforma expõe APIs de câmera e armazenamento diferentes. O IronBarcode fornece uma API .NET unificada que lida com as diferenças entre as plataformas.
Quais formatos de código de barras o IronBarcode suporta em aplicativos .NET MAUI ?
O IronBarcode suporta mais de 30 simbologias de código de barras, incluindo QR Code, Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, Data Matrix, PDF417, Aztec e ITF. Use a enumeração BarcodeEncoding para filtrar por formatos específicos.
O IronBarcode consegue ler códigos de barras de arquivos PDF em um aplicativo .NET MAUI ?
Sim. O método BarcodeReader.ReadPdf() lê todas as páginas de um documento PDF e retorna uma coleção BarcodeResult. Cada resultado inclui o valor do código de barras, o tipo e o número da página.
O IronBarcode funciona em todas as plataformas de destino do .NET MAUI ?
O IronBarcode oferece suporte a plataformas Android, iOS e Windows em um projeto .NET MAUI usando um único pacote NuGet . Não são necessárias vinculações de SDK nativas específicas da plataforma.
Como ler vários códigos de barras a partir de uma única imagem?
Defina ExpectMultipleBarcodes = true em BarcodeReaderOptions e passe o objeto de opções para BarcodeReader.Read(). O leitor fará passagens de leitura adicionais para detectar todos os códigos de barras na imagem.
Qual a diferença entre ReadingSpeed.Faster e ReadingSpeed.ExtraSlow?
A opção ReadingSpeed.Faster prioriza a taxa de transferência e funciona bem para imagens de alta qualidade. Já a opção ReadingSpeed.ExtraSlow aplica uma correção de imagem mais agressiva e é adequada para entradas complexas, como códigos de barras com baixo contraste, rotacionados ou parcialmente ocluídos.
O IronBarcode consegue ler códigos de barras de um MemoryStream?
Sim. O método BarcodeReader.Read() aceita um parâmetro System.IO.Stream, que inclui MemoryStream, FileStream e fluxos de rede. Isso permite a leitura de dados de imagem na memória sem a necessidade de gravação em disco.
Como gerar um código QR em um aplicativo .NET MAUI com IronBarcode?
Utilize o método `QRCodeWriter.CreateQrCode()` com o valor de destino, o tamanho e o nível de correção de erros. Salve o resultado como um arquivo PNG usando o método `SaveAsPng()` e exiba-o em um controle de imagem MAUI utilizando o método `ImageSource.FromFile()`.
Quais permissões são necessárias para a leitura de código de barras em um aplicativo Android .NET MAUI ?
Adicione as permissões android.permission.READ_EXTERNAL_STORAGE e android.permission.CAMERA ao AndroidManifest.xml. Para iOS, adicione as chaves NSPhotoLibraryUsageDescription e NSCameraUsageDescription ao Info.plist.



