Cómo crear una aplicación SDK para escáner de código de barras .NET MAUI
.NET MAUI cumple la promesa de una única base de código dirigida a Android, iOS y Windows. El desafío surge cuando es necesario integrar funciones de hardware nativas, como el escaneo de códigos de barras. Conectar las API de la cámara manualmente implica configuraciones específicas de la plataforma, directivas de compilación condicionales y horas de depuración. Hay un camino más rápido.
Este tutorial le muestra cómo construir un escáner de código de barras multiplataforma funcional en .NET MAUI usando IronBarcode . Configurará el proyecto, configurará los permisos de la plataforma, escaneará códigos de barras de archivos de imagen, leerá códigos de barras de documentos PDF y manejará múltiples simbologías con opciones de escaneo, todo con un código que puede ejecutar en cualquier destino compatible.
Comience su prueba gratuita y siga los pasos a continuación.
¿Cómo configurar un SDK de escáner de código de barras en .NET MAUI?
Para configurar un SDK de escáner de código de barras .NET MAUI es necesario crear un nuevo proyecto, instalar el paquete NuGet y configurar los permisos de la plataforma. Todo el proceso de configuración tarda unos minutos en Visual Studio.
Crear el proyecto .NET MAUI
Abre Visual Studio y crea un nuevo proyecto .NET MAUI App. Nombre el proyecto con algo descriptivo como "BarcodeScanner" y seleccione .NET 8 o posterior como marco de destino. Visual Studio genera la estructura de proyecto predeterminada con carpetas específicas de la plataforma para Android e iOS.
Si su objetivo es .NET 10, se aplica la misma plantilla de proyecto. Actualice la propiedad <TargetFrameworks> en su archivo .csproj para incluir net10.0-android, net10.0-ios y net10.0-windows10.0.19041.0 según sea necesario. Consulte la documentación de las plataformas compatibles con .NET MAUI para obtener la lista completa de nombres de marco de destino y los requisitos mínimos de versión del sistema operativo.
Instalar IronBarcode
Instale el paquete NuGet IronBarcode mediante la consola del administrador de paquetes:
Install-Package BarCode
Este comando descarga e instala el SDK del escáner de código de barras junto con todas las dependencias necesarias para la aplicación .NET MAUI .
Configurar permisos de plataforma
Incluso cuando se escanea desde archivos de imagen en lugar de una transmisión de cámara en vivo, es una buena práctica configurar los siguientes permisos para la aplicación de escáner de código de barras .NET MAUI .
Para Android, agregue lo siguiente 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, agregue estas entradas a 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>
Iniciar el SDK
Configure su clave de licencia al comienzo del ciclo de vida de la aplicación para garantizar que IronBarcode esté completamente activado antes de realizar cualquier llamada de escaneo. Coloque la activación en 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()
IronBarcode ofrece una licencia de prueba gratuita para desarrollo y pruebas. Establezca la clave una vez al inicio; todas las llamadas posteriores a BarcodeReader y BarcodeWriter dentro del mismo proceso usan la licencia activada.
¿Cómo se leen códigos de barras desde archivos de imagen?
La funcionalidad principal de cualquier escáner de código de barras MAUI es leer códigos de barras de imágenes seleccionadas. El método BarcodeReader.Read() acepta una ruta de archivo y devuelve una colección de objetos BarcodeResult, uno por cada código de barras detectado.
Diseñar la interfaz de usuario
Cree una interfaz limpia en MainPage.xaml que permita a los usuarios seleccionar un archivo de imagen y ver los datos del 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 el escaneado de códigos de barras
Agregue la lógica de escaneo a MainPage.xaml.cs. Este código maneja la selección de imágenes a través de la API MAUI FilePicker y pasa la ruta del archivo elegido a 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
Resultado

El método BarcodeReader.Read() analiza la imagen seleccionada y devuelve todos los códigos de barras detectados. IronBarcode reconoce automáticamente múltiples simbologías de códigos de barras, incluidos códigos QR, Código 128, Código 39, EAN-13 y muchos otros formatos compatibles . La colección de resultados expone propiedades como BarcodeType, Value, PageNumber y coordenadas del cuadro delimitador para cada código detectado.
¿Cómo escanear códigos de barras de documentos PDF?
Una capacidad que distingue a IronBarcode de muchas alternativas es la lectura de códigos de barras directamente desde archivos PDF. Esto es esencial para las aplicaciones .NET MAUI que manejan flujos de trabajo de documentos (manifiestos de envío, órdenes de compra, registros médicos y casos de uso similares que dependen de códigos de barras integrados en PDF).
El método BarcodeReader.ReadPdf() acepta una ruta de archivo y devuelve la misma colección BarcodeResult que el lector de imágenes, con una propiedad PageNumber adicional que identifica de qué página PDF proviene cada código de barras:
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
Resultado

El método ReadPdf() escanea todas las páginas de un PDF y devuelve datos de código de barras junto con los números de página, lo que facilita el procesamiento de documentos que contienen múltiples códigos de barras. Si el PDF abarca docenas de páginas, considere pasar un objeto BarcodeReaderOptions con PageNumbers establecido en un rango específico para limitar el escaneo a las páginas relevantes y reducir el tiempo de procesamiento.
¿Cómo gestionar varios códigos de barras y códigos QR?
Las aplicaciones de producción a menudo necesitan detectar múltiples códigos de barras de una sola imagen o filtrar resultados por tipo de código de barras. La clase BarcodeReaderOptions expone las propiedades de configuración que controlan el comportamiento de detección. La configuración de ExpectMultipleBarcodes en true le indica al lector que continúe escaneando después de la primera coincidencia en lugar de detenerse antes:
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
La propiedad Speed controla el equilibrio entre el tiempo de escaneo y la precisión. ReadingSpeed.Faster prioriza el rendimiento, lo que es adecuado para aplicaciones que escanean imágenes de alta calidad en masa. ReadingSpeed.ExtraSlow aplica pasadas de corrección de imagen más agresivas para entradas desafiantes: bajo contraste, ángulos sesgados o códigos parcialmente ocluidos. ReadingSpeed.Balanced es el punto de partida correcto para la mayoría de las aplicaciones.
La enumeración BarcodeEncoding admite combinaciones bit a bit, por lo que puede restringir el escaneo exactamente a las simbologías relevantes para el caso de uso sin penalizar el rendimiento con verificaciones innecesarias.
¿Cómo se leen los códigos de barras desde los flujos de memoria?
Las rutas de archivos funcionan bien en la mayoría de los escenarios, pero algunos flujos de trabajo de .NET MAUI pasan datos de imagen a través de la memoria (fotogramas capturados de una vista previa de la cámara, bytes descargados de una API REST o datos de imagen generados en el proceso). IronBarcode admite entradas System.IO.Stream directamente en la 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
La sobrecarga de flujo acepta cualquier subclase Stream, incluidas MemoryStream, FileStream y flujos de red. La biblioteca maneja la detección de formato internamente, por lo que no es necesario especificar el tipo de imagen antes de llamar a Read().
¿Cómo generar códigos de barras en una aplicación MAUI?
IronBarcode gestiona tanto la generación como la lectura de códigos de barras. La clase BarcodeWriter produce códigos de barras como archivos de imagen, objetos Bitmap o instancias Stream que puede mostrar en línea en una vista MAUI. Esto es útil para las aplicaciones de inventario que necesitan imprimir o compartir códigos de barras junto con la funcionalidad de escaneo:
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
La clase QRCodeWriter admite los cuatro niveles de corrección de errores QR (Bajo, Medio, Cuartil, Alto), opciones de tamaño y estilo personalizadas, incluido el control de color de primer plano y fondo. Para simbologías que no sean QR, utilice BarcodeWriter.CreateBarcode() con el valor BarcodeEncoding apropiado. La referencia de la API de generación de códigos de barras documenta todos los formatos de salida admitidos.
¿Cuáles son las capacidades clave de esta biblioteca de escáneres de código de barras?
IronBarcode ofrece varias ventajas para los proyectos de escaneo de códigos de barras .NET MAUI que lo distinguen de las alternativas de código abierto como ZXing .NET.MAUI:
| Capacidad | Detalle |
|---|---|
| Soporte multiplataforma | Se dirige a Android, iOS y Windows desde un único paquete NuGet |
| Múltiples fuentes de entrada | Escanear desde rutas de archivos, secuencias de memoria y documentos PDF |
| Cobertura de formato | Decodifica más de 30 simbologías 1D y 2D, incluidas QR, Data Matrix y PDF417 |
| Generación de códigos de barras | Produce códigos QR y códigos de barras 1D como salida PNG, de mapa de bits o de flujo |
| Corrección de imagen | Maneja automáticamente entradas rotadas, sesgadas y de bajo contraste |
| Sin dependencia nativa del SDK | Biblioteca .NET pura que no requiere enlaces nativos específicos de la plataforma |
El punto de "no hay dependencia de SDK nativo" es importante en los proyectos .NET MAUI porque las bibliotecas nativas específicas de la plataforma requieren pasos de vinculación separados para cada destino. IronBarcode evita esta complejidad por completo, lo que significa que la misma referencia NuGet produce binarios funcionales para las tres plataformas compatibles sin configuración adicional.
Para obtener una lista completa de los formatos de códigos de barras admitidos, consulte la documentación de formatos admitidos de IronBarcode . Para conocer los precios y los términos de licencia para la implementación de producción, revise la página de licencias de IronBarcode .
¿Cuáles son las mejores prácticas para el escaneo de códigos de barras en producción?
La implementación de un escáner de código de barras en producción requiere atención a algunas áreas más allá de la llamada de lectura básica. Las siguientes pautas abordan los puntos de error más comunes en las aplicaciones de código de barras .NET MAUI .
Elija la velocidad de lectura adecuada. ReadingSpeed.Balanced maneja correctamente la mayoría de las imágenes del mundo real. Reserve ReadingSpeed.ExtraSlow para escaneos de documentos impresos o imágenes que los usuarios no pueden volver a capturar. Evite ReadingSpeed.ExtraSlow para flujos de trabajo de gran volumen, ya que cada escaneo lleva considerablemente más tiempo.
Filtrar por tipos esperados. Si la aplicación solo procesa códigos QR, configure ExpectBarcodeTypes = BarcodeEncoding.QRCode. Restringir el espacio de búsqueda reduce el tiempo de procesamiento y elimina falsos positivos de otras simbologías presentes en los gráficos de fondo.
Use ExpectMultipleBarcodes solo cuando sea necesario. Configurarlo en true siempre hace que el lector realice pasadas adicionales. Para entradas de código de barras único, deje el valor predeterminado (false) para que el escaneo regrese tan pronto como se encuentre el primer código válido.
Maneje los resultados vacíos con elegancia. BarcodeReader.Read() devuelve una matriz vacía en lugar de lanzarla cuando no se detectan códigos de barras. Verifique .Any() antes de acceder a First() y presente un mensaje claro al usuario. Un mensaje de reintento con orientación ("asegúrese de que el código de barras esté bien iluminado y centrado") mejora la experiencia del usuario más que un error genérico.
Almacenar en caché el objeto de opciones. Crear una instancia BarcodeReaderOptions en cada escaneo agrega asignaciones. Construya las opciones una vez en el nivel de clase y reutilícelas en las llamadas.
Consulte la guía de solución de problemas de IronBarcode y el tutorial del lector de código de barras para obtener orientación adicional sobre cómo diagnosticar fallas de escaneo y optimizar el rendimiento.
¿Cuales son tus próximos pasos?
Para crear un escáner de código de barras .NET MAUI con IronBarcode es necesario instalar un único paquete NuGet , configurar los permisos de la plataforma y llamar a BarcodeReader.Read() con una ruta de archivo o una secuencia. La misma API está dirigida a Android, iOS y Windows sin ramas de código específicas de la plataforma.
Para ampliar aún más la aplicación, considere los siguientes recursos:
- Lista completa de funciones de IronBarcode : catálogo de todas las capacidades de escaneo y generación
- Referencia de API de lector de código de barras : documentación completa de métodos y propiedades
- Tutorial paso a paso del lector de códigos de barras MAUI : guía ampliada que cubre la integración de la cámara
- Guía del escáner de documentos MAUI : casos de uso del escaneo de documentos
Comience su prueba gratuita para obtener una clave de licencia de desarrollo o explore las opciones de licencia para la implementación de producción.
Preguntas Frecuentes
¿Qué es .NET MAUI y por qué es difícil integrar el escaneo de códigos de barras?
.NET MAUI es un framework de interfaz de usuario multiplataforma que se adapta a Android, iOS y Windows desde una única base de código. El escaneo de códigos de barras es complejo porque cada plataforma expone diferentes API de cámara y almacenamiento. IronBarcode proporciona una API .NET unificada que gestiona las diferencias entre plataformas.
¿Qué formatos de código de barras admite IronBarcode en las aplicaciones .NET MAUI ?
IronBarcode admite más de 30 simbologías de códigos de barras, como QR Code, Code 128, Code 39, EAN-13, EAN-8, UPC-A, UPC-E, Data Matrix, PDF417, Aztec e ITF. Utilice la enumeración BarcodeEncoding para filtrar por formatos específicos.
¿Puede IronBarcode leer códigos de barras de archivos PDF en una aplicación .NET MAUI ?
Sí. El método BarcodeReader.ReadPdf() escanea todas las páginas de un documento PDF y devuelve una colección de resultados BarcodeResult. Cada resultado incluye el valor del código de barras, el tipo y el número de página.
¿ IronBarcode funciona en todas las plataformas de destino .NET MAUI ?
IronBarcode es compatible con destinos Android, iOS y Windows en un proyecto .NET MAUI mediante un único paquete NuGet . No se requieren enlaces de SDK nativos específicos de la plataforma.
¿Cómo escanear varios códigos de barras a partir de una sola imagen?
Establezca ExpectMultipleBarcodes = true en BarcodeReaderOptions y pase el objeto de opciones a BarcodeReader.Read(). El lector realizará escaneos adicionales para detectar todos los códigos de barras en la imagen.
¿Cuál es la diferencia entre ReadingSpeed.Faster y ReadingSpeed.ExtraSlow?
ReadingSpeed.Faster prioriza el rendimiento y funciona bien con imágenes de alta calidad. ReadingSpeed.ExtraSlow aplica una corrección de imagen más agresiva y es ideal para entradas complejas, como códigos de barras con bajo contraste, rotados o parcialmente ocluidos.
¿Puede IronBarcode leer códigos de barras de un MemoryStream?
Sí. BarcodeReader.Read() acepta un parámetro System.IO.Stream, que incluye MemoryStream, FileStream y flujos de red. Esto permite escanear datos de imágenes en memoria sin escribirlos en el disco.
¿Cómo generar un código QR en una aplicación .NET MAUI con IronBarcode?
Utilice QRCodeWriter.CreateQrCode() con el valor objetivo, el tamaño y el nivel de corrección de errores. Guarde el resultado como archivo PNG con SaveAsPng() y muéstrelo en un control de imagen MAUI con ImageSource.FromFile().
¿Qué permisos se necesitan para escanear códigos de barras en una aplicación Android .NET MAUI ?
Agregue android.permission.READ_EXTERNAL_STORAGE y android.permission.CAMERA a AndroidManifest.xml. Para iOS, agregue las claves NSPhotoLibraryUsageDescription y NSCameraUsageDescription a Info.plist.


