DevExpress Barcode vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#
DevExpress est un kit d'outils d'interface utilisateur .NET très réputé. Les contrôles de grille, de planification, de graphique et de tableau croisé dynamique sont véritablement excellents et utilisés par des milliers d'équipes en Enterprise . La prise en charge des codes-barres, en revanche, est une autre histoire. DevExpress fournit un BarCodeControl - un contrôle WinForms et une balise Blazor DxBarCode - qui vous permet de rendre un code-barres sur un formulaire au moment de la conception. Lorsque l'équipe d'assistance a été interrogée sur la reconnaissance des codes-barres, la réponse a été cohérente : aucune capacité de lecture n'existe et il n'est pas prévu de l'ajouter. Si vos codes-barres sont exécutés en arrière-plan, via une API web, dans un document PDF ou dans tout autre environnement sans formulaire d'interface utilisateur, cette règle ne s'applique pas.
Cette contrainte restreint l'offre de codes-barres DevExpress à un créneau spécifique : le rendu visuel d'un code-barres dans une interface utilisateur DevExpress WinForms ou Blazor . Pour ce créneau spécifique, il convient parfaitement. Pour tout le reste (génération côté serveur, lecture d'images ou de PDF, traitement sans interface graphique dans Azure Functions ou des conteneurs Docker), il vous faut un autre outil.
Comprendre les contrôles de codes-barres DevExpress
La fonctionnalité des codes-barres DevExpress vit dans DevExpress.XtraBars.BarCode et les espaces de noms de symbologie connexes. Il ne s'agit pas d'une bibliothèque autonome. Il est inclus dans la Suite DXperience, dont le coût est d'environ 2 499 $ par an. Il n'existe pas de package NuGet distinct dédié aux codes-barres que vous puissiez installer.
Le BarCodeControl est un contrôle WinForms qui hérite de la hiérarchie des contrôles. Vous le configurez à l'aide d'un objet de symbologie, vous définissez ses propriétés, et il s'affiche à l'écran. Pour enregistrer ce rendu dans un fichier, il faut appeler DrawToBitmap, qui attend un Bitmap pré-alloué de la bonne taille :
// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;
var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f; // document units, not pixels
barCode.ShowText = true;
// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress WinForms: UI control, not a library
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
using System.Drawing;
using System.Drawing.Imaging;
var barCode = new BarCodeControl();
var symbology = new Code128Generator();
symbology.CharacterSet = Code128CharacterSet.CharsetAuto;
barCode.Symbology = symbology;
barCode.Text = "ITEM-12345";
barCode.Module = 0.02f; // document units, not pixels
barCode.ShowText = true;
// File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400;
barCode.Height = 100;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("barcode.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barCode As New BarCodeControl()
Dim symbology As New Code128Generator()
symbology.CharacterSet = Code128CharacterSet.CharsetAuto
barCode.Symbology = symbology
barCode.Text = "ITEM-12345"
barCode.Module = 0.02F ' document units, not pixels
barCode.ShowText = True
' File output requires DrawToBitmap — you must size the Bitmap manually
barCode.Width = 400
barCode.Height = 100
Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("barcode.png", ImageFormat.Png)
bitmap.Dispose()
Remarquez plusieurs points de friction ici. Tout d'abord, barCode.Module est en unités de document plutôt qu'en pixels, ce qui crée un décalage si vous pensez en dimensions de pixels. Deuxièmement, vous devez connaître la taille finale du pixel avant d'allouer le Bitmap. Troisièmement, le contrôle nécessite le chargement des assemblys WinForms, ce qui signifie qu'une API minimale ASP.NET Core ou un service d'arrière-plan de console doit charger l'infrastructure Windows Forms uniquement pour générer une image de code-barres.
La balise Blazor DxBarCode est conceptuellement similaire, mais il s'agit d'un composant Razor pour le rendu de l'interface utilisateur, et non d'une API de génération côté serveur.
Aucune capacité de lecture
La position officielle de DevExpress est qu'ils ne fournissent pas de fonctionnalité de reconnaissance ou de lecture de codes-barres. Il ne s'agit pas d'une lacune qui sera comblée dans une prochaine version ; c'est la réponse qui a toujours été la même depuis des années.
Pour les équipes qui développent une application DevExpress WinForms et qui doivent ensuite scanner un code-barres à partir d'une image ou lire un code QR à partir d'une pièce jointe PDF, la boîte à outils DevExpress ne suffit pas. Il est nécessaire d'utiliser une bibliothèque externe pour la lecture, ce qui soulève la question de la cohérence de l'API côté génération : faut-il également migrer vers cette bibliothèque ?
IronBarcode gère les deux sens :
// Code-barres IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
// Code-barres IronBarcode reading — works on images, PDFs, and byte arrays
// NuGet: dotnet add package IronBarcode
using IronBarCode;
var results = BarcodeReader.Read("scanned-label.png");
foreach (var result in results)
{
Console.WriteLine($"Format: {result.Format}");
Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode
' Code-barres IronBarcode reading — works on images, PDFs, and byte arrays
' NuGet: dotnet add package IronBarcode
Dim results = BarcodeReader.Read("scanned-label.png")
For Each result In results
Console.WriteLine($"Format: {result.Format}")
Console.WriteLine($"Value: {result.Value}")
Next
La lecture d'un fichier PDF ne nécessite aucune bibliothèque supplémentaire :
// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page barcode: {result.Value}");
}
// Reading barcodes from a PDF — no PdfiumViewer or similar required
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
Console.WriteLine($"Page barcode: {result.Value}");
}
Imports System
' Reading barcodes from a PDF — no PdfiumViewer or similar required
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
Console.WriteLine($"Page barcode: {result.Value}")
Next
Le problème du regroupement des Suite
Les composants de codes-barres DevExpress ne sont pas vendus en tant que produit autonome. Pour utiliser BarCodeControl dans n'importe quel projet, votre équipe a besoin d'une licence de la suite DXperience à environ 2 499 $ par an et par développeur. La Suite comprend la grille, le graphique, le planificateur, le tableau croisé dynamique et de nombreux autres contrôles, ce qui est raisonnable si vous développez une application DevExpress WinForms ou Blazor complète. Si vous n'avez besoin que de la génération de codes-barres pour un service backend, vous payez pour une suite logicielle d'interface utilisateur complète que ce service n'utilisera jamais.
IronBarcode est un package autonome :
dotnet add package IronBarcode
dotnet add package IronBarcode
La licence Lite perpétuelle est proposée à partir de 749 $ pour un développeur. Aucun kit d'outils d'interface utilisateur n'est intégré. Vous bénéficiez de la génération et de la lecture de codes-barres, de la compatibilité multiplateforme, et de rien d'autre que ce que vous avez demandé.
Limitation de l'utilisation sans interface graphique
Le problème fondamental de BarCodeControl dans les scénarios côté serveur est qu'il s'agit d'un contrôle WinForms. Dans un projet d'API minimale ASP.NET Core .NET 6+, les assemblys WinForms ne sont pas référencés par défaut. Pour instancier BarCodeControl, votre projet d'API doit soit cibler explicitement Windows et charger le runtime Windows Forms, soit ajouter des références de contournement qui tirent l'infrastructure de l'interface utilisateur que votre API ne rendra jamais.
Dans un plan de consommation Azure Functions, vous n'avez aucune couche d'interface utilisateur. Dans un conteneur Docker exécutant une image de base Linux, les dépendances Windows Forms GDI+ peuvent être totalement absentes. DevExpress ne prend pas officiellement en charge l'utilisation de BarCodeControl dans ces environnements sans tête.
IronBarcode utilise une API statique et entièrement programmable :
// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
// NuGet: dotnet add package IronBarcode
using IronBarCode;
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
Imports IronBarCode
' IronBarcode: works in WinForms, ASP.NET Core, Azure Function, console — same code
' NuGet: dotnet add package IronBarcode
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128) _
.SaveAsPng("barcode.png")
Cet appel précis fonctionne dans une application console, un contrôleur ASP.NET Core , une fonction Azure déclenchée par un message Service Bus ou un conteneur Docker exécuté sous Linux. L'API reste inchangée d'un environnement à l'autre. Il n'y a aucune dépendance d'assemblage d'interface utilisateur.
Voici à quoi ressemble un point de terminaison ASP.NET Core qui renvoie un code-barres sous forme de fichier PNG :
app.MapGet("/barcode/{sku}", (string sku) =>
{
var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
return Results.File(bytes, "image/png");
});
app.MapGet("/barcode/{sku}", (string sku) =>
{
var bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
return Results.File(bytes, "image/png");
});
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Http
app.MapGet("/barcode/{sku}", Function(sku As String)
Dim bytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.ToPngBinaryData()
Return Results.File(bytes, "image/png")
End Function)
Il n'y a pas de modèle équivalent avec BarCodeControl sans contournement important.
Comprendre IronBarcode
IronBarcode est une bibliothèque .NET autonome permettant de générer et de lire des codes-barres. L'API est entièrement statique — aucune instance à gérer, aucun cycle de vie de contrôle, aucune dépendance à l'interface utilisateur. La génération et la lecture fonctionnent toutes deux dans le même appel :
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
.ResizeTo(450, 120)
.SaveAsPng("order-label.png");
// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
.ResizeTo(450, 120)
.ToPngBinaryData();
// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
.ResizeTo(450, 120)
.SaveAsPng("order-label.png");
// Generate and get bytes (for HTTP responses, blob storage, etc.)
byte[] pngBytes = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128)
.ResizeTo(450, 120)
.ToPngBinaryData();
// Read from an image file
var results = BarcodeReader.Read("order-label.png");
Console.WriteLine(results.First().Value); // ORDER-9921
Imports IronBarCode
' Generate Code 128
BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
.ResizeTo(450, 120) _
.SaveAsPng("order-label.png")
' Generate and get bytes (for HTTP responses, blob storage, etc.)
Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode("ORDER-9921", BarcodeEncoding.Code128) _
.ResizeTo(450, 120) _
.ToPngBinaryData()
' Read from an image file
Dim results = BarcodeReader.Read("order-label.png")
Console.WriteLine(results.First().Value) ' ORDER-9921
L'activation de la licence se fait en une seule ligne au démarrage :
IronBarCode.License.LicenseKey = "YOUR-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-KEY"
Aucun appel réseau. Pas de code répétitif pour la gestion des erreurs. Validation locale.
Code QR côte à côte
Les codes QR illustrent le fossé en matière d'API entre un contrôle d'interface utilisateur et une bibliothèque de programmation.
Code QR DevExpress — Contrôle WinForms :
// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
// DevExpress: QR via BarCodeControl + QRCodeGenerator symbology
using DevExpress.XtraBars.BarCode;
using DevExpress.XtraBars.BarCode.Symbologies;
var barCode = new BarCodeControl();
var symbology = new QRCodeGenerator();
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H;
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric;
barCode.Symbology = symbology;
barCode.Text = "https://example.com";
barCode.Width = 500;
barCode.Height = 500;
var bitmap = new Bitmap(barCode.Width, barCode.Height);
barCode.DrawToBitmap(bitmap, new Rectangle(0, 0, barCode.Width, barCode.Height));
bitmap.Save("qr.png", ImageFormat.Png);
bitmap.Dispose();
Imports DevExpress.XtraBars.BarCode
Imports DevExpress.XtraBars.BarCode.Symbologies
Imports System.Drawing
Imports System.Drawing.Imaging
Dim barCode As New BarCodeControl()
Dim symbology As New QRCodeGenerator()
symbology.ErrorCorrectionLevel = QRCodeErrorCorrectionLevel.H
symbology.CompactionMode = QRCodeCompactionMode.AlphaNumeric
barCode.Symbology = symbology
barCode.Text = "https://example.com"
barCode.Width = 500
barCode.Height = 500
Dim bitmap As New Bitmap(barCode.Width, barCode.Height)
barCode.DrawToBitmap(bitmap, New Rectangle(0, 0, barCode.Width, barCode.Height))
bitmap.Save("qr.png", ImageFormat.Png)
bitmap.Dispose()
Code QR Code-barres IronBarcode — même résultat, aucun assemblage d'interface utilisateur requis :
// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.SaveAsPng("qr.png");
// IronBarcode: QR in one method chain
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.SaveAsPng("qr.png");
Ajouter un logo de marque au centre du code QR :
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.AddBrandLogo("company-logo.png")
.SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
.AddBrandLogo("company-logo.png")
.SaveAsPng("qr-branded.png");
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
.AddBrandLogo("company-logo.png") _
.SaveAsPng("qr-branded.png")
DevExpress ne propose pas d'équivalent pour les logos intégrés. La commande génère un code QR standard, et rien de plus.
Comparaison des fonctionnalités
| Fonction | Code-barres DevExpress | Code-barres IronBarcode |
|---|---|---|
| génération de codes-barres | Oui (contrôle WinForms, balise Blazor ) | Oui (API programmatique, tous environnements) |
| Lecture/scan des codes-barres | Non — confirmation officielle | Oui — images, PDF, tableaux d'octets |
| lecture de codes-barres PDF | Non | Oui, natif, sans bibliothèque supplémentaire |
| package NuGet autonome | Non — Suite DXperience requise | Oui - IronBarcode seulement |
| coût de la Suite | ~2 499 $+/an ( Suite d'interface utilisateur complète) | N/A — autonome |
| Coût de la licence | Abonnement uniquement | Perpétuel à partir de 749 |
| ASP.NET Core / API minimale | Nécessite des solutions de contournement pour WinForms | Support natif |
| Fonctions Azure | Non pris en charge en mode sans interface graphique | Prise en charge complète |
| Docker / Linux | Problèmes GDI+ sur les images de base Linux | Prise en charge complète |
| Applications console | Nécessite le chargement de l'assembly WinForms | Support natif |
| génération de code QR | Oui (via la symbologie QRCodeGenerator) | Oui (QRCodeWriter) |
| QR avec logo intégré | Non | Oui — .AjouterLogoDeMarque() |
| niveaux de correction d'erreur QR | H, Q, M, L | Très élevé, Élevé, Moyen, Faible |
| Code 128 | Oui | Oui |
| Matrice de données | Oui | Oui |
| PDF417 | Oui | Oui |
| Aztèque | Oui | Oui |
| Sortie de fichier | DrawToBitmap — allocation manuelle de bitmap | .EnregistrerAuFormatPng(), .EnregistrerAuFormatGif(), .EnregistrerAuFormatSVG() |
| Sortie binaire (réponse HTTP) | Bitmap manuel → MemoryStream | .ToPngBinaryData() |
| Lecture multithread | N/A — aucune lecture | MaxParallelThreads = 4 |
| Lecture de plusieurs codes-barres | N/A — aucune lecture | ExpectMultipleBarcodes = true |
| Plateformes | Windows (WinForms / Blazor) | Windows, Linux, macOS, Docker, Azure, AWS Lambda |
| Prise en charge des versions .NET | .NET Framework + .NET moderne (Windows) | .NET 4.6.2 à .NET 9 |
Référence de mappage d'API
Les équipes familiarisées avec le modèle DevExpress BarCodeControl@ trouveront ces équivalences utiles :
| Code-barres DevExpress | Code-barres IronBarcode |
|---|---|
new BarCodeControl() |
Statique — aucune instance nécessaire |
new Code128Generator() + barCode.Symbology = symbology |
BarcodeEncoding.Code128 passé en paramètre |
new QRCodeGenerator() + QRCodeErrorCorrectionLevel.H |
QRCodeWriter.CreateQrCode("data", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) |
new DataMatrixGenerator() + DataMatrixSize.Matrix26x26 |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix) |
new PDF417Generator() |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.PDF417) |
new AztecGenerator() |
BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Aztec) |
barCode.Module = 0.02f (unités de document) |
.ResizeTo(width, height) (pixels) |
barCode.ShowText = true |
.AddBarcodeText() |
DrawToBitmap(bitmap, rect) - Allocation manuelle de bitmap |
.SaveAsPng(path) - gère le dimensionnement automatiquement |
Manuel Bitmap → MemoryStream pour la réponse HTTP |
.ToPngBinaryData() |
| API de lecture indisponible | BarcodeReader.Read(imagePath) |
TextResult type |
.Value (string), .Format (BarcodeEncoding) |
| Assemblage de l'interface utilisateur requis dans chaque projet | Fonctionne avec tout type de projet .NET |
| Suite uniquement (environ 2 499 $/an) | Autonome (à partir de 749 $ pour une licence perpétuelle) |
Quand les équipes changent
Plusieurs scénarios spécifiques déclenchent généralement le passage des contrôles de codes-barres DevExpress à IronBarcode.
Une nouvelle exigence de lecture apparaît. Le scénario le plus courant est celui d'une application WinForms qui génère des codes-barres depuis des années, et une nouvelle demande de fonctionnalité arrive : l'application doit désormais scanner ou vérifier les codes-barres à partir d'images téléchargées ou de captures d'écran. DevExpress ne possède pas d'API de lecture. L'équipe a de toute façon besoin d'une nouvelle bibliothèque, et il est logique de centraliser la génération sur cette même bibliothèque.
Besoin d'un point de terminaison d'API web. Une équipe développe un microservice qui génère des étiquettes de code-barres à la demande, accessible depuis une interface web, une application mobile ou un autre service. Le projet ASP.NET Core ne dépend pas de WinForms et l'équipe ne souhaite pas en ajouter. L'API statique d'IronBarcode s'intègre à un point de terminaison HTTP sans aucun bagage d'assemblage d'interface utilisateur.
Déploiement de fonctions Azure ou Lambda. Les déploiements sans serveur utilisent souvent des images de base Linux et des environnements d'exécution minimaux. BarCodeControl n'est pas conçu pour cet environnement. Code-barres IronBarcode fonctionne sous Linux, dans des conteneurs Docker, dans Azure Functions et dans AWS Lambda sans modification de configuration.
<Lorsque le renouvellement arrive et qu'une équipe vérifie ce qu'elle utilise réellement de la suite DXperience, découvrir que le seul composant DevExpress dans un service particulier est BarCodeControl crée une conversation sur les coûts. Il est difficile de justifier le paiement d'un abonnement Suite pour la génération de codes-barres alors qu'une bibliothèque autonome coûte 749 $ en version perpétuelle.
Lecture de plusieurs codes-barres à partir de fichiers PDF. Les flux de traitement de documents (lecture des codes-barres à partir de factures PDF, de manifestes d'expédition ou de formulaires numérisés) nécessitent à la fois la prise en charge et la capacité de lecture des fichiers PDF. Code-barres IronBarcode lit directement les fichiers PDF sans bibliothèque supplémentaire. DevExpress ne propose aucune de ces fonctionnalités.
Conclusion
L'offre de codes-barres de DevExpress s'apparente davantage à une fonctionnalité de rendu d'interface utilisateur intégrée à une boîte à outils d'interface utilisateur. Si votre application est une application WinForms ou Blazor qui utilise déjà DevExpress pour ses contrôles de grille et de graphique, et que votre seul besoin en code-barres est d'afficher un code-barres visuellement sur un formulaire, le BarCodeControl est un choix raisonnable - vous avez déjà la licence.
Dès que vous avez besoin de l'un des éléments suivants, BarCodeControl cesse d'être le bon outil : lecture de codes-barres, génération de codes-barres dans un contexte côté serveur, exécution dans un environnement sans tête, travail sous Linux ou fonctionnement sans référence d'assemblage WinForms. Le support DevExpress a confirmé l'absence de fonctionnalité de lecture et n'a pas l'intention d'en ajouter une. La limitation du mode sans interface graphique est d'ordre architectural, et non liée à un problème de configuration. Un contrôle d'interface utilisateur est un contrôle d'interface utilisateur.
IronBarcode est conçu pour le traitement programmatique des codes-barres — génération et lecture via une API statique, dans n'importe quel environnement, sur n'importe quelle plateforme. Ces deux outils résolvent des problèmes différents. Le code-barres DevExpress est destiné à être affiché à l'intérieur d'un formulaire. Code-barres IronBarcode sert au traitement des codes-barres.
Questions Fréquemment Posées
Qu'est-ce que DevExpress BarCode ?
DevExpress 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 DevExpress Barcode et IronBarcode ?
IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, alors que DevExpress Barcode nécessite 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 DevExpress 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 DevExpress Barcode 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 à DevExpress Barcode ?
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 gestionnaire de paquets, 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 à DevExpress ?
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 DevExpress 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 DevExpress Barcode vers IronBarcode ?
La migration de DevExpress Barcode vers IronBarcode implique principalement le remplacement des appels d'API basés sur des instances par les méthodes statiques d'IronBarcode, la suppression du boilerplate de licence et la mise à jour des 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().

