Passer au contenu du pied de page
COMPARER à D'AUTRES COMPOSANTS

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ération BarCodeType. 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 BarcodeSettings mutable qui est passé à une instance de BarCodeGenerator, 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.PDF sé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() retourne string[], 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
$vbLabelText   $csharpLabel

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é.
  • BarcodeReaderOptions pour 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 BarcodeResults expose Value, 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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 objets Stream, et des instances Bitmap, 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 charge AddBrandLogo() à 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 Stream ou byte[] 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().

Curtis Chau
Rédacteur technique

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

Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi