QRCoder.NET vs IronBarcode : Comparaison de la bibliothèque de codes-barres C#
Spire.Barcode vs Code-barres IronBarcode : Spécification de Type, Support PDF, et Comparaison de Prix
Spire.Barcode nécessite le type de code-barres lors de la lecture : scanner.Scan(path, BarCodeType.Code128). Si vous traitez des documents dont les codes-barres entrants peuvent être de n'importe quel format, vous devez écrire une boucle de détection de format avant de pouvoir extraire une valeur. Ce choix concernant l'API influence considérablement la manière dont vous créez des flux de travail de lecture de codes-barres avec Spire.Barcode ; il est donc important de le comprendre avant de vous y engager.
Comprendre Spire.Barcode
Spire.Barcode est une bibliothèque commerciale de codes-barres .NET développée par E-iceblue, une société de logiciels chinoise qui produit également les gammes de produits Spire.Doc, Spire.XLS et Spire.PDF. La bibliothèque prend en charge la génération et la lecture de codes-barres pour une gamme de symbologies 1D et 2D et est conçue pour s'intégrer à l'écosystème de traitement de documents E-iceblue.
E-iceblue publie deux packages : FreeSpire.Barcode sans coût et Spire.Barcode comme produit commercial. Le forfait gratuit est un produit à capacité limitée permanente et assorti de restrictions intentionnelles, et non un essai à durée limitée. Le pack commercial débloque l'ensemble complet des symboles et supprime les restrictions présentes dans la version gratuite, mais nécessite l'achat d'une licence distincte pour tout autre produit Spire utilisé.
Les principales caractéristiques architecturales de Spire.Barcode sont les suivantes :
- Paramètre BarCodeType obligatoire : Chaque appel à
BarcodeScanner.Scan()nécessite une valeur d'énumérationBarCodeType. Il n'existe aucune surcharge qui accepte uniquement un chemin de fichier et effectue une détection automatique du format. - Modèle de génération d'objet de paramètres : La génération de code-barres est centrée sur un objet
BarcodeSettingsmutable qui est passé à une instance deBarCodeGenerator, nécessitant plusieurs affectations de propriétés avant que toute sortie ne soit produite. - Absence de prise en charge native des fichiers PDF : Spire.Barcode ne peut pas lire directement les codes-barres à partir de fichiers PDF. Les workflows basés sur le PDF nécessitent un package
Spire.PDFséparé, une licence distincte et un code d'extraction de page et d'image manuelle écrit par le développeur. - Limitations de la version gratuite de FreeSpire.Barcode : La version gratuite applique de grands filigranes d'évaluation aux codes-barres générés, dégrade intentionnellement les performances de numérisation, limite l'ensemble de symbologie disponible et exige une clé d'enregistrement obtenue auprès d'E-iceblue avant que les boîtes de dialogue d'avertissement ne soient supprimées.
- Intégration à l'écosystème E-iceblue : les équipes utilisant déjà Spire.Doc ou Spire.XLS pourraient trouver avantageux la familiarité avec l'API et les tarifs groupés potentiels. Les équipes utilisant Spire.Barcode de manière isolée supportent le coût total de chaque licence produit sans bénéficier des avantages de l'écosystème.
- Type de retour:
BarcodeScanner.Scan()retournestring[], qui ne contient pas de métadonnées de format. Le type détecté n'est pas inclus dans le résultat.
Exigences relatives aux spécifications de type
L'BarcodeScanner.Scan() de Spire.Barcode n'a pas de surcharge qui accepte uniquement un chemin de fichier. Chaque opération de lecture exige que le code appelant déclare le format du code-barres à l'avance. Pour les flux de travail à format unique, cela fonctionne, mais pour le traitement de documents à formats mixtes, cela produit une boucle d'itération potentielle :
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}
Dim foundValue As String = Nothing
For Each type In candidates
Dim found As String() = scanner.Scan("barcode.png", type)
If found.Length > 0 Then
foundValue = found(0)
Exit For
End If
Next
Chaque type ajouté au tableau des candidats correspond à une passe d'analyse supplémentaire. Tout format absent de la liste est ignoré sans que cela ne soit pris en compte. Le développeur est responsable de la tenue d'un inventaire exhaustif des types et de la réalisation de nouveaux tests chaque fois qu'un nouveau format est intégré au flux de travail.
Comprendre IronBarcode
IronBarcode est une bibliothèque commerciale de codes-barres .NET développée par Iron Software. Il assure à la fois la lecture et la génération de codes-barres via un modèle d'API statique qui élimine le besoin de gestion d'instances. La bibliothèque est distribuée sous la forme d'un package NuGet unique qui inclut la prise en charge native du traitement PDF et d'images sans nécessiter de dépendances supplémentaires.
Le moteur de lecture d'IronBarcode effectue une détection automatique du format sur plus de 50 symbologies en une seule passe de numérisation. Les objets résultat retournés par BarcodeReader.Read() incluent le format détecté, la valeur décodée et des métadonnées contextuelles telles que le numéro de page pour les sources PDF et les coordonnées de délimitation dans l'image source.
Les principales caractéristiques d' Code-barres IronBarcode sont les suivantes :
- Détection automatique de format :
BarcodeReader.Read()ne nécessite pas de paramètre de type. La bibliothèque identifie la symbologie lors de l'analyse et l'inclut dans l'objet résultat. - Support PDF en un seul package : Les fichiers PDF sont acceptés directement par
BarcodeReader.Read()sans package NuGet supplémentaire, licence ou code d'extraction de page manuelle. - API de génération fluide :
BarcodeWriter.CreateBarcode()est une méthode de fabrique statique qui retourne un objet chaînable pour dimensionner, styliser et enregistrer dans une seule expression. - Mode d'essai avec toutes les fonctionnalités : La version d'essai Code-barres IronBarcode s'exécute à partir du même package que le produit sous licence, offrant une vitesse de lecture maximale, une prise en charge complète de la symbologie et l'ensemble des fonctionnalités. Les données générées en mode d'essai comportent un petit filigrane sur les bords ; Le comportement de lecture reste inchangé.
BarcodeReaderOptionspour le réglage : La vitesse de lecture, la détection multi-code-barres, le prétraitement d'image et les filtres de symbologie prévus sont configurables sans changer de produits de bibliothèque.- Objets de résultat avec métadonnées : Chaque résultat dans une collection
BarcodeResultsexposeValue,Format,PageNumber, et les données de région d'image.
Comparaison des fonctionnalités
Le tableau suivant résume les principales différences entre Spire.Barcode et IronBarcode:
| Fonction | Spire.Barcode | Code-barres IronBarcode |
|---|---|---|
| Lecture de codes-barres | Oui (Type de code-barres requis) | Oui (détection automatique) |
| génération de codes-barres | Oui | Oui |
| Détection automatique du format | Non | Oui |
| Prise en charge native des fichiers PDF | Non (nécessite Spire.PDF) | Oui |
| Niveau gratuit | FreeSpire.Barcode (restreint) | Mode d'essai (fonctionnalités complètes) |
| Nombre de symboles | ~38 (commercial) | 50 ans et plus |
| Modèle de licence | Tarifs par utilisateur et abonnement | Perpétuel avec support optionnel |
Comparaison détaillée des fonctionnalités
| Fonction | Spire.Barcode | Code-barres IronBarcode |
|---|---|---|
| En lisant | ||
| Détection automatique du format | Non | Oui |
| Type de code-barres requis | Oui | Non |
| Métadonnées de format de retour | Non | Oui |
| Plusieurs codes-barres par image | Oui | Oui |
| Contrôle de la vitesse de lecture | Non | Oui (BarcodeReaderOptions) |
| Correction d'erreurs assistée par l'apprentissage automatique | Non | Oui |
| Génération | ||
| Modèle d'API | Objet Paramètres + générateur | Usine statique avec chaîne fluide |
| Code QR avec logo personnalisé | Niveau commercial uniquement | Tous les niveaux |
| Formats de sortie | Image (PNG, JPEG, BMP) | PNG, JPEG, BMP, SVG, HTML, flux |
| Enchaînement fluide | Non | Oui |
| Prise en charge des fichiers PDF | ||
| Lire les codes-barres à partir d'un PDF | Nécessite Spire.PDF | Natif, aucun package supplémentaire |
| Numéro de page dans le résultat | Suivi manuel | Oui |
| Licence supplémentaire requise | Oui (Spire.PDF) | Non |
| Plateforme | ||
| .NET Framework | Oui | Oui |
| .NET Core / .NET 5+ | Oui | Oui |
| Docker / Linux | Oui | Oui |
| Symbologies | ||
| 1D (Code 128, Code 39, EAN, UPC) | Oui | Oui |
| 2D (QR, DataMatrix, PDF417) | Oui | Oui |
| Nombre total de symboles | ~38 (commercial) | 50 ans et plus |
| Licence | ||
| Niveau gratuit | FreeSpire.Barcode (filigrané, dégradé) | Mode d'essai (pleine vitesse, petit filigrane) |
| Inscription requise pour le niveau gratuit | Oui | Non |
| Modèle de licence | Licence perpétuelle par utilisateur + abonnement | Perpétuel avec renouvellement optionnel |
| point d'entrée en matière de prix | 999 $/an (Abonnement site) | 749 $ (Lite, perpétuel) |
Lecture de codes-barres
Approche Spire.Barcode
L'BarcodeScanner.Scan() de Spire.Barcode nécessite un paramètre BarCodeType à chaque appel. L'appel à type unique est approprié lorsque le format est connu et garanti :
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim results As String() = scanner.Scan("barcode.png", BarCodeType.Code128)
For Each value As String In results
Console.WriteLine(value)
Next
Lorsque le format est inconnu à l'avance, la seule approche possible consiste à parcourir les types candidats. Chaque itération correspond à une analyse complète, et tout format absent de la liste est ignoré sans notification. Le résultat est une string[] qui ne contient pas d'informations de type, donc le routage en aval basé sur le format nécessite une gestion d'état supplémentaire par l'appelant.
Approche IronBarcode
L'BarcodeReader.Read() d'IronBarcode ne nécessite pas de paramètre de type. La bibliothèque détecte automatiquement le format pour toutes les symbologies prises en charge, en une seule passe. La lecture des codes-barres à partir d'images se résume à un seul appel de méthode, quel que soit le nombre de formats différents que peut contenir la source :
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
Imports IronBarCode
' IronBarcode: automatic format detection
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Format}: {result.Value}")
Next
Chaque objet résultat inclut Format, Value, et des métadonnées positionnelles. Le routage en aval basé sur le format ne nécessite aucun état supplémentaire : le type est présent dans le résultat lui-même.
Limitations du niveau gratuit
Spire.Barcode Niveau gratuit
FreeSpire.Barcode applique un grand filigrane d'évaluation aux images de codes-barres générées. Le filigrane recouvre le code-barres de telle sorte qu'il le rend inutilisable pour la production et empêche toute évaluation pertinente de la qualité de la génération. Les performances de numérisation sont intentionnellement dégradées dans la version gratuite, ce qui signifie que les mesures de débit effectuées lors de l'évaluation ne représentent pas les performances commerciales de Spire.Barcode. Le package gratuit nécessite également une clé d'enregistrement obtenue auprès d'E-iceblue pour que les boîtes de dialogue d'avertissement soient supprimées lors de l'exécution. L'ensemble de symboles disponibles dans la version gratuite est un sous-ensemble de l'offre commerciale. Ces restrictions signifient collectivement qu'une évaluation basée sur FreeSpire.Barcode ne représente pas fidèlement les performances du produit commercial.
Mode d'essai IronBarcode
La version d'essai d'IronBarcode est le package sous licence utilisé sans clé de licence. La lecture s'effectue à pleine vitesse avec une prise en charge complète de la symbologie et sans restrictions comportementales. Les options de vitesse et de précision de lecture fonctionnent de manière identique en mode d'essai et en mode licence. Les codes-barres générés en mode d'essai comportent un petit filigrane sur le bord de l'image ; Il ne masque pas le code-barres lui-même. Le comportement mesuré lors d'une évaluation Code-barres IronBarcode est celui qui est déployé en production.
| Aspect | FreeSpire.Barcode | Essai Code-barres IronBarcode |
|---|---|---|
| Filigranes sur le résultat généré | Grand format, couvre le code-barres | Petit, bord de l'image seulement |
| performance de lecture | Dégradé intentionnellement | Pleine vitesse |
| Support de la symbologie | Sous-ensemble limité de l'édition payante | Ensemble complet (plus de 50 types) |
| Inscription requise | Oui (clé gratuite d'E-iceblue) | Non |
| Fonctionnalités disponibles | Sous-ensemble limité | Ensemble complet de fonctionnalités |
| limite de temps | None | 30 jours |
Prise en charge des codes-barres PDF
Approche Spire.Barcode
Spire.Barcode ne possède pas de fonctionnalité native de lecture de fichiers PDF. Pour extraire des codes-barres d'un fichier PDF, un développeur doit installer le package Spire.PDF séparé, acheter une licence Spire.PDF distincte et écrire un code de parcours de page manuel et d'extraction d'image avant de pouvoir commencer à scanner les codes-barres :
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
Imports Spire.Pdf
Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")
Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
Dim images = page.ExtractImages()
For Each image In images
' BarCodeType is still required for each scan call
Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
Next
Next
Ce modèle nécessite deux packages NuGet , deux contrats de licence et du code de gestion de pages écrit par les développeurs. Si les codes-barres sont intégrés dans un contenu vectoriel plutôt que dans des images raster au sein du PDF, la méthode d'extraction d'images risque de ne pas les détecter du tout.
Approche IronBarcode
IronBarcode gère les fichiers PDF nativement, sans aucune dépendance supplémentaire. La lecture des codes-barres à partir des documents PDF est un appel de méthode unique utilisant la même API BarcodeReader.Read() utilisée pour les fichiers image. Les numéros de page sont inclus dans chaque objet de résultat :
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
Imports IronBarcode
' IronBarcode: native PDF reading from the same Read() method
Dim results = BarcodeReader.Read("document.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}")
Next
Aucune extraction manuelle de pages, aucun paquetage secondaire et aucun achat de licence supplémentaire ne sont requis.
API de génération
Approche Spire.Barcode
Le modèle de génération de Spire.Barcode est centré sur un objet de configuration BarcodeSettings mutable. Un développeur instancie les paramètres, assigne les propriétés individuellement, passe l'objet de paramètres à un BarCodeGenerator, puis appelle GenerateImage():
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
Imports Spire.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging
Dim settings As New BarcodeSettings()
settings.Type = BarCodeType.Code128
settings.Data = "12345678"
settings.ShowText = True
settings.TextMargin = 5
settings.BarHeight = 60
settings.Unit = GraphicsUnit.Pixel
Dim generator As New BarCodeGenerator(settings)
Dim barcodeImage As Image = generator.GenerateImage()
barcodeImage.Save("barcode.png", ImageFormat.Png)
L'objet de paramètres modifiable signifie que les configurations peuvent être partagées accidentellement entre les appels lorsqu'une seule instance est réutilisée dans plusieurs opérations de génération. La classe générateur ajoute une étape d'instanciation supplémentaire qui ne comporte aucune logique de configuration propre.
Approche IronBarcode
IronBarcode utilise une méthode de fabrique statique avec chaînage fluide optionnel. Il n'existe aucun objet de configuration ni aucune instance de générateur à gérer :
// Code-barres IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
// Code-barres IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
Imports IronBarCode
' Code-barres IronBarcode generation
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("barcode.png")
' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.SaveAsPng("barcode.png")
Les codes QR avec logos personnalisés sont disponibles pour tous les niveaux de licence IronBarcode :
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-with-logo.png")
Tarification
Les tarifs publiés de Spire.Barcode couvrent les licences de site pour usage interne et les niveaux de déploiement OEM :
| Licence | Prix | Déploiement |
|---|---|---|
| Licence de site (usage interne uniquement) | $1,398 | Emplacement unique |
| Abonnement de site (mises à jour/support d'un an) | 999 $/an | Emplacement unique |
| Abonnement OEM développeur | $3 395/an | Public / cloud / Docker |
| Abonnement de site OEM | $10 187/an | Public / cloud / Docker (jusqu'à 10 développeurs) |
Seuls les niveaux OEM permettent le déploiement pour des sites web publics, Docker ou des applications cloud. Le niveau Site (non-OEM) est limité à un usage interne dans un seul emplacement géographique. Si Spire.PDF est également requis pour l'extraction des codes-barres PDF, cette licence représente un coût supplémentaire.
La licence IronBarcode utilise quatre niveaux perpétuels :
| Licence | Prix | Développeurs |
|---|---|---|
| Lite | $749 | 1 |
| Plus | $1,499 | 3 |
| Professional | $2,999 | 10 |
| Nombre illimité | $5,999 | Nombre illimité |
Tous les niveaux d'abonnement sont perpétuels avec la possibilité d'ajouter un abonnement annuel de support et de mises à jour. Une équipe de cinq développeurs sur l'abonnement Site de Spire.Barcode paie 999 $ chaque année pour les mises à jour et le support ; le niveau équivalent Code-barres IronBarcode Professionalcouvre jusqu'à dix développeurs pour un paiement unique de 2 999 $ sans renouvellement requis.
Référence de mappage d'API
| Spire.Barcode | Code-barres IronBarcode |
|---|---|
new BarcodeScanner() |
Statique BarcodeReader.Read() |
scanner.Scan(path, BarCodeType.X) |
BarcodeReader.Read(path) |
BarCodeType.Code128 (paramètre requis) |
Détection automatique ; aucun équivalent n'est nécessaire |
string[] results |
BarcodeResults collection |
results[0] (chaîne de caractères) |
results[0].Value (chaîne de caractères) |
new BarcodeSettings() |
Paramètres pour BarcodeWriter.CreateBarcode() |
settings.Type = BarCodeType.Code128 |
BarcodeEncoding.Code128 comme deuxième paramètre |
settings.Data = "value" |
Premier paramètre de CreateBarcode() |
new BarCodeGenerator(settings) |
Inutile ; static factory remplace this |
generator.GenerateImage() + image.Save() |
.SaveAsPng(path) ou .SaveAsJpeg(path) |
Spire.PDF (pour la lecture des PDF) |
Inutile ; Prise en charge native du format PDF intégrée |
Spire.License.LicenseProvider.SetLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
Quand les équipes envisagent de passer de Spire.Barcode à IronBarcode
Traitement de documents de formats mixtes
Les équipes qui commencent avec un seul format de code-barres connu constatent souvent que la diversité des formats utilisés augmente avec le temps. Une application de gestion d'entrepôt initialement conçue avec des étiquettes Code128 peut recevoir des livraisons de fournisseurs utilisant des codes DataMatrix, GS1-128 ou des codes QR. Chaque nouveau format qui entre dans le flux de travail nécessite la mise à jour du tableau candidat dans la boucle de devinette de type, le test de la logique de détection et la confirmation qu'aucun format existant n'est déplacé par l'ordre d'itération. Lorsque la diversité des formats atteint un point où les frais de maintenance de cette boucle deviennent un coût de développement récurrent, les équipes évaluent si la détection automatique permettrait d'éliminer complètement ce fardeau.
Intégration PDF
Les applications qui manipulent beaucoup de documents rencontrent souvent un moment où il est nécessaire d'extraire les codes-barres de fichiers PDF plutôt que d'images autonomes. Dans un flux de travail Spire.Barcode, cette transition nécessite l'acquisition d'une licence Spire.PDF, l'intégration d'un deuxième package et la mise en place d'une infrastructure d'itération de page et d'extraction d'images avant toute lecture de code-barres. Les équipes qui n'avaient pas anticipé cette exigence lors de l'achat initial se retrouvent à gérer deux licences de produit et deux interfaces API pour une tâche qui relève conceptuellement de la lecture de codes-barres. Découvrir que la prise en charge des fichiers PDF nécessite un achat séparé est un élément déclencheur fréquent qui incite à réévaluer le choix du produit.
Limitations de l'évaluation gratuite
Les équipes qui ont évalué FreeSpire.Barcode puis acheté la licence commerciale signalent parfois que le produit commercial se comporte différemment de ce que leur évaluation laissait présager. Ceci est intentionnel : le niveau gratuit dégrade volontairement les performances de lecture et restreint l'ensemble de symbologie, ce qui signifie que les tests de performance et de couverture de format effectués lors de l'évaluation ne sont pas transposables au déploiement commercial. Lorsqu'une équipe découvre cette anomalie après l'achat, elle recherche souvent des alternatives dont le comportement à l'essai est représentatif du comportement en production.
Réduction du nombre de produits
Les organisations qui standardisent leur pile technologique identifient parfois Spire.Barcode comme un composant d'un inventaire croissant de produits E-iceblue, chacun ayant son propre coût de licence et son propre cycle de renouvellement. Si le principal moteur de Spire.Barcode est la lecture des codes-barres au sein d'un pipeline de traitement de documents — plutôt qu'une intégration profonde avec Spire.Doc ou Spire.XLS — les équipes évaluent si une bibliothèque de codes-barres unique et autonome permettrait de réduire à la fois la complexité des licences et la surface d'assistance.
Considérations courantes en matière de migration
Suppression du paramètre BarCodeType
Chaque appel scanner.Scan() dans une base de code Spire.Barcode transporte un argument BarCodeType. Remplacer ces appels par BarcodeReader.Read() supprime complètement le paramètre de type. Les boucles de supposition de type — les blocs foreach qui itèrent à travers les valeurs candidates BarCodeType — peuvent être supprimées en totalité; un seul appel BarcodeReader.Read() remplace toute la boucle.
Mise à jour du type de retour
L'Scan() de Spire.Barcode retourne string[]. Code-barres IronBarcode returns a BarcodeResults collection. Les sites d'appel qui assignent à string[] ou passent des résultats à des méthodes attendant ce type nécessitent une mise à jour. L'extraction de valeurs sous forme de tableau utilise .Select(r => r.Value).ToArray(); l'accès au premier résultat utilise .First()?.Value.
Suppression du package Spire.PDF
Si Spire.PDF a été installé uniquement pour prendre en charge l'extraction de codes-barres à partir de fichiers PDF, il peut être supprimé après la migration vers IronBarcode. Toutes les importations using Spire.Pdf; et les blocs de parcours de page manuels sont remplacés par un seul appel BarcodeReader.Read("file.pdf"). Si Spire.PDF est utilisé pour d'autres opérations de document au-delà de l'extraction de codes-barres, il doit être conservé et seuls les parcours de code liés aux codes-barres doivent être remplacés.
Modifications de l'espace de nommage
Remplacez using Spire.Barcode; par using IronBarCode;. L'énumération BarCodeType est remplacée par BarcodeEncoding pour la génération et ne nécessite pas d'équivalent pour la lecture. L'initialisation de la licence passe de Spire.License.LicenseProvider.SetLicenseKey() à une unique affectation de propriété IronBarCode.License.LicenseKey au démarrage de l'application.
Fonctionnalités supplémentaires IronBarcode
Les fonctionnalités suivantes Code-barres IronBarcode n'ont pas été abordées dans les comparaisons ci-dessus :
- Lecture par lots d'images :
BarcodeReader.Read()accepte des tableaux de chemins de fichiers, des objetsStream, et des instancesBitmap, permettant le traitement par lots sans boucle manuelle sur la collection d'entrée. - Options de vitesse de lecture de code-barres : La vitesse de lecture, la détection multi-code-barres, les candidats maximums, et le prétraitement d'amélioration d'image sont configurables via un seul objet d'options passé à
Read(). - Sortie SVG et HTML :
BarcodeWriter.CreateBarcode()prend en charge.SaveAsSvg()et.SaveAsHtmlFile()en plus des formats d'image matricielle, permettant une sortie de code-barres intégrable au web. - QR code avec logo :
QRCodeWriter.CreateQrCode()prend en chargeAddBrandLogo()à tous les niveaux de licence, permettant l'intégration d'une image personnalisée au centre du QR code sans affecter la fiabilité du scan à des niveaux de correction d'erreur appropriés. - Sortie de flux et de tableau d'octets : Les codes-barres générés peuvent être exportés sous forme de
Streamoubyte[]pour un stockage direct ou une écriture de réponse HTTP sans fichier intermédiaire. - GS1-128 et symbologies structurées : Code-barres IronBarcode inclut la prise en charge des symbologies GS1 structurées au-delà de ce qui est disponible dans le niveau commercial Spire.Barcode.
Compatibilité .NET et préparation à l'avenir
IronBarcode prend en charge .NET Framework4.6.2 et ultérieur, .NET Core 3.1, et les versions de .NET actuelles. La bibliothèque est testée sur Windows, Linux, et macOS, et fonctionne dans des conteneurs Docker sans configuration de dépendance native supplémentaire. Spire.Barcode prend également en charge le déploiement .NET multiplateforme, bien que ses configurations Linux et Docker puissent nécessiter une configuration supplémentaire de bibliothèques natives en fonction de la version utilisée. Le rythme de publication régulier d'IronBarcode garantit l'intégration des nouvelles fonctionnalités du langage C# et des améliorations du runtime .NET , parallèlement aux mises à jour de compatibilité de la plateforme.
Conclusion
Spire.Barcode et Code-barres IronBarcode abordent le problème de la lecture des codes-barres sous des angles fondamentalement différents. Spire.Barcode impose à l'appelant la connaissance du format : chaque opération de numérisation exige que le développeur déclare la symbologie à l'avance, ce qui constitue une contrainte acceptable dans les flux de travail à format fermé et une charge de maintenance dans ceux à format ouvert. Code-barres IronBarcode intègre la détection de format dans la bibliothèque, sans nécessiter de paramètre de type, et renvoie le format détecté dans le résultat.
Spire.Barcode est un choix judicieux pour les applications qui traitent un seul format de code-barres garanti, en particulier lorsque l'équipe a déjà investi dans l'écosystème de produits E-iceblue. Le modèle de génération d'objets de paramètres est familier aux développeurs qui préfèrent une configuration explicite, et la licence commerciale est compétitive pour les projets à développeur unique. Les équipes qui peuvent garantir BarCodeType.Code128 à chaque appel ne paient aucun coût pratique pour le paramètre de type obligatoire.
IronBarcode est mieux adapté aux applications où la diversité des formats est imprévisible ou croissante, où l'extraction de codes-barres PDF est une exigence primordiale et où la précision de l'évaluation est importante. L'essai se déroule à pleine vitesse de production avec l'ensemble complet de symbologie, ce qui rend les tests de performance et de couverture de format effectués pendant l'évaluation directement applicables au déploiement en production. La prise en charge native du format PDF élimine le besoin d'une bibliothèque secondaire et les frais de licence associés. Pour les équipes qui envisagent Code-barres IronBarcode comme alternative à Spire.Barcode, la présentation des alternatives à Spire.Barcode fournit un contexte supplémentaire sur la comparaison.
La décision repose en définitive sur la prévisibilité du format et la portée du flux de travail. Un système d'entrepôt utilisant une norme d'étiquetage Code128 fixe et ne disposant pas de documents sources PDF n'a aucune raison pratique de privilégier la détection automatique d'IronBarcode. Un pipeline de traitement de documents qui ingère des codes-barres provenant de fournisseurs externes, gère des symbologies mixtes et lit des pièces jointes PDF constatera que le paramètre de type obligatoire et l'exigence de deux bibliothèques PDF représentent des coûts de maintenance continus Code-barres IronBarcode élimine.
Questions Fréquemment Posées
Qu'est-ce que Spire.BarCode ?
Spire.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 Spire.Barcode et IronBarcode ?
IronBarcode utilise une API statique, sans état, ne nécessitant aucune gestion d'instance, tandis que Spire.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 Spire.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 Spire.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 à Spire.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 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 l'achat, contrairement à Spire.Barcode ?
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 Spire.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 Spire.Barcode vers IronBarcode ?
La migration de Spire.Barcode vers IronBarcode implique principalement le remplacement des appels d'API basés sur les instances par les méthodes statiques d'IronBarcode, la suppression des modèles 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().

