Migration du SDK barKoder vers IronBarcode
Barkoder propose des packages .NET officiels — Plugin.Maui.Barkoder et Barkoder.Xamarin — mais les deux sont strictement des composants de balayage de caméra mobile. Si vous avez évalué barKoder pour son algorithme MatrixSight, son mode DeBlur, sa détection multi-barcode ou son support DPM et que vous avez ensuite découvert que vous avez besoin d'entrées de fichiers, de traitement PDF, de déploiement côté serveur ou de génération de code-barres, rien de tout cela n'est disponible chez barKoder sur .NET. Ce guide montre comment Code-barres IronBarcode couvre chacun de ces besoins, avec du code fonctionnel pour chaque scénario.
Pourquoi migrer du SDK barKoder
Les équipes passant d'une évaluation barKoder à Code-barres IronBarcode signalent systématiquement les mêmes déclencheurs :
Surface de la caméra mobile uniquement : L'empreinte .NET de Barkoder est Plugin.Maui.Barkoder (v1.6.8, mars 2026) et Barkoder.Xamarin (v1.3.0). Les deux intègrent les SDK iOS / Android natifs et exposent un contrôle de caméra BarkoderView. Il n'y a pas de bibliothèque Barkoder.NET à usage général, pas de cible ASP.NET Core, pas de cible console / travailleur / bureau, et pas de cible serveur Linux.
Architecture en lecture seule : Barkoder est un SDK de type analyse uniquement. Si votre application a besoin de générer des codes-barres (imprimer des étiquettes d'expédition, créer des codes QR pour les emballages, intégrer des codes dans des documents), Barkoder ne fournit rien. Les équipes qui découvrent un besoin de génération en cours de projet ont besoin d'une bibliothèque qui couvre les deux aspects du flux de travail.
Absence de traitement des PDF : dans les applications Enterprise .NET , les codes-barres apparaissent fréquemment dans les documents PDF — factures, manifestes d'expédition, dossiers médicaux, documents de conformité. Barkoder n'a aucune notion de ce processus. Il est conçu pour la saisie en direct du flux vidéo d'une caméra sur un appareil mobile et ne peut pas traiter un fichier PDF.
Aucun déploiement côté serveur : le modèle de traitement de Barkoder repose sur la numérisation mobile directement sur l'appareil. Il ne peut pas s'exécuter dans ASP.NET Core, Azure Functions, les conteneurs Docker ou AWS Lambda. Les équipes qui développent des API de codes-barres côté serveur, des pipelines de traitement de documents ou des fonctions cloud n'ont aucune possibilité de déployer Barkoder.
Pas d'Entrée Fichier / Flux : Même dans une application MAUI, BarkoderView ne consomme que des trames de caméra en direct. Il n'y a pas de surcharge de chemin de fichier, tableau d'octets, ou Stream, le traitement d'une image téléchargée ou d'une photo de galerie nécessite donc une bibliothèque différente.
La frontière fondamentale
La surface MAUI de Barkoder est liée à la caméra. Un développeur .NET utilisant Plugin.Maui.Barkoder écrit du code qui ressemble à ceci :
// dotnet add package Plugin.Maui.Barkoder
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.SetFlashEnabled(false);
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}
}Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.SetFlashEnabled(False)
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End Sub
End ClassIronBarcode fournit une API de fichiers / flux / PDF pour les mêmes données :
// dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("scanned-label.png", options);
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format} | Value: {result.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("scanned-label.png", options)
For Each result In results
Console.WriteLine($"Format: {result.Format} | Value: {result.Value}")
NextCode-barres IronBarcode vs SDK barKoder : Comparaison des fonctionnalités
| Fonction | SDK barKoder | Code-barres IronBarcode |
|---|---|---|
| API .NET / C# | UI de caméra MAUI / Xamarin uniquement | Surface .NET complète |
| Paquet NuGet | Plugin.Maui.Barkoder, Barkoder.Xamarin | BarCode |
| Récupération de codes-barres endommagés | MatrixSight / DeBlur | ReadingSpeed.ExtremeDetail + ML |
| Détection de plusieurs codes-barres | Oui | ExpectMultipleBarcodes = true |
| DataMatrix / DPM | Oui (lecture seule) | Oui — lire et générer |
| Code QR | Oui (lecture seule) | Oui — lire et générer |
| PDF417 | Oui | Oui |
| Aztèque | Oui | Oui |
| Code 128, Code 39, EAN | Oui | Oui — plus de 50 formats |
| Génération de codes-barres | None | Intégrale — tous formats |
| Traitement PDF | None | Natif |
| Entrée fichier / flux / tableau[] | Aucun — cadres de caméra uniquement | Oui |
| ASP.NET Core | None | Complet |
| Docker / Linux | None | Complet |
| Azure Functions | None | Complet |
| AWS Lambda | None | Complet |
| Hors ligne / Isolation physique | Sur l'appareil | Entièrement local |
| Asynchrone / Attendre | Basé sur des rappels | Complet |
| Injection de dépendance | None | DI .NET complet |
| iOS via MAUI | Plugin.Maui.Barkoder (interface utilisateur de la caméra) | Programmatique (fichier / flux) |
| Android via MAUI | Plugin.Maui.Barkoder (interface utilisateur de la caméra) | Programmatique (fichier / flux) |
| Tarification | Abonnement annuel | À partir de 749 $ perpétuel |
Début rapide : Migration SDK barKoder vers IronBarcode
Étape 1 : Remplacer le package NuGet
Installer IronBarcode:
Si votre projet utilise Plugin.Maui.Barkoder ou Barkoder.Xamarin uniquement pour des flux de travail non basés sur la caméra (ou si vous passez complètement au traitement de fichiers / PDF), supprimez-le :
dotnet remove package Plugin.Maui.Barkoder
Si l'application a toujours besoin d'une interface utilisateur de caméra en direct, conservez Plugin.Maui.Barkoder et ajoutez Code-barres IronBarcode à côté pour le travail de génération de fichiers / PDF.
Étape 2 : Mise à jour des espaces de noms
Supprimez l'espace de noms barKoder là où il n'est plus nécessaire, et ajoutez l'espace de noms Code-barres IronBarcode :
// Remove (if no longer needed)
// using Barkoder.Maui;
// Add
using IronBarCode;Imports IronBarCodeÉtape 3 : initialisation de la licence
Ajoutez l'initialisation de licence au démarrage de l'application — dans Program.cs pour ASP.NET Core, ou avant toute opération de code-barres dans les applications console ou de bureau :
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"Exemples de migration de code
Lecture des codes-barres à partir d'images
Le scénario de lecture de base est mappé des cadres de caméra en direct de barKoder à l'API de fichiers / flux / tableau[] d'IronBarcode.
Approche barKoder MAUI :
// dotnet add package Plugin.Maui.Barkoder
using Barkoder.Maui;
public partial class ScanPage : ContentPage, IBarkoderDelegate
{
public ScanPage()
{
InitializeComponent();
BarkoderView.StartScanning(this);
}
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
{
Console.WriteLine($"Barcode: {r.TextualData}");
Console.WriteLine($"Type: {r.BarcodeTypeName}");
}
}
}Imports Barkoder.Maui
Public Partial Class ScanPage
Inherits ContentPage
Implements IBarkoderDelegate
Public Sub New()
InitializeComponent()
BarkoderView.StartScanning(Me)
End Sub
Public Sub DidFinishScanning(result As BarcodeResult()) Implements IBarkoderDelegate.DidFinishScanning
For Each r In result
Console.WriteLine($"Barcode: {r.TextualData}")
Console.WriteLine($"Type: {r.BarcodeTypeName}")
Next
End Sub
End ClassApproche IronBarcode :
// dotnet add package BarCode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var results = BarcodeReader.Read("scan.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim results = BarcodeReader.Read("scan.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
NextLa fonction BarcodeReader.Read() d'IronBarcode détecte automatiquement le format de code-barres sans qu'il soit nécessaire de spécifier un format à l'avance. La même fonction s'applique aux images capturées par un appareil mobile et téléchargées sur un serveur, aux images chargées depuis un système de fichiers ou aux images reçues sous forme de tableaux d'octets à partir d'un flux. Pour une documentation complète sur la lecture, consultez le guide de lecture IronBarcode .
Récupération de codes-barres endommagés (équivalent du mode DeBlur)
Le mode DeBlur de Barkoder est l'une de ses fonctionnalités les plus citées. Code-barres IronBarcode fournit l'équivalent pour l'entrée de fichier via ReadingSpeed.ExtremeDetail.
Approche barKoder MAUI :
// Live camera scanning with DeBlur enabled via configuration
using Barkoder.Maui;
BarkoderView.SetEnabledBarcodeTypes(/* configure formats */);
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"Recovered: {r.TextualData}");
}Imports Barkoder.Maui
' Live camera scanning with DeBlur enabled via configuration
BarkoderView.SetEnabledBarcodeTypes() ' configure formats
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"Recovered: {r.TextualData}")
Next
End SubApproche IronBarcode :
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("worn-shipping-label.png", options);
if (results.Any())
{
Console.WriteLine($"Recovered barcode: {results.First().Value}");
}
else
{
Console.WriteLine("Could not decode — image quality too low");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("worn-shipping-label.png", options)
If results.Any() Then
Console.WriteLine($"Recovered barcode: {results.First().Value}")
Else
Console.WriteLine("Could not decode — image quality too low")
End IfReadingSpeed.ExtremeDetail exécute un pipeline d'analyse d'image basé sur ML en plusieurs passes, appliquant l'amélioration du contraste, l'accentuation, la correction de rotation et la récupération des dommages avant d'essayer de décoder. Pour les flux de travail par lots, utilisez ReadingSpeed.Balanced par défaut et revenez à ExtremeDetail uniquement pour les images que Balanced échoue à décoder.
Détection de plusieurs codes-barres
La numérisation en trame multi-code-barres de Barkoder est mappée à l'option ExpectMultipleBarcodes d'IronBarcode, qui fonctionne aussi bien sur les images que sur les PDF.
Approche barKoder MAUI :
// Live camera frame returns BarcodeResult[]; multi-scan configured on the view
using Barkoder.Maui;
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}");
}Imports Barkoder.Maui
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"{r.BarcodeTypeName}: {r.TextualData}")
Next
End SubApproche IronBarcode :
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
// Works identically on images and PDFs
var results = BarcodeReader.Read("shipping-manifest.pdf", options);
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
' Works identically on images and PDFs
Dim results = BarcodeReader.Read("shipping-manifest.pdf", options)
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber} | {barcode.Format} | {barcode.Value}")
NextIl s'agit d'un appel de méthode unique. Aucune extraction de page, aucune requête multiple, aucun traitement supplémentaire par code-barres. Le PDF est lu nativement.
Génération et lecture de DataMatrix
Barkoder lit DataMatrix mais ne peut pas la générer. Code-barres IronBarcode couvre les deux aspects du flux de travail, ce qui est une exigence courante dans les systèmes de suivi industriels.
Approche barKoder MAUI :
// Camera-only DataMatrix scanning; no generation available
using Barkoder.Maui;
BarkoderView.StartScanning(this);
public void DidFinishScanning(BarcodeResult[] result)
{
foreach (var r in result)
Console.WriteLine($"Part ID: {r.TextualData}");
}Imports Barkoder.Maui
' Camera-only DataMatrix scanning; no generation available
BarkoderView.StartScanning(Me)
Public Sub DidFinishScanning(result As BarcodeResult())
For Each r In result
Console.WriteLine($"Part ID: {r.TextualData}")
Next
End SubApproche IronBarcode :
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-SN-20240315-A42291", BarcodeEncoding.DataMatrix)
.SaveAsPng("part-label.png");
// Read DataMatrix from a scanned industrial part image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
var results = BarcodeReader.Read("etched-part-photo.png", options);
foreach (var result in results)
{
Console.WriteLine($"Part Serial: {result.Value}");
Console.WriteLine($"Barcode Type: {result.Format}");
}Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a DataMatrix barcode for a part label
BarcodeWriter.CreateBarcode("PART-SN-20240315-A42291", BarcodeEncoding.DataMatrix) _
.SaveAsPng("part-label.png")
' Read DataMatrix from a scanned industrial part image
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
Dim results = BarcodeReader.Read("etched-part-photo.png", options)
For Each result In results
Console.WriteLine($"Part Serial: {result.Value}")
Console.WriteLine($"Barcode Type: {result.Format}")
NextPour obtenir la liste complète des formats d'encodage pris en charge et des options de génération, consultez la documentation de génération de codes-barres IronBarcode .
Génération de codes QR avec personnalisation
Barkoder ne génère pas de codes-barres. Code-barres IronBarcode génère des codes QR avec logos intégrés, ce qui est une exigence courante pour les processus de marketing, d'emballage et d'identification des produits.
Approche barKoder MAUI :
Not available — Plugin.Maui.Barkoder is a reader-only SDK with no
generation API on any platform.
Approche IronBarcode :
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// QR code with brand logo embedded at centre
QRCodeWriter.CreateQrCode("https://parts.example.com/product/A42", 500)
.AddBrandLogo("company-logo.png")
.SaveAsPng("branded-qr.png");Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' QR code with brand logo embedded at centre
QRCodeWriter.CreateQrCode("https://parts.example.com/product/A42", 500) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("branded-qr.png")Point de terminaison de l'API de code-barres ASP.NET Core
Barkoder ne possède pas de modèle de déploiement côté serveur. L'équivalent d'un point de terminaison de téléchargement de numérisation mobile — recevant une image de n'importe quel client et renvoyant des données de code-barres — nécessite une bibliothèque .NET .
Approche barKoder :
Not available — Plugin.Maui.Barkoder runs only inside a MAUI app head
against a live camera. There is no ASP.NET Core integration and no
server-side execution model.
Approche IronBarcode :
// In Program.cs
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
app.MapPost("/api/scan", async (IFormFile file) =>
{
using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
};
var results = BarcodeReader.Read(imageBytes, options);
return Results.Ok(results.Select(r => new
{
Value = r.Value,
Format = r.Format.ToString(),
}));
});Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
app.MapPost("/api/scan", Async Function(file As IFormFile) As Task(Of IResult)
Using stream = file.OpenReadStream()
Dim imageBytes(CInt(stream.Length) - 1) As Byte
Await stream.ReadAsync(imageBytes, 0, imageBytes.Length)
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
Dim results = BarcodeReader.Read(imageBytes, options)
Return Results.Ok(results.Select(Function(r) New With {
.Value = r.Value,
.Format = r.Format.ToString()
}))
End Using
End Function)Référence de mappage de l'API SDK barKoder vers IronBarcode
Cette table mappe la surface MAUI / Xamarin de barKoder à l'appel équivalent Code-barres IronBarcode :
| API barKoder | Équivalent Code-barres IronBarcode |
|---|---|
| Licence définie via le portail barKoder / config | IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" |
Configuration DeBlur sur BarkoderView | Speed = ReadingSpeed.ExtremeDetail |
Configuration multi-scan sur BarkoderView | ExpectMultipleBarcodes = true |
SetEnabledBarcodeTypes(...) | BarcodeEncoding.<Format> (détecté automatiquement lors de la lecture) |
BarkoderView.StartScanning(IBarkoderDelegate) | BarcodeReader.Read("image.png") — synchrone |
BarcodeResult.TextualData | result.Value |
BarcodeResult.BarcodeTypeName | result.Format |
| Récupération des dommages de MatrixSight | ReadingSpeed.ExtremeDetail avec prétraitement ML |
| Entrée de cadre de caméra en direct | Chemin de fichier / Stream / entrée byte[] |
| Traitement sur l'appareil | Entièrement local — aucun appel réseau |
| Aucun support de génération | BarcodeWriter.CreateBarcode() / QRCodeWriter.CreateQrCode() |
| Prise en charge des fichiers PDF non disponible | BarcodeReader.Read("document.pdf") — natif |
| Aucun déploiement de serveur | Fonctionne avec ASP.NET Core, Docker, Azure Functions et Lambda. |
| Pas d'index de page (N/A) | result.PageNumber — disponible sur les lectures PDF |
Problèmes de migration courants et solutions
Problème 1 : Noms des paquets NuGet
barKoder SDK : Les packages .NET officiels sont Plugin.Maui.Barkoder et Barkoder.Xamarin. Aucun ne couvre les scénarios non-mobiles.
Solution: Installer IronBarcode:
Si Plugin.Maui.Barkoder n'est plus nécessaire (vous passez complètement au traitement de fichiers / PDF / serveur), éliminez-le :
dotnet remove package Plugin.Maui.Barkoder
dotnet add package BarCode
Problème 2 : Entrée de cadre caméra vs Entrée de fichier
SDK barKoder : Tous les entrées arrivent sous forme de cadre de caméra en continu — un flux vidéo traité en continu sur l'appareil. Il n'y a pas de mode d'entrée de chemin de fichier.
Solution : Code-barres IronBarcode accepte les fichiers, les flux, les tableaux d'octets et les objets System.Drawing.Image. Pour les images téléchargées depuis un client mobile, lisez directement le flux de requêtes :
using var stream = file.OpenReadStream();
var imageBytes = new byte[stream.Length];
await stream.ReadAsync(imageBytes);
var results = BarcodeReader.Read(imageBytes, options);Imports System.IO
Using stream = file.OpenReadStream()
Dim imageBytes = New Byte(stream.Length - 1) {}
Await stream.ReadAsync(imageBytes, 0, imageBytes.Length)
Dim results = BarcodeReader.Read(imageBytes, options)
End UsingProblème 3 : API basée sur les rappels vs résultat synchrone
barKoder SDK : BarkoderView.StartScanning(IBarkoderDelegate) utilise un modèle de délégué / rappel — DidFinishScanning(BarcodeResult[]) se déclenche de manière asynchrone lorsque des codes-barres sont détectés dans le flux de la caméra.
Solution : BarcodeReader.Read() d'IronBarcode est synchrone et retourne un IEnumerable<BarcodeResult> directement. Dans les contextes ASP.NET Core où l'asynchrone est requis, enveloppez dans Task.Run() :
var results = await Task.Run(() => BarcodeReader.Read(imageBytes, options));Dim results = Await Task.Run(Function() BarcodeReader.Read(imageBytes, options))Problème 4 : Configuration du mode de débruitage
barKoder SDK : DeBlur est activé sur la configuration BarkoderView avant le début de la numérisation et s'applique à toutes les numérisations suivantes.
Solution : Dans IronBarcode, l'équivalent est ReadingSpeed.ExtremeDetail défini par lecture via BarcodeReaderOptions. Créez l'objet d'options une seule fois et réutilisez-le :
var deepOptions = new BarcodeReaderOptions
{
Speed = ReadingSpeed.ExtremeDetail,
ExpectMultipleBarcodes = false,
};
// Reuse across multiple reads
var results = BarcodeReader.Read("image.png", deepOptions);Imports System
Dim deepOptions As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.ExtremeDetail,
.ExpectMultipleBarcodes = False
}
' Reuse across multiple reads
Dim results = BarcodeReader.Read("image.png", deepOptions)Problème 5 : Capacité de génération manquante
SDK barKoder : Barkoder est en lecture seule. Il n'existe pas d'API pour générer des codes-barres ou des codes QR.
Solution : Code-barres IronBarcode prend en charge à la fois la lecture et la génération. Utilisez BarcodeWriter pour les formats standards et QRCodeWriter pour les QR codes :
// Standard barcode generation
BarcodeWriter.CreateBarcode("SHIP-20240315-00428", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// QR code generation
QRCodeWriter.CreateQrCode("https://example.com/product/A42", 500)
.SaveAsPng("product-qr.png");
// Get as bytes for embedding in API response or PDF
byte[] barcodeBytes = BarcodeWriter.CreateBarcode("INV-100291", BarcodeEncoding.Code128)
.ToPngBinaryData();Imports System
' Standard barcode generation
BarcodeWriter.CreateBarcode("SHIP-20240315-00428", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
' QR code generation
QRCodeWriter.CreateQrCode("https://example.com/product/A42", 500) _
.SaveAsPng("product-qr.png")
' Get as bytes for embedding in API response or PDF
Dim barcodeBytes As Byte() = BarcodeWriter.CreateBarcode("INV-100291", BarcodeEncoding.Code128) _
.ToPngBinaryData()Liste de contrôle de migration SDK barKoder
Tâches préalables à la migration
Auditez votre codebase pour les références barKoder :
grep -r "Barkoder\|BarkoderView\|IBarkoderDelegate\|BarcodeResult" --include="*.cs" .
grep -r "Plugin.Maui.Barkoder\|Barkoder.Xamarin" --include="*.csproj" .
grep -r "Barkoder" --include="*.xaml" .
Documenter les scénarios de codes-barres actuellement mis en œuvre ou prévus :
- Quels formats de codes-barres doivent être lus (Code128, DataMatrix, QR, PDF417, etc.)
- Si la récupération de code-barres endommagé est requise (
ReadingSpeed.ExtremeDetail) - Si la détection multi-code-barres est requise (
ExpectMultipleBarcodes = true) - Si la génération de code-barres est requise (
BarcodeWriter,QRCodeWriter) - Si le traitement des PDF est requis (
BarcodeReader.Read("doc.pdf")) - Cibles de déploiement (ASP.NET Core, Azure Functions, Docker, Lambda, application de bureau, MAUI)
Tâches de mise à jour du code
- Supprimez
Plugin.Maui.BarkoderouBarkoder.Xamarinde.csprojlà où ce n'est plus nécessaire - Installez le package NuGet
BarCode - Supprimez
using Barkoder.Maui;(ou l'équivalent Xamarin) là où ce n'est plus nécessaire - Ajoutez
using IronBarCode;à tous les fichiers de traitement de code-barres - Ajoutez
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";au démarrage de l'application - Remplacez les rappels
BarkoderView.StartScanning/DidFinishScanningparBarcodeReader.Read(filePath, options) - Mettez en correspondance
BarcodeResult.TextualDataavecresult.Value - Mettez en correspondance
BarcodeResult.BarcodeTypeNameavecresult.Format - Mettez en correspondance la configuration DeBlur avec
Speed = ReadingSpeed.ExtremeDetaildansBarcodeReaderOptions - Mettez en correspondance la configuration multi-scan avec
ExpectMultipleBarcodes = truedansBarcodeReaderOptions - Ajoutez des appels
BarcodeWriter.CreateBarcode()pour tout besoin de génération - Ajoutez des appels
QRCodeWriter.CreateQrCode()pour les besoins de génération de QR codes - Remplacez tout code de prétraitement PDF par
BarcodeReader.Read("document.pdf") - Enveloppez les appels
BarcodeReader.Read()synchrones dansTask.Run()pour les points de terminaison asynchrones ASP.NET Core
Test de post-migration
Après avoir effectué les mises à jour du code, vérifiez les points suivants :
- Confirmez que
BarcodeReader.Read()retourne des résultats pour tous les formats d'image utilisés (PNG, JPEG, TIFF, BMP) - Vérifiez que
ReadingSpeed.ExtremeDetailrécupère les codes-barres à partir des échantillons de la plus basse qualité de votre jeu de test - Confirmez que
ExpectMultipleBarcodes = trueretourne le bon nombre de codes-barres à partir de documents multi-code-barres - Tester la lecture des fichiers PDF avec toutes les versions PDF utilisées dans les flux de production documentaire.
- Vérifiez que la sortie de
BarcodeWriter.CreateBarcode()est scannable par vos lecteurs cibles - Vérifiez que la sortie de
QRCodeWriter.CreateQrCode()est scannable par les lecteurs de QR codes mobiles - Tester le point de terminaison ASP.NET Core (le cas échéant) avec des téléchargements de fichiers depuis des clients mobiles
- Vérifier le bon fonctionnement dans les cibles de déploiement Docker, Azure ou Lambda
- Exécuter des tests de bout en bout couvrant l'intégralité du cycle lecture-traitement-génération, le cas échéant.
Principaux avantages de la migration vers IronBarcode
Une Plateforme Qui Couvre le .NET Non-Caméra : Code-barres IronBarcode s'installe depuis NuGet et fonctionne dans tout projet .NET — ASP.NET Core, Azure Functions, Lambda, Docker, console, travailleur, WPF, WinForms, Avalonia, Blazor, et MAUI de même. Le Plugin.Maui.Barkoder de Barkoder couvre uniquement l'interface utilisateur de la caméra dans un mode tête d'application mobile MAUI ; Code-barres IronBarcode couvre tout le reste.
Lecture Tolérante Aux Dommages Sans Caméra : Les capacités qui ont rendu Barkoder convaincant — DeBlur, MatrixSight, récupération des dommages — sont présentes dans Code-barres IronBarcode à travers ReadingSpeed.ExtremeDetail et le prétraitement d'image basé sur ML. Code-barres IronBarcode offre les mêmes améliorations de précision que Barkoder obtient sur les flux vidéo en direct, qu'il s'agisse de fichiers, de documents numérisés ou d'images téléchargées.
Flux de travail complet de lecture et de génération : Barkoder est en lecture seule. Code-barres IronBarcode permet à la fois la lecture et la génération de codes-barres dans plus de 50 formats, le tout dans un seul et même package. Les équipes qui ont besoin de générer des étiquettes d'expédition, de créer des codes QR pour les emballages ou d'intégrer des codes-barres dans des documents n'ont pas besoin d'une deuxième bibliothèque.
Prise en charge native des PDF : La lecture des codes-barres à partir de documents PDF (factures, manifestes, dossiers médicaux, documents de conformité) est une fonctionnalité de premier ordre Code-barres IronBarcode . Aucune extraction d'image intermédiaire, aucun appel API par page et aucune dépendance supplémentaire. Un PDF multi-pages est traité en un seul appel BarcodeReader.Read().
Déploiement complet côté serveur : Code-barres IronBarcode fonctionne sous ASP.NET Core, Azure Functions, AWS Lambda, dans les conteneurs Docker et dans tout autre environnement d'hébergement .NET . Il traite les codes-barres localement, sans appel réseau, sans gestion de clés API et sans latence liée à un service distant. Le traitement d'un seul code-barres ou d'un million coûte le même prix : il n'y a pas de frais par requête.
Tarification perpétuelle prévisible : Code-barres IronBarcode est disponible sous forme de licence perpétuelle unique à partir de 749 $ pour un seul développeur, sans frais par requête, sans limite de volume et sans renouvellement d'abonnement. Pour les équipes qui développent des applications de production traitant des codes-barres à grande échelle, le modèle de coûts est simple et prévisible.

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.