BarCode vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#
Le contrôle de code-barres de ComponentOne génère des codes-barres au sein d'une application Windows Forms. Il remplit parfaitement ces fonctions : l'API est claire, la qualité de la sortie est solide et il s'intègre naturellement au concepteur WinForms. Mais son champ d'action est limité. Il ne peut pas lire les codes-barres. Il ne peut pas s'exécuter en dehors d'un contexte Windows. Et il ne s'agit pas d'un produit autonome — il est livré dans le cadre de ComponentOne Studio Enterprise, un abonnement d'environ 1 473 $ par développeur et par an qui comprend plus de 100 contrôles d'interface utilisateur pour WinForms, WPF, Blazor et ASP.NET. Si vous évaluez les options de codes-barres pour un projet .NET et que vous avez trouvé ComponentOne dans une liste comparative, cet article explique ce que cela signifie concrètement.
Comprendre le code-barres C1
C1BarCode est un contrôle visuel WinForms. Le flux de travail de génération crée une instance, définit des propriétés et appelle GetImage() pour récupérer un System.Drawing.Image :
// ComponentOne C1BarCode
using C1.Win.C1BarCode;
using System.Drawing;
// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;
using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne C1BarCode
using C1.Win.C1BarCode;
using System.Drawing;
// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;
using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.C1BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
' License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.Code128
barcode.Text = "ITEM-12345"
barcode.BarHeight = 100
barcode.ModuleSize = 2
barcode.ShowText = True
barcode.CaptionPosition = CaptionPosition.Below
Using image As Image = barcode.GetImage()
image.Save("barcode.png", ImageFormat.Png)
End Using
L'API de définition des propriétés est familière aux développeurs WinForms — elle correspond directement à l'interface du concepteur. CodeType, BarHeight, ModuleSize, ShowText, et CaptionPosition sont toutes des propriétés visibles par le concepteur qui fonctionnent de manière identique dans le code.
C1BarCode prend en charge les principaux formats 1D et 2D : Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code et PDF417, entre autres. Pour la génération de formulaires WinForms, il couvre les cas d'utilisation courants.
API de lecture inexistante
Il ne s'agit pas d'une lacune que peut combler une option de configuration. Il n'y a pas de classe C1BarCodeReader. Il n'y a pas de méthode Decode() sur C1BarCode. Le système de contrôle des codes-barres de ComponentOne est conçu pour la génération uniquement.
Si votre application a besoin de scanner des codes-barres à partir d'images téléchargées, de vérifier des étiquettes imprimées, de traiter des documents contenant des codes intégrés ou d'extraire des données de codes QR dans une API Web, rien de tout cela n'est possible avec C1BarCode. Il vous faudrait une bibliothèque distincte pour la lecture, ce qui soulève la question de savoir pourquoi payer pour un composant de génération de codes-barres uniquement au sein d'une Suite Enterprise de plus de 100 contrôles alors que des bibliothèques de codes-barres autonomes couvrent les deux opérations.
L'absence d'une API de lecture n'est pas inhabituelle pour les contrôles de code-barres WinForms conçus pour l'impression. Ce qui en fait un point de décision, c'est l'évolution des exigences — et les exigences en matière de codes-barres évoluent presque toujours.
Contrainte Windows uniquement
C1BarCode nécessite une configuration de framework cible spécifique à Windows :
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
Le nom du cadre cible net8.0-windows et UseWindowsForms ne sont pas des préférences facultatives. C1.Win.C1BarCode dépend des types System.Windows.Forms - UserControl, PaintEventArgs, Graphics - qui n'existent que sous Windows. La suppression de net8.0-windows casse la construction.
En revanche, Code-barres IronBarcode cible net8.0 (ou tout TFM pris en charge) sans restriction de plateforme :
<TargetFramework>net8.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
Cela a son importance dans plusieurs situations pratiques :
- Azure App Service sur Linux : plan par défaut pour les nouveaux déploiements d'App Service.
net8.0-windowsne peut pas le cibler. - Conteneurs Docker : les conteneurs Linux sont la norme. Un conteneur Windows est plus volumineux, coûte plus cher et n'est pas disponible dans de nombreux niveaux de cloud.
- API Web ASP.NET Core : Un point de terminaison de génération de codes-barres qui ne peut être déployé que sur Windows constitue une contrainte de déploiement que l'équipe devra éventuellement supprimer.
- Azure Functions : le plan de consommation s'exécute sous Linux. Une fonction génératrice de codes-barres avec une cible
net8.0-windowsne peut pas être déployée sur le plan de la consommation. - développement sous macOS: Les développeurs sous macOS ne peuvent pas exécuter un projet
net8.0-windowslocalement, même pour tester la logique de génération.
La contrainte de plateforme ne pose pas de problème si votre application est un outil de bureau WinForms qui ne fonctionnera que sous Windows. Cela devient problématique dès lors que les exigences de déploiement incluent un environnement Linux ou cloud.
Regroupement de Suite
C1BarCode n'est pas disponible en tant que package NuGet autonome. Il fait partie de ComponentOne Studio Enterprise, qui comprend la Suite complète de contrôles ComponentOne pour WinForms, WPF, Blazor et ASP.NET. Le prix de ComponentOne Studio Enterprise est d'environ 1 473 $ par développeur et par an (abonnement).
Cette Suite comprend plus de 100 composants : grilles, graphiques, planificateurs, contrôles de saisie, concepteurs de rapports, contrôles de carte, jauges, et bien plus encore. Si vous développez une application WinForms gourmande en données et que vous avez besoin de nombreux contrôles de ce type, le prix de la Suite peut s'avérer judicieux. Si vous avez besoin de générer des codes-barres et que vous êtes arrivé sur ComponentOne parce que ce site est apparu dans une recherche, vous achetez une Suite d'interface utilisateur Enterprise complète principalement pour un seul contrôle.
Il n'existe pas de package C1BarCode autonome. dotnet add package C1.Win.C1BarCode n'existe pas - le paquet est C1.Win.C1BarCode dans le cadre de la licence GrapeCity.Documents ou du programme d'installation de ComponentOne Studio. Pour les développeurs qui souhaitent une fonctionnalité de code-barres sans la Suite complète, il n'existe pas d'option d'achat partiel.
La structure tarifaire d'IronBarcode est différente : il s'agit d'une bibliothèque de codes-barres autonome avec une licence perpétuelle à partir de 749 $ pour un seul développeur. Il n'y a pas de contrôle de grille, pas de bibliothèque de graphiques, pas de concepteur de rapports — seulement la fonctionnalité de code-barres que vous recherchez.
Personnalisation du code QR
Les deux bibliothèques prennent en charge la génération de codes QR avec des options de personnalisation. Le style de l'API diffère sensiblement.
Approche par définition de propriété ComponentOne :
// ComponentOne — QR code with error correction and color
using C1.Win.C1BarCode;
using System.Drawing;
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;
using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne — QR code with error correction and color
using C1.Win.C1BarCode;
using System.Drawing;
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";
var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;
using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.C1BarCode
Imports System.Drawing
Imports System.Drawing.Imaging
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"
Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.QRCode
barcode.Text = "https://example.com/product/4821"
barcode.QRCodeVersion = QRCodeVersion.Version5
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High
barcode.QRCodeModel = QRCodeModel.Model2
barcode.ForeColor = Color.DarkBlue
barcode.BackColor = Color.White
barcode.ModuleSize = 4
Using image As Image = barcode.GetImage()
image.Save("product-qr.png", ImageFormat.Png)
End Using
Chaîne de caractères fluide IronBarcode :
// Code-barres IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest)
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("product-qr.png");
// Code-barres IronBarcode — QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest)
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("product-qr.png");
Imports IronBarCode
Imports System.Drawing
' Code-barres IronBarcode — QR code with error correction and color
' NuGet: dotnet add package IronBarcode
QRCodeWriter.CreateQrCode(
"https://example.com/product/4821",
300,
QRCodeWriter.QrErrorCorrectionLevel.Highest) _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("product-qr.png")
L'approche ComponentOne nécessite l'instanciation d'un objet C1BarCode et la définition de plusieurs propriétés avant d'appeler GetImage(). Le QRCodeWriter d'IronBarcode utilise une chaîne fluide - chaque opération renvoie l'objet code-barres, et vous appelez le .SaveAsPng() à la fin. Il n'y a pas d'instance à gérer.
IronBarcode prend également en charge l'intégration de logos dans les codes QR, contrairement à C1BarCode :
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("branded-qr.png");
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
.AddBrandLogo("company-logo.png")
.ChangeBarCodeColor(Color.DarkBlue)
.SaveAsPng("branded-qr.png");
' QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500) _
.AddBrandLogo("company-logo.png") _
.ChangeBarCodeColor(Color.DarkBlue) _
.SaveAsPng("branded-qr.png")
Comprendre IronBarcode
IronBarcode est une bibliothèque .NET autonome de gestion des codes-barres, couvrant la génération et la lecture. Elle s'installe à partir de NuGet (dotnet add package IronBarcode), cible tout TFM .NET pris en charge sans restriction de plateforme, et s'exécute sous Windows, Linux, macOS, Docker, Azure et AWS Lambda.
La face lecture prend en charge nativement les documents PDF :
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;
var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
Imports IronBarCode
' Read barcodes from a PDF — no image extraction needed
Dim results = BarcodeReader.Read("invoice.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}")
Next
Pour les scénarios à haut débit, BarcodeReaderOptions contrôle le compromis vitesse/précision et la détection multi-barcodes :
// Multi-barcode read with performance options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
// Multi-barcode read with performance options
using IronBarCode;
var options = new BarcodeReaderOptions
{
Speed = ReadingSpeed.Balanced,
ExpectMultipleBarcodes = true,
ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};
var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
Imports IronBarCode
' Multi-barcode read with performance options
Dim options As New BarcodeReaderOptions With {
.Speed = ReadingSpeed.Balanced,
.ExpectMultipleBarcodes = True,
.ExpectedBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.QRCode
}
Dim results = BarcodeReader.Read("warehouse-manifest.jpg", options)
La génération couvre les formats standard avec une API statique cohérente :
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// génération de code QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
.ToPngBinaryData();
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
.SaveAsPng("shipping-label.png");
// génération de code QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
.ToPngBinaryData();
' Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
.SaveAsPng("shipping-label.png")
' génération de code QR to byte array (for HTTP response)
Dim qrBytes As Byte() = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400) _
.ToPngBinaryData()
Plateformes prises en charge : Windows, Linux, macOS, Docker, Azure (App Service et Functions), AWS Lambda. Versions .NET prises en charge : .NET 4.6.2 à .NET 9.
Comparaison des fonctionnalités
| Fonction | Code-barres GrapeCity C1 | Code-barres IronBarcode |
|---|---|---|
| génération de codes-barres | Oui | Oui |
| Lecture de codes-barres | Non | Oui |
| génération de code QR | Oui | Oui |
| Intégration de logo QR | Non | Oui |
| Saisie PDF pour la lecture | N/A (pas de lecture) | Oui (natif) |
| Plateforme cible .NET | net8.0-windows seulement |
Tout TFM (net8.0, etc.) |
| Utilisation de Windows Forms requise | Oui | Non |
| Déploiement Linux / Docker | Non | Oui |
| Déploiement macOS | Non | Oui |
| Azure Functions (Linux) | Non | Oui |
| Côté serveur ASP.NET Core | Limité (Windows uniquement) | Oui |
| package NuGet autonome | Non (suite uniquement) | Oui |
| Tarification autonome | N/A | À partir de 749 $ perpétuel |
| Tarifs des Suite | ~1 473 $/développeur/an (abonnement) | N/A |
| API de génération Fluent | Non (créateur de propriété) | Oui |
BarcodeReader.Read() |
Non | Oui |
BarcodeWriter.CreateBarcode() |
Non | Oui |
QRCodeWriter.CreateQrCode() |
Non | Oui |
| Versions .NET prises en charge | .NET 6+ (Windows) | .NET 4.6.2 à .NET 9 |
| Option de licence perpétuelle | Non (abonnement) | Oui |
Référence de mappage d'API
Pour les équipes migrant de C1BarCode vers IronBarcode, les équivalents directs suivants s'appliquent :
| Code-barres ComponentOne C1 | Code-barres IronBarcode |
|---|---|
C1.C1License.Key = "..." |
IronBarCode.License.LicenseKey = "key" |
new C1BarCode() |
Statique — aucune instance nécessaire |
barcode.CodeType = CodeType.Code128 |
BarcodeEncoding.Code128 (passé en paramètre) |
barcode.Text = "data" |
Premier argument de BarcodeWriter.CreateBarcode() |
barcode.BarHeight = 100 |
.ResizeTo(width, 100) sur le graveur de codes-barres |
barcode.ModuleSize = 2 |
.ResizeTo() taille des contrôles en pixels |
barcode.ForeColor = Color.DarkBlue |
.ChangeBarCodeColor(Color.DarkBlue) |
barcode.BackColor = Color.White |
.ChangeBackgroundColor(Color.White) |
barcode.GetImage() |
.SaveAsPng() / .ToPngBinaryData() |
barcode.QRCodeErrorCorrectionLevel |
QRCodeWriter.QrErrorCorrectionLevel enum |
barcode.QRCodeVersion |
Automatique (ou paramètre de version) |
| API de lecture indisponible | BarcodeReader.Read(path) |
net8.0-windows requis |
net8.0 (ou tout autre TFM) |
UseWindowsForms = true requis |
Non requis |
Quand les équipes changent
Le besoin de lecture se fait sentir. C'est le déclencheur le plus fréquent. Une équipe conçoit un système de génération d'étiquettes à code-barres avec C1BarCode, puis reçoit la demande de vérifier les scans, de traiter les documents d'expédition entrants ou de décoder les codes QR à partir d'images téléchargées. C1BarCode ne peut pas vous aider. Vous avez deux options : ajouter une seconde bibliothèque de codes-barres pour la lecture, ou remplacer C1BarCode par une bibliothèque qui gère les deux.
Déploiement sous Linux ou Docker. Une application de bureau WinForms distribuée sur les postes de travail Windows n'est pas soumise à cette contrainte. Une API ASP.NET Core générant des images de codes-barres, notamment si elle doit s'exécuter dans un conteneur Linux ou être déployée sur Azure App Service sous Linux. Le cadre cible net8.0-windows bloque immédiatement ces options de déploiement.
Architecture de microservices ou sans serveur. Azure Functions, AWS Lambda et les microservices conteneurisés sont conçus pour Linux en priorité. Un service de génération de codes-barres qui ne peut pas être déployé sur Linux ne constitue pas un microservice viable.
Coût de l'abonnement à la Suite en fonction des besoins. Les équipes qui paient pour ComponentOne Studio Enterprise et utilisent déjà ses grilles, graphiques et autres contrôles ont déjà justifié leur abonnement. Les équipes qui se sont abonnées principalement ou exclusivement pour la génération de codes-barres paient pour plus de 100 contrôles qu'elles n'utilisent pas. Le coût de l'abonnement par développeur augmente avec la taille de l'équipe.
Licence perpétuelle privilégiée. ComponentOne Studio est disponible uniquement par abonnement. Il n'existe pas d'option de licence perpétuelle. Pour les équipes qui préfèrent être propriétaires du logiciel qu'elles déploient — notamment pour des raisons de conformité ou de maintenance à long terme — la licence perpétuelle d'IronBarcode, à partir de 749 $, est structurellement différente.
Conclusion
C1BarCode génère des codes-barres de manière propre dans un contexte WinForms. C'est véritablement ce qu'il fait bien, et pour une application de bureau WinForms qui n'a besoin que de générer des étiquettes sous Windows, c'est un choix fonctionnel au sein de la Suite ComponentOne.
Le champ d'application s'arrête là. Aucune lecture requise, déploiement uniquement sous Windows, aucun package autonome, licence par abonnement. Lorsque les exigences d'un projet dépassent la génération WinForms sous Windows (exigence de lecture, cible de déploiement Linux, API web, conteneur Docker, fonction cloud), C1BarCode ne peut pas les prendre en charge. Code-barres IronBarcode couvre la génération et la lecture, fonctionne sur toutes les plateformes prises en charge par .NET et est disponible en tant que package autonome sans abonnement à une Suite Enterprise de 100 contrôles.
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 GrapeCity et IronBarcode ?
IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que GrapeCity 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 GrapeCity 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 BarCode GrapeCity 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 à GrapeCity 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 à GrapeCity ?
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 GrapeCity 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 GrapeCity Barcode vers IronBarcode ?
La migration de BarCode GrapeCity vers IronBarcode implique principalement le remplacement des appels d'API basés sur les 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().

