Aspose.BarCode for .NET vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#
codeur à barres vs Code-barres IronBarcode : génération multi-package vs génération et lecture à package unique
Pour générer un seul PNG avec Barcoder, vous installez deux paquets, importez trois espaces de noms, encodez avec une classe spécifique au format, créez un moteur de rendu avec un objet d'options, ouvrez un flux, effectuez le rendu dans celui-ci et supprimez le flux. Voilà tout le chemin du bonheur — et cela ne concerne que l'écriture. codeur à barres ne possède aucune API de lecture. La licence MIT et le caractère open source de la bibliothèque la rendent attrayante au premier abord, notamment pour les équipes qui cherchent à éviter les dépendances commerciales. Mais cette architecture fragmentée — deux packages NuGet minimum, une classe d'encodeur différente pour chaque format de code-barres et un pipeline de rendu qui sépare complètement l'encodage et la sortie — crée de réelles frictions dès que les exigences dépassent le scénario de génération à format unique le plus simple.
Comprendre le code-barres
Barcoder est une bibliothèque open source de génération de codes-barres .NET disponible sur NuGet sous licence MIT. Il encode les données dans des formats de code-barres tels que Code128, QR, DataMatrix, EAN-13, PDF417et autres. La philosophie de conception sépare entièrement l'encodage du rendu – la bibliothèque principale produit un objet IBarcode (une structure de données), et un paquet de rendu séparé convertit cet objet en une image.
Les conséquences pratiques de cette conception sont visibles dès la première installation. Deux packages NuGet sont nécessaires avant que toute sortie PNG soit possible : Barcoder pour l'encodage et Barcoder.Renderer.Image pour le rendu. Si une sortie SVG est également nécessaire, un troisième package — Barcoder.Renderer.Svg — doit être ajouté. Ces packages sont versionnés indépendamment, ce qui signifie que les mises à jour de l'un ne s'alignent pas automatiquement sur les autres, et leur synchronisation au sein d'un projet devient une tâche de maintenance récurrente.
Caractéristiques architecturales clés du lecteur de codes-barres :
- Deux packages NuGet requis pour la sortie PNG :
Barcoderpour l'encodage etBarcoder.Renderer.Imagepour le rendu en formats d'image - Classes d'encodeur spécifiques au format : Chaque type de code-barres a son propre encodeur dans son propre espace de noms —
Code128Encoder,QrEncoder,DataMatrixEncoder, et ainsi de suite IBarcoden'a pas de méthodes de sortie : Le résultat de l'encodage est un objet de données simple. Un moteur de rendu doit être construit séparément, un flux ouvert, rendu dans lequel il est effectué, puis fermé.- Le rendu d'images ne prend plus en charge .NET Framework : les équipes utilisant .NET Frameworkne peuvent plus utiliser le package de rendu d'images.
- Aucune capacité de lecture : codeur à barres ne peut pas décoder les codes-barres à partir d'images, de fichiers ou de toute autre source.
- Versionnage indépendant des paquets :
BarcoderetBarcoder.Renderer.Imagepeuvent diverger lors des mises à jour de dépendances
Flux de travail de génération multi-packages
Le récit de l'installation illustre immédiatement la différence d'envergure. Avec Barcoder, la sortie PNG de base nécessite deux packages distincts :
dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
dotnet add package Barcoder
dotnet add package Barcoder.Renderer.Image
Le flux de travail complet pour générer un code-barres Code128 et l'enregistrer au format PNG nécessite trois importations d'espace de noms, un appel d'encodeur spécifique au format, une construction de rendu avec un objet d'options, un flux de fichiers et un appel de rendu :
using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;
IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 2,
BarHeightFor1DBarcode = 50
});
using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);
using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;
IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 2,
BarHeightFor1DBarcode = 50
});
using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);
Imports Barcoder
Imports Barcoder.Code128
Imports Barcoder.Renderers
Imports System.IO
Dim barcode As IBarcode = Code128Encoder.Encode("PRODUCT-12345", False)
Dim renderer = New ImageRenderer(New ImageRendererOptions With {
.ImageFormat = ImageFormat.Png,
.PixelSize = 2,
.BarHeightFor1DBarcode = 50
})
Using stream As FileStream = File.OpenWrite("barcode.png")
renderer.Render(barcode, stream)
End Using
Changer le format des codes-barres ne se résume pas à modifier un paramètre ; cela nécessite d'importer un espace de noms différent et d'appeler une classe différente. Code128Encoder.Encode prend un booléen pour includeChecksum, QrEncoder.Encode prend un niveau de correction d'erreur et deux booléens supplémentaires, et DataMatrixEncoder.Encode ne prend que la chaîne. Il n'existe pas d'interface unifiée pour créer un code-barres dans un format spécifique.
Comprendre IronBarcode
IronBarcode est une bibliothèque commerciale .NET de codes-barres qui permet la génération et la lecture via un seul package NuGet . Il utilise un modèle d'API statique construit autour de deux classes principales — BarcodeWriter pour la génération et BarcodeReader pour la lecture — et route toute la sélection de formats à travers l'énumération BarcodeEncoding plutôt que par des classes ou espaces de noms spécifiques au format.
La bibliothèque est conçue pour minimiser la distance entre l'écriture de la première ligne de code-barres et l'obtention d'un résultat fonctionnel. La génération, la lecture, la prise en charge des PDF, les codes QR avec logos intégrés et tous les types de sortie sont inclus dans un seul package avec une seule version à suivre.
Caractéristiques principales d' IronBarcode:
- Un seul package NuGet :
IronBarcodecouvre toutes les fonctionnalités — génération, lecture, PDF et tous les formats de sortie - Sélection de format unifiée : Tous les types de code-barres sont adressés par les valeurs d'énumération @@--CODE-978@@; no format-specific imports or classes
- Méthodes de sortie sur l'objet de résultat :
GeneratedBarcodeexposeSaveAsPng,ToPngBinaryData,ToStream,SaveAsSvg, etResizeTodirectement - Capacité de lecture native :
BarcodeReader.Read()décode à partir de fichiers image, tableaux de bytes, flux et PDFs sans bibliothèque secondaire - Prise en charge de MAUI, Docker, AWS Lambda et Azure : Cibles de déploiement documentées au-delà des scénarios standard de bureau et de serveur
- Prise en charge complète du .NET Frameworket des versions modernes de .NET : du .NET Framework4.6.2 au .NET 9
Comparaison des fonctionnalités
| Fonction | codeur à barres | Code-barres IronBarcode |
|---|---|---|
| Packages NuGet requis | 2 minimum | 1 |
| génération de codes-barres | Oui | Oui |
| Lecture de codes-barres | Non | Oui |
| Licence | MIT (logiciel libre) | Commercial |
| Prise en charge du .NET Framework | Déposé dans le moteur de rendu d'images | .NET Framework4.6.2+ |
| Lecture de PDF | Non | Oui |
| QR avec logo | Non | Oui |
Comparaison détaillée des fonctionnalités
| Fonction | codeur à barres | Code-barres IronBarcode |
|---|---|---|
| Génération | ||
| Génération Code128 | Oui | Oui |
| génération de code QR | Oui | Oui |
| Génération de DataMatrix | Oui | Oui |
| EAN-13, PDF417 | Oui | Oui |
| QR avec logo intégré | Non | Oui — .AddBrandLogo(path) |
| Format sélectionné via énumération | Non — une classe d'encodeur distincte par format | Oui — BarcodeEncoding enum |
| Sortir | ||
| Sortie PNG | Oui (via Barcoder.Renderer.Image) | Oui — .SaveAsPng() |
| Sortie SVG | Oui (via Barcoder.Renderer.Svg) | Oui — .SaveAsSvg() |
| Sortie de données binaires | Oui (via MemoryStream) | Oui — .ToPngBinaryData() |
| Flux de sortie | Oui (gestion manuelle du flux) | Oui — .ToStream() |
| API de redimensionnement direct | Non — PixelSize facteur d'échelle seulement |
Oui — .ResizeTo(width, height) |
| En lisant | ||
| Lire à partir d'un fichier image | Non | Oui |
| Lire le PDF | Non | Oui |
| Lecture à partir du flux | Non | Oui |
| Détection de plusieurs codes-barres | Non | Oui — ExpectMultipleBarcodes |
| Contrôle de la vitesse de lecture | Non | Oui — ReadingSpeed enum |
| Plateforme | ||
| .NET Core / .NET 5+ | Oui | Oui |
| .NET Framework | Déposé dans le moteur de rendu d'images | .NET Framework4.6.2+ |
| .NET 9 | Non documenté | Oui |
| MAUI (iOS, Android, Windows, macOS) | Non | Oui |
| Docker / Azure / AWS Lambda | Non documenté | Oui |
| Conditionnement | ||
| Risque lié au versionnage indépendant des paquets | Oui | Non — colis unique |
| Espace de noms par format | Oui | Non — unique using IronBarCode |
| Licence | ||
| Modèle de licence | MIT (logiciel libre) | Commercial |
| Tarifs | Gratuit | Lite 749 $, Plus 1 499 $, Professional 2 999 $, Illimité 5 999 $ |
API de sélection et de génération de format
Le choix de la structure de sélection du format des codes-barres a des répercussions sur chaque partie du code source qui génère des codes-barres.
Approche par code-barres
Le système de codage à barres achemine la sélection du format via des classes d'encodeurs distinctes dans des espaces de noms séparés. Changer de formats signifie ajouter une nouvelle directive using et utiliser une classe différente avec une signature de méthode différente :
// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);
// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);
// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");
// Code128
using Barcoder.Code128;
IBarcode barcode = Code128Encoder.Encode("data", false);
// QR Code
using Barcoder.Qr;
IBarcode barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false);
// DataMatrix
using Barcoder.DataMatrix;
IBarcode barcode = DataMatrixEncoder.Encode("data");
Imports Barcoder.Code128
Imports Barcoder.Qr
Imports Barcoder.DataMatrix
' Code128
Dim barcode As IBarcode = Code128Encoder.Encode("data", False)
' QR Code
barcode = QrEncoder.Encode("data", ErrorCorrectionLevel.M, False, False)
' DataMatrix
barcode = DataMatrixEncoder.Encode("data")
Chaque encodeur possède son propre contrat de paramètres. Ajouter un nouveau format à un projet existant ne se résume pas à un simple changement d'un mot : il s'agit d'importer un nouvel espace de noms, d'apprendre une nouvelle classe et de comprendre de nouveaux paramètres.
Approche IronBarcode
IronBarcode route toute la sélection de formats à travers l'énum BarcodeEncoding dans la classe unifiée BarcodeWriter. L'ajout d'un nouveau format consiste à modifier un seul mot la valeur de l'énumération :
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");
// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");
// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");
// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
.AddBrandLogo("logo.png")
.SaveAsPng("qr-branded.png");
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png");
// DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png");
// QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png");
// QR with logo
QRCodeWriter.CreateQrCode("data", 500)
.AddBrandLogo("logo.png")
.SaveAsPng("qr-branded.png");
Imports IronBarCode
' Code128
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128).SaveAsPng("code128.png")
' DataMatrix
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix).SaveAsPng("dm.png")
' QR — dedicated method
QRCodeWriter.CreateQrCode("data", 500).SaveAsPng("qr.png")
' QR with logo
QRCodeWriter.CreateQrCode("data", 500) _
.AddBrandLogo("logo.png") _
.SaveAsPng("qr-branded.png")
Pour une utilisation en production, ajoutez la clé de licence au démarrage de l'application :
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
La documentation relative à la génération de codes-barres IronBarcode couvre l'ensemble des options de génération, y compris le style, les marges et la personnalisation des couleurs.
Options de rendu et de sortie
L'obtention des données issues des codes-barres sous différentes formes (fichier, données binaires, flux) est une exigence commune que chaque bibliothèque gère de manière très différente.
Approche par code-barres
La séparation entre l'encodage et le rendu chez codeur à barres est un principe architectural, mais elle engendre une surcharge à chaque changement de format de sortie. Sauvegarder dans un fichier nécessite l'ouverture d'un FileStream. Obtenir des données binaires nécessite l'ouverture d'un MemoryStream et l'appel de ToArray(). Chaque scénario de sortie nécessite la construction d'un moteur de rendu avec un objet d'options :
// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 3,
BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);
// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();
// File output
var renderer = new ImageRenderer(new ImageRendererOptions
{
ImageFormat = ImageFormat.Png,
PixelSize = 3,
BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode-large.png");
renderer.Render(barcode, stream);
// Binary data via MemoryStream
using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();
Imports System.IO
' File output
Dim renderer = New ImageRenderer(New ImageRendererOptions With {
.ImageFormat = ImageFormat.Png,
.PixelSize = 3,
.BarHeightFor1DBarcode = 80
})
Using stream = File.OpenWrite("barcode-large.png")
renderer.Render(barcode, stream)
End Using
' Binary data via MemoryStream
Using ms = New MemoryStream()
renderer.Render(barcode, ms)
Dim pngBytes As Byte() = ms.ToArray()
End Using
Le contrôle de la taille est indirect : PixelSize est un multiplicateur d'échelle sur la taille du module de code-barres, pas une spécification directe de largeur et de hauteur.
Approche IronBarcode
IronBarcode retourne un objet GeneratedBarcode à partir duquel toute forme de sortie peut être atteinte par des appels de méthode enchaînés. Aucune construction de moteur de rendu, aucune gestion de flux :
using IronBarCode;
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
.ResizeTo(400, 100);
// File
barcode.SaveAsPng("barcode.png");
// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();
// Stream
System.IO.Stream stream = barcode.ToStream();
using IronBarCode;
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
.ResizeTo(400, 100);
// File
barcode.SaveAsPng("barcode.png");
// Bytes
byte[] pngBytes = barcode.ToPngBinaryData();
// Stream
System.IO.Stream stream = barcode.ToStream();
Imports IronBarCode
Dim barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128) _
.ResizeTo(400, 100)
' File
barcode.SaveAsPng("barcode.png")
' Bytes
Dim pngBytes As Byte() = barcode.ToPngBinaryData()
' Stream
Dim stream As System.IO.Stream = barcode.ToStream()
.ResizeTo(width, height) prend des dimensions de pixels explicites et s'enchaîne avec toute méthode de sortie sur le même objet.
Lecture des codes-barres
L'absence d'une API de lecture dans codeur à barres est une contrainte architecturale stricte, et non un choix de configuration.
Approche par code-barres
Le codeur à barres ne possède aucune capacité de lecture ou de décodage. Il n'existe pas d'API, aucune API prévue et aucune solution de contournement au sein de la bibliothèque. Si une application a besoin de lire des codes-barres, une deuxième bibliothèque — une dépendance NuGet distincte avec sa propre interface API et sa propre version à suivre — doit être ajoutée en plus de Barcoder. Cela signifie au minimum deux dépendances liées à la lecture : codeur à barres pour la génération et un autre élément pour la lecture.
Approche IronBarcode
IronBarcode prend en charge à la fois la génération et la lecture avec le même package et des modèles d'API cohérents. La méthode BarcodeReader.Read() accepte nativement les fichiers image, les tableaux de bytes, les flux et les PDFs :
using IronBarCode;
// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine(result.Value);
Console.WriteLine(result.Format);
}
// Lire le PDF natively
var pdfResults = BarcodeReader.Read("document.pdf");
// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
using IronBarCode;
// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine(result.Value);
Console.WriteLine(result.Format);
}
// Lire le PDF natively
var pdfResults = BarcodeReader.Read("document.pdf");
// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-label.png", options);
Imports IronBarCode
' Read from image file
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine(result.Value)
Console.WriteLine(result.Format)
Next
' Lire le PDF natively
Dim pdfResults = BarcodeReader.Read("document.pdf")
' Read multiple barcodes from one image
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True
}
Dim multiResults = BarcodeReader.Read("warehouse-label.png", options)
La lecture des fichiers PDF est native — aucune extraction d'image intermédiaire, aucune bibliothèque de conversion, aucun package supplémentaire. La documentation relative à la lecture des codes-barres IronBarcode couvre les PDF multipages, la lecture de zones d'intérêt et l'optimisation des performances.
Référence de mappage d'API
| codeur à barres | Code-barres IronBarcode |
|---|---|
Code128Encoder.Encode("data", false) |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) |
QrEncoder.Encode("data", ErrorCorrectionLevel.M, false, false) |
QRCodeWriter.CreateQrCode("data", 500) |
DataMatrixEncoder.Encode("data") |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix) |
new ImageRenderer(new ImageRendererOptions { ... }) |
Pas nécessaire — la sortie est enchaînée depuis GeneratedBarcode |
renderer.Render(barcode, stream) |
.SaveAsPng(path) / .ToPngBinaryData() / .ToStream() |
IBarcode (structure de données, pas de méthodes de sortie) |
GeneratedBarcode (a SaveAsPng, ToPngBinaryData, ToStream, ResizeTo, etc.) |
Barcoder + Barcoder.Renderer.Image (2 packages) |
IronBarcode (1 package) |
using Barcoder.Code128 |
using IronBarCode (espace de noms unique, tous formats) |
using Barcoder.Qr |
using IronBarCode |
using Barcoder.DataMatrix |
using IronBarCode |
| API de lecture indisponible | BarcodeReader.Read(path / bytes / stream / pdf) |
| Aucun moteur de rendu d'images .NET Framework | .NET Framework4.6.2+ |
PixelSize + BarHeightFor1DBarcode options |
.ResizeTo(width, height) |
Quand les équipes envisagent de passer de codeur à barres à IronBarcode
La lecture est ajoutée aux exigences
De nombreux projets débutent par de simples chaînes de génération : impression d'étiquettes, génération de codes pour les documents, intégration de codes-barres dans les rapports. codeur à barres prend en charge ces projets dès le départ. Lorsque la même application doit ultérieurement vérifier les codes-barres entrants, traiter des documents numérisés ou décoder les codes-barres des PDF téléchargés, codeur à barres n'offre aucune solution. L'équipe doit évaluer une deuxième bibliothèque, apprendre son API, gérer sa version NuGet séparément et gérer l'interface d'intégration entre les deux bibliothèques. Les équipes qui atteignent ce stade optent souvent pour une bibliothèque qui gère les deux aspects plutôt que de maintenir deux dépendances de codes-barres distinctes.
Rupture de compatibilité avec le .NET Framework
Barcoder.Renderer.Image a abandonné le support .NET Framework. Les équipes qui gèrent des services ou des applications de bureau sur .NET Framework4.x et qui mettent à jour le package de rendu d'images lors de la maintenance de routine des dépendances rencontrent un échec de compilation. Il ne s'agit pas d'une erreur de configuration, mais d'une décision de la bibliothèque concernant la prise en charge de la plateforme. Code-barres IronBarcode prend en charge .NET Framework4.6.2 à .NET 9sans packaging spécial ni dépendances conditionnelles pour différentes cibles.
La dérive des versions de packages crée des problèmes de coordination
Avec Barcoder et Barcoder.Renderer.Image versionnés indépendamment, mettre à jour l'un sans l'autre lors d'un rafraîchissement de dépendance peut introduire des incompatibilités subtiles. Dans un dépôt comportant plusieurs projets — chacun utilisant une version différente de chaque package de rendu — garantir un comportement cohérent entre les projets devient un problème de coordination qui s'accroît avec la taille de l'équipe. Les équipes qui utilisent désormais Code-barres IronBarcode indiquent que la gestion d'un seul package et d'une seule version élimine complètement ce type de problème.
La couverture des formats s'étend au fil du temps
Un projet pourrait commencer par des étiquettes Code128, puis ajouter ultérieurement des codes QR pour les liens destinés aux clients, puis DataMatrix pour répondre aux exigences de conformité. Avec Barcoder, chaque ajout de format implique une nouvelle importation d'espace de noms, une classe d'encodeur différente avec des paramètres de méthode différents, et potentiellement un nouveau package NuGet . Avec IronBarcode, l'ajout d'un format est un changement de valeur enum BarcodeEncoding dans un appel existant. Les équipes dont la feuille de route prévoit l'extension de la couverture des formats de codes-barres trouvent le modèle basé sur les énumérations beaucoup plus facile à maintenir.
Exigences de déploiement MAUI et multiplateformes
Barcoder ne documente pas la prise en charge des déploiements MAUI, Docker, AWS Lambda ou Azure. Les équipes qui développent des applications MAUI multiplateformes ou qui déploient le traitement des codes-barres sur une infrastructure sans serveur constatent que la documentation et les tests de codeur à barres ne couvrent pas ces cibles. Code-barres IronBarcode documente et teste activement le déploiement sur les cibles iOS, Android, Windows, macOS MAUI, les conteneurs Docker et les principales plateformes cloud.
Considérations courantes en matière de migration
Le IBarcode au GeneratedBarcode Changement de Type
Le code codeur à barres qui stocke une variable IBarcode et la passe à un renderer plus tard doit être refactorisé. Dans IronBarcode, GeneratedBarcode porte ses propres méthodes de sortie — il n'y a pas de phase de rendu séparée. Toute signature de méthode qui accepte actuellement IBarcode devrait changer pour accepter GeneratedBarcode, et l'appel de rendu à l'intérieur de cette méthode devrait devenir un appel direct comme .SaveAsPng() ou .ToPngBinaryData(). Le système de types fera émerger chaque emplacement qui nécessite une mise à jour lors de la compilation — IBarcode ne résoudra pas après que les packages codeur à barres ont été supprimés.
PixelSize N'a Pas d'Équivalent Direct
L'PixelSize de codeur à barres est un multiplicateur d'échelle sur la taille naturelle du module du code-barres, pas une dimension de pixel explicite. La largeur de sortie dépend du contenu du code-barres, de son format et du multiplicateur, combinés. Code-barres IronBarcode utilise .ResizeTo(width, height) avec des dimensions de pixels explicites. Pendant la migration, mesurez les dimensions de sortie réelles que le code codeur à barres existant produit et utilisez ces valeurs dans l'appel .ResizeTo() :
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.ResizeTo(300, 80)
.SaveAsPng("barcode.png");
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.ResizeTo(300, 80)
.SaveAsPng("barcode.png");
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
.ResizeTo(300, 80) _
.SaveAsPng("barcode.png")
Consolidation des espaces de noms
Les projets codeur à barres accumulent des instructions using Barcoder.* — une par format utilisé. Pendant la migration, toutes ces instructions se réduisent à une seule using IronBarCode;. Une recherche de using Barcoder à travers la solution identifiera chaque fichier nécessitant une mise à jour. Le nombre de fichiers concernés est généralement plus élevé que prévu par les équipes, car chaque fichier utilisant un format de code-barres importe son propre espace de noms spécifique à ce format.
Modifications du chemin de sortie SVG
Les projets utilisant Barcoder.Renderer.Svg et la classe SvgRenderer remplacent le pipeline renderer par un appel de méthode direct sur GeneratedBarcode :
// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);
// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.SaveAsSvg("barcode.svg");
// Before
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);
// After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
.SaveAsSvg("barcode.svg");
Imports System.IO
' Before
Dim svgRenderer As New SvgRenderer()
Using stream As FileStream = File.OpenWrite("barcode.svg")
svgRenderer.Render(barcode, stream)
End Using
' After
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128) _
.SaveAsSvg("barcode.svg")
Le package Barcoder.Renderer.Svg peut être retiré une fois que tous les sites de rendu SVG ont été migrés.
Fonctionnalités supplémentaires IronBarcode
Outre les points de comparaison évoqués ci-dessus, Code-barres IronBarcode inclut des fonctionnalités pour lesquelles codeur à barres n'a pas d'équivalent :
- QR codes avec logos intégrés :
.AddBrandLogo(path)intègre une image de marque au centre du QR code sans en briser la scannabilité - Lecture native des codes-barres PDF :
BarcodeReader.Read("document.pdf")traite les PDFs directement sans extraire d'abord les images - Détection multi-barcode : L'option
ExpectMultipleBarcodeslit tous les codes-barres d'une seule image ou page PDF en un seul appel - Contrôle de la vitesse de lecture :
ReadingSpeed.Faster,Balanced,Detailed, etExtremeDetailajustent le compromis précision-vitesse pour différents cas d'utilisation - Déploiement multiplateforme de MAUI : les cibles MAUI pour iOS, Android, Windows et macOS sont activement testées et documentées.
- Déploiement Docker et cloud : Chemins de déploiement documentés pour les conteneurs Docker, AWS Lambda et Azure Functions
- Personnalisation et style du barcode : Couleur, marge, texte d'annotation, et personnalisation de l'arrière-plan sur
GeneratedBarcode
Compatibilité .NET et préparation à l'avenir
IronBarcode prend en charge .NET Framework4.6.2, .NET Core 2.x, .NET 5, .NET 6, .NET 7, .NET 8 et .NET 9, avec des mises à jour régulières. La version 3 de codeur à barres a délaissé le support .NET Frameworkdans le package de rendu d'image. Pour les équipes qui ont besoin d'une longue période de support à travers .NET Frameworket les cibles modernes .NET, la matrice de compatibilité à package unique d'IronBarcode élimine la nécessité de gérer des dépendances conditionnelles par cible.
Conclusion
Barcoder et Code-barres IronBarcode reflètent des portées fondamentalement différentes. codeur à barres est une bibliothèque de génération seulement avec une séparation de principe entre l'encodage et le rendu — la structure de données IBarcode et le pipeline de rendu sont des couches distinctes par conception. Code-barres IronBarcode est une bibliothèque complète de codes-barres où la génération et la lecture partagent un seul package, un seul espace de noms et une API statique cohérente. La différence architecturale devient la plus visible lorsque les exigences augmentent : la conception multi-packages, multi-espaces de noms et sans lecture de codeur à barres fait de chaque ajout une tâche structurelle, tandis Code-barres IronBarcode traite les nouveaux ajouts de format ou de fonctionnalité comme des modifications de configuration.
Barcoder est le choix idéal lorsqu'un projet a uniquement besoin de génération de codes-barres, cible exclusivement .NET Core , utilise un petit nombre de formats de codes-barres et que la licence MIT est une exigence absolue. La bibliothèque fonctionne comme prévu dans ces limites, et pour les projets à périmètre restreint sans exigences de lecture ni cibles .NET Framework, l'option open source gratuite est raisonnable.
IronBarcode est le choix idéal lorsqu'un projet nécessite à la fois la lecture et la génération, cible .NET Frameworkou les déploiements MAUI multiplateformes, prévoit d'ajouter des formats de codes-barres au fil du temps ou requiert un déploiement dans des environnements Docker ou cloud. Le modèle à package unique et la sélection de format basée sur une énumération éliminent la surcharge qui s'accumule avec codeur à barres à mesure que la portée du projet s'élargit.
La décision pratique se résume à une question de trajectoire. Un projet qui restera assurément un simple générateur à format unique sans aucune exigence de lecture peut être parfaitement servi par Barcoder. Un projet présentant la moindre ambiguïté quant à ses exigences en matière de codes-barres (ajout de formats, ajout de lecture, déploiement multiplateforme) se heurtera aux limites architecturales de codeur à barres plus tôt que prévu. Les deux bibliothèques sont des outils honnêtes ; La question est de savoir laquelle correspond à l'étendue réelle des travaux.
Questions Fréquemment Posées
Qu'est-ce que BarCode ?
BarCode est une bibliothèque de codes-barres .NET permettant de générer et de lire des codes-barres dans des applications C#. C'est l'une des nombreuses alternatives que les développeurs évaluent lorsqu'ils choisissent une solution de code-barres pour les projets .NET.
Quelles sont les principales différences entre BarCode et IronBarcode ?
IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que BarCode requiert généralement la création et la configuration d'une instance avant utilisation. IronBarcode offre également une prise en charge native du format PDF, une détection automatique du format et une licence à clé unique pour tous les environnements.
IronBarcode est-il plus facile à licencier que BarCode ?
IronBarcode utilise une clé de licence unique couvrant à la fois les déploiements de développement et de production. Cela simplifie les pipelines CI/CD et les configurations Docker par rapport aux systèmes de licence qui séparent les clés SDK des clés d'exécution.
IronBarcode prend-il en charge tous les formats de codes-barres que Barcoder prend en charge ?
IronBarcode prend en charge plus de 30 symbologies de codes-barres, notamment QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1, et bien d'autres encore. L'auto-détection du format signifie qu'aucune énumération explicite du format n'est nécessaire.
IronBarcode prend-il en charge la lecture de codes-barres PDF en mode natif ?
Oui. IronBarcode lit les codes-barres directement à partir de fichiers PDF en utilisant BarcodeReader.Read("document.pdf") sans nécessiter de bibliothèque de rendu PDF séparée. Les résultats par page comprennent le numéro de page, le format du code-barres, la valeur et le score de confiance.
Comment IronBarcode gère-t-il le traitement par lots par rapport à Barcoder ?
Les méthodes statiques d'IronBarcode sont sans état et naturellement à l'abri des threads, ce qui permet d'utiliser directement Parallel.ForEach sans gestion d'instance par thread. Il n'y a pas de plafond de débit, quel que soit le niveau de prix.
Quelles versions de .NET sont prises en charge par IronBarcode ?
IronBarcode prend en charge .NET Framework 4.6.2+, .NET Core 3.1 et .NET 5, 6, 7, 8 et 9 dans un seul package NuGet. Les plates-formes visées sont Windows x64/x86, Linux x64 et macOS x64/ARM.
Comment installer IronBarcode for .NET dans un projet .NET ?
Installez IronBarcode via NuGet : exécutez "Install-Package IronBarCode" dans la console du Package Manager, ou "dotnet add package IronBarCode" dans le CLI. Aucun installateur SDK ou fichier d'exécution supplémentaire n'est nécessaire.
Puis-je évaluer IronBarcode avant de l'acheter, contrairement à Barcoder ?
Oui. Le mode d'essai d'IronBarcode renvoie des valeurs de code-barres décodées complètes - seules les images de sortie générées reçoivent un filigrane. Vous pouvez comparer la précision de lecture sur vos propres documents avant de vous engager dans un achat.
Quelle est la différence de prix entre BarCode et IronBarcode ?
IronBarcode est proposé à partir de 749 dollars pour une licence perpétuelle pour un seul développeur couvrant le développement et la production. Les détails des prix et les options de volume sont disponibles sur la page de licence d'IronBarcode. Il n'est pas nécessaire de disposer d'une licence d'exécution distincte.
Est-il simple de migrer de BarCode à IronBarcode ?
La migration de BarCode vers IronBarcode implique principalement de remplacer les appels d'API basés sur des instances par les méthodes statiques d'IronBarcode, de supprimer les modèles de licence et de mettre à jour les noms des propriétés des résultats. La plupart des migrations impliquent une réduction du code plutôt qu'un ajout.
IronBarcode génère-t-il des codes QR avec des logos ?
Oui. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") incorpore une image de marque dans un code QR de manière native avec une correction d'erreur configurable. Les codes QR colorés sont également pris en charge via ChangeBarCodeColor().

