IRONSOFTWAREHOME
VIDÉOS

Passer de Neodynamic Barcode à IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 août 2026

Ce guide fournit un chemin de migration complet de Neodynamic.SDK.Barcode et Neodynamic.SDK.BarcodeReader vers IronBarcode. Il couvre la suppression des deux packages Neodynamic, le remplacement de la configuration à double licence par une clé unique, la traduction des appels API de génération et de lecture, et le processus d'acquisition de la capacité de lecture des codes-barres 2D qui n'était pas possible avec la suite de produits Neodynamic. Ce guide est destiné aux développeurs qui possèdent déjà du code Neodynamic et qui ont besoin d'une approche systématique, fichier par fichier, pour mener à bien la migration.

Pourquoi migrer depuis les codes-barres néodynamiques

2D Reading Gap : le kit de développement logiciel Code-barres néodynamique Professional génère des codes-barres QR Code, DataMatrix, PDF417 et Aztec. Aucun de ces formats ne peut être lu par le kit de développement logiciel (SDK) de lecture de codes-barres associé. Un projet qui génère des codes QR pour les étiquettes de produits, les conteneurs d'expédition ou le suivi de documents ne peut pas relire ces mêmes codes à l'aide du lecteur qu'il a acheté en même temps que le générateur. Code-barres IronBarcode lit et génère les codes QR, DataMatrix, PDF417, Aztec et tous les autres formats 2D pris en charge grâce à la même bibliothèque et à la même licence.

Surcharge en Double Produit : Chaque projet utilisant les SDKs Neodynamic comporte deux entrées PackageReference, deux directives using, deux blocs de licence, et deux cycles de mise à jour distincts. Ces frais généraux se répètent sur chaque machine de développeur, chaque pipeline d'intégration continue et chaque environnement de production. Le résultat mécanique de cette migration est la consolidation de deux progiciels ayant des exigences de maintenance distinctes en une seule dépendance avec une seule licence.

Le problème de la troisième bibliothèque : les équipes qui ont rencontré le manque de lecture 2D et qui ont choisi de le contourner plutôt que de migrer ont généralement ajouté une troisième bibliothèque — ZXing .NET étant le choix le plus courant — spécifiquement pour couvrir la lecture des codes QR. Cette décision troque une limitation contre une complexité différente : trois dépendances liées aux codes-barres, chacune avec ses propres contraintes de version, ses propres notes de version et son propre potentiel de conflit lors de la mise à jour du runtime .NET ou du framework dépendant. Code-barres IronBarcode remplace les trois.

Complexité des prix : Le SDK Code-barres néodynamique Professional est tarifé par développeur (Basic à partir d'environ 352 $, Ultimate à partir d'environ 705 $ via ComponentSource). Le SDK de lecteur de code-barres a un coût distinct. Un projet qui a besoin à la fois de génération et de lecture 1D doit acheter les deux, et le coût combiné évolue avec la taille de l'équipe en plus du tarif du lecteur. Un projet qui a besoin d'une lecture 2D ne peut toujours pas satisfaire cette exigence à n'importe quel prix dans la gamme de produits de Neodynamic. Code-barres IronBarcode Lite couvre la génération et la lecture — 1D et 2D — sous une seule licence. Les prix actuels sont sur la page de licence IronBarcode.

Le problème fondamental

Le problème fondamental de toute base de code utilisant les deux SDK Neodynamic pour un flux de travail complet de codes-barres est que la lecture des codes QR n'a jamais été possible :

// Before: Lecteur de codes-barres néodynamique does not support QR codes
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string ReadQrCode(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);

    // Results are always null or empty for 2D barcodes
    if (results == null || !results.Any())
    {
        throw new NotSupportedException(
            "Neodynamic Barcode Reader does not support QR codes");
    }

    return results.First().Value;
}
C#

Après la migration vers IronBarcode, la même opération devient un appel de lecture standard sans traitement spécifique au format :

// After: Code-barres IronBarcode reads QR codes with the same call used for all formats
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}
C#

Chaque espace réservé throw new NotSupportedException(...) dans une base de code qui référence la lecture de codes-barres 2D est supprimé lors de cette migration et remplacé par un appel de lecture fonctionnel.

Comparaison des fonctionnalités des codes-barres Code-barres IronBarcode et Neodynamic Barcode

FonctionCode-barres néodynamique ProfessionalLecteur de codes-barres néodynamiqueCode-barres IronBarcode
Code 128, EAN-13, UPC-A générationOuiN/AOui
Génération de codes QR, DataMatrix et PDF417OuiN/AOui
Lecture de codes-barres 1DN/AOuiOui
Lecture de code QRN/ANonOui
Lecture DataMatrixN/ANonOui
Lecture PDF417N/ANonOui
Lecture native des codes-barres PDFNonNonOui
Détection automatique du formatN/ANonOui
Packages NuGet requis111 (couvre les deux)
Clés de licence requises11 (séparé)1 (couvre tout)
Dépendance de dessin du systèmeOuiOuiNon
Prise en charge de Linux/DockerLimitéLimitéOui
Prise en charge de .NET 8 et .NET 9OuiLimitéOui
lecture par lots asynchroneNonNonOui

Démarrage rapide : Migration des codes-barres Neodynamic vers IronBarcode

Étape 1 : Supprimer les deux packages néodynamiques

Les deux paquets doivent être retirés. Ils n'ont aucune dépendance commune qui affecte l'ordre de suppression :

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

Vérifiez que les deux entrées ont disparu du fichier .csproj avant de continuer.

Étape 2 : Ajouter un IronBarcode

dotnet add package IronBarcode
SHELL

Étape 3 : Remplacer la configuration de la double licence

Supprimez les deux blocs de licences Neodynamic et remplacez-les par une seule attribution de clé Code-barres IronBarcode . Cette affectation se fait une fois au démarrage de l'application — dans Program.cs, Startup.cs, ou la racine de composition de l'application :

// Before: two license blocks, two products
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;

BarcodeProfessional.LicenseOwner = "Your Company";
BarcodeProfessional.LicenseKey = "GEN-LICENSE-KEY";

Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Your Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-LICENSE-KEY";
// After: one key covers generation and reading across all formats
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Tous les fichiers de configuration, variables d'environnement ou systèmes de stockage de secrets contenant des clés de licence Neodynamic peuvent être désactivés une fois la migration vérifiée.

Exemples de migration de code

Générer un code-barres Code 128

Approche néodynamique :

using Neodynamic.SDK.Barcode;
using System.Drawing.Imaging;

public void GenerateCode128(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.Code128;
    barcode.BarcodeUnit = BarcodeUnit.Pixel;

    System.Drawing.Image image = barcode.GetBarcodeImage();
    image.Save(outputPath, ImageFormat.Png);
}

Approche IronBarcode :

using IronBarCode;

public void GenerateCode128(string data, string outputPath)
{
    BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .SaveAsPng(outputPath);
}

L'importation System.Drawing.Imaging n'est plus nécessaire. L'instance BarcodeInfo et ses affectations de propriétés se résument à un seul appel de méthode. Pour connaître les options de dimensionnement, d'annotation et de format de sortie, consultez le guide de création de codes-barres 1D .

Générer un code QR

Approche néodynamique :

using Neodynamic.SDK.Barcode;

public void GenerateQrCode(string data, string outputPath)
{
    var barcode = new BarcodeProfessional();
    barcode.Code = data;
    barcode.Symbology = Symbology.QRCode;
    barcode.QRCodeECL = QRCodeErrorCorrectionLevel.H;

    barcode.GetBarcodeImage().Save(outputPath, System.Drawing.Imaging.ImageFormat.Png);
}

Approche IronBarcode :

using IronBarCode;

public void GenerateQrCode(string data, string outputPath)
{
    QRCodeWriter.CreateQrCode(data, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
        .SaveAsPng(outputPath);
}

La traduction de génération ne modifie que l'interface de l'API. La principale différence introduite par cette migration est que la même application peut désormais lire les codes QR qu'elle génère, grâce à la même bibliothèque Code-barres IronBarcode et à la même licence. Pour un traitement complet de la création de codes-barres 2D, consultez le guide de création de codes-barres 2D .

Lecture des codes-barres 1D

Approche néodynamique :

using Neodynamic.SDK.BarcodeReader;
using System.Drawing;

public string[] Read1DBarcodes(string imagePath)
{
    using var bitmap = new Bitmap(imagePath);
    var reader = new BarcodeReader();
    var results = reader.Read(bitmap);
    return results?.Select(r => r.Value).ToArray() ?? Array.Empty<string>();
}

Approche IronBarcode :

using IronBarCode;

public string[] Read1DBarcodes(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.Select(r => r.Value).ToArray();
}

La construction Bitmap et l'importation System.Drawing sont supprimées. Code-barres IronBarcode accepte directement le chemin du fichier. Le nom de propriété result.Value est le même dans les deux API, donc le code en aval qui traite les valeurs retournées ne change pas. Pour les options de lecture et de prétraitement d'images de codes-barres multiples, consultez le guide de lecture des codes-barres à partir d'images .

Lecture des codes QR (auparavant impossible)

Approche néodynamique :

// This method could not be implemented with Neodynamic Barcode Reader
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Neodynamic Barcode Reader does not support QR codes");
}

Approche IronBarcode :

using IronBarCode;

public string ReadQrCode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value;
}

Chaque espace réservé throw new NotSupportedException(...) qui référence la lecture de codes-barres 2D devient un appel de lecture standard. Le corps de la méthode passe d'une exception levée à une implémentation fonctionnelle. Aucune manipulation particulière n'est requise pour les codes QR ; Code-barres IronBarcode identifie automatiquement le format.

Lecture des codes-barres dans les documents PDF (Nouvelle fonctionnalité)

Approche néodynamique :

// Neodynamic Reader cannot read barcodes from PDF files directly
// An image extraction step using a separate library was required before reading
// Non direct equivalent exists
C#

Approche IronBarcode :

using IronBarCode;

public void ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);

    foreach (var result in results)
    {
        Console.WriteLine($"Value: {result.Value} | Format: {result.Format} | Page: {result.PageNumber}");
    }
}

IronBarcode lit les codes-barres directement sur les documents PDF, sur toutes les pages. Le numéro de page sur lequel chaque code-barres a été trouvé est indiqué dans le résultat. Cette fonctionnalité ne nécessite aucune bibliothèque supplémentaire ni étape intermédiaire d'extraction d'image.

Référence de correspondance entre l'API Neodynamic Barcode et IronBarcode

API néodynamiqueÉquivalent Code-barres IronBarcodeNotes
BarcodeInfo.LicenseOwner = "..."IronBarCode.License.LicenseKey = "key"Fusionné en une seule clé
BarcodeInfo.LicenseKey = "..."(part of single key above)Aucun champ propriétaire séparé
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner(removed)Non requis
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey(removed)Non requis
new BarcodeInfo()BarcodeWriter.CreateBarcode(data, encoding)Statique, aucune instance
barcode.Value = dataPremier paramètre de CreateBarcodeAdopté lors de la construction
barcode.Symbology = Symbology.Code128BarcodeEncoding.Code128Deuxième paramètre
barcode.Symbology = Symbology.QRCodeBarcodeEncoding.QRCodeL'aller-retour complet est désormais pris en charge.
barcode.QRCodeECL = QRCodeErrorCorrectionLevel.HQRCodeWriter.QrErrorCorrectionLevel.HighestPoint d'entrée de classe différent
barcode.GetImage().Save(path, ImageFormat.Png).SaveAsPng(path)Fluent, sans énumération ImageFormat
BarcodeReader.Read(bitmap)BarcodeReader.Read(imagePath)Le chemin du fichier remplace l'image bitmap.
result.Valueresult.ValueMême nom de propriété
Symbology.DataMatrixBarcodeEncoding.DataMatrixGénération seulement → génération et lecture
throw new NotSupportedException(...) pour la lecture 2DBarcodeReader.Read(imagePath)Remplacer par une implémentation fonctionnelle

Problèmes de migration courants et solutions

Problème 1 : Commande de retrait de deux colis

Problème : Le fait pour les développeurs de supprimer un seul package Neodynamic tout en laissant l'autre provoque des erreurs de compilation car les deux SDK ne partagent aucun type, mais certains fichiers sources peuvent importer les deux espaces de noms dans le même fichier.

Solution : Supprimez les deux packages avant d'apporter des modifications au code source. Après les avoir tous deux supprimés, recherchez toutes les directives using Neodynamic.SDK.Barcode et using Neodynamic.SDK.BarcodeReader et éliminez-les ensemble :

dotnet remove package Neodynamic.SDK.Barcode
dotnet remove package Neodynamic.SDK.BarcodeReader
SHELL

Ensuite, effectuez un audit avec :

grep -r "Neodynamic.SDK" --include="*.cs" .
SHELL

Problème 2 : Nettoyage de la configuration des licences doubles

Problème : Les deux blocs de licence Neodynamic apparaissent souvent dans des emplacements différents — un dans la classe de démarrage de l'application et un dans un initialiseur de service. Si un seul bloc est supprimé, le code restant fait référence à un espace de noms qui n'existe plus et ne peut pas être compilé.

Solution : Recherchez les quatre affectations de propriétés de licence Neodynamic et supprimez-les ensemble avant d'ajouter la clé IronBarcode :

grep -r "LicenseOwner\|LicenseKey" --include="*.cs" .
SHELL

Remplacez les quatre lignes par une seule affectation :

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

Problème 3 : Suppression de NotSupportedException des blocs catch

Problème : Certaines bases de code qui utilisaient le Reader Neodynamic ont ajouté des blocs catch (NotSupportedException) spécifiquement pour gérer l'échec silencieux des lectures de codes-barres 2D. Ces blocs de réception doivent être supprimés en même temps que le code de lancement ; sinon, la clause catch réfère un chemin de code qui ne peut plus se produire.

Solution : Recherchez NotSupportedException dans les fichiers liés aux codes-barres et examinez chaque occurrence. Si l'exception a été levée en réponse à une tentative de lecture au format 2D, supprimez à la fois le bloc throw et le bloc catch :

grep -r "NotSupportedException" --include="*.cs" .
SHELL

Remplacez le corps de méthode lancée par BarcodeReader.Read(imagePath) et supprimez le bloc catch correspondant chez tout appelant.

Liste de contrôle de migration des codes-barres néodynamiques

Pré-migration

  • Recherchez toutes les références de package Neodynamic : grep -r "Neodynamic.SDK" --include="*.csproj" .
  • Recherchez toutes les directives using Neodynamic : grep -r "using Neodynamic" --include="*.cs" .
  • Rechercher les emplacements de configuration des licences : grep -r &quot;LicenseOwner\|LicenseKey&quot; --include=&quot;*.cs&quot; .
  • Recherchez tous les sites d'instanciation BarcodeInfo : grep -r "new BarcodeInfo\(\)" --include="*.cs" .
  • Recherchez tous les appels de lecture Neodynamic : grep -r "BarcodeReader.Read" --include="*.cs" .
  • Recherchez toutes les utilisations NotSupportedException dans les chemins de codes-barres : grep -r "NotSupportedException" --include="*.cs" .
  • Identifiez toute bibliothèque tierce (ZXing .NET ou similaire) ajoutée spécifiquement pour pallier le manque de prise en charge de la lecture 2D ; celle-ci pourra être supprimée après la migration.
  • Enregistrez toutes les clés de licence Neodynamic afin qu'elles puissent être désactivées dans les systèmes de sécurité après vérification.

Tâches de mise à jour du code

  1. Exécutez dotnet remove package Neodynamic.SDK.Barcode
  2. Exécutez dotnet remove package Neodynamic.SDK.BarcodeReader
  3. Exécutez dotnet add package IronBarcode
  4. Supprimez toutes les directives using Neodynamic.SDK.Barcode et using Neodynamic.SDK.BarcodeReader
  5. Ajoutez using IronBarCode dans tous les fichiers effectuant des opérations sur les codes-barres
  6. Supprimez les deux blocs de configuration de licence Neodynamic
  7. Ajoutez IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY" une fois lors du démarrage de l'application
  8. Remplacez new BarcodeInfo() + les affectations de propriétés + barcode.GetImage().Save(...) par BarcodeWriter.CreateBarcode(data, encoding).SaveAsPng(path)
  9. Remplacez les motifs QRCodeWriter en conséquence en utilisant QRCodeWriter.CreateQrCode()
  10. Remplacez les appels BarcodeReader.Read(bitmap) en supprimant la construction new Bitmap(imagePath) et en passant le chemin du fichier directement à BarcodeReader.Read(imagePath)
  11. Retirez tous les espaces réservés throw new NotSupportedException(...) pour la lecture 2D et remplacez-les par BarcodeReader.Read(imagePath)
  12. Supprimez les blocs catch (NotSupportedException) correspondants chez les appelants
  13. Supprimez toute bibliothèque tierce ajoutée uniquement pour combler le manque de lecture Neodynamic 2D.

Test de post-migration

  • Vérifiez que la génération du code-barres Code 128 produit un résultat correspondant aux dimensions et aux paramètres DPI précédents.
  • Vérifier que la génération du code QR produit une sortie scannable
  • Vérifier que la lecture des codes-barres 1D renvoie les mêmes valeurs que l'implémentation précédente du lecteur néodynamique
  • Vérifiez que la lecture du QR Code réussit sur les images qui jetaient auparavant NotSupportedException
  • Vérifiez que la lecture des fichiers DataMatrix et PDF417 réussit si ces formats apparaissent dans les données d'entrée de l'application.
  • Tester la lecture des codes-barres PDF si l'application traite les documents PDF
  • Vérifiez que toutes les références à la clé de licence Neodynamic ont été supprimées des fichiers de configuration et des variables d'environnement.
  • Vérifiez que la bibliothèque 2D tierce (le cas échéant) a été entièrement supprimée et qu'aucune importation restante ne la référence.

Principaux avantages de la migration vers IronBarcode

Capacité de lecture-écriture unifiée : après la migration, chaque symbologie générée par Code-barres IronBarcode peut également être relue via la même bibliothèque. L'asymétrie entre le générateur et le lecteur de Neodynamic — où les codes QR, DataMatrix, PDF417 et Aztec pouvaient être produits mais pas utilisés — est éliminée. Les applications qui nécessitaient auparavant une solution de contournement ou une troisième bibliothèque pour la lecture 2D bénéficient désormais de cette fonctionnalité sans aucun travail d'intégration supplémentaire.

Administration de licence unique : un package NuGet , une clé de licence et un bloc de configuration remplacent deux abonnements produits distincts. Le renouvellement, la rotation des clés et la gestion des variables d'environnement deviennent deux fois moins complexes. La réduction des frais administratifs est continue et non un gain ponctuel.

Lecture native des codes-barres PDF : Code-barres IronBarcode lit directement les codes-barres des documents PDF et renvoie les métadonnées relatives au numéro de page ainsi que les valeurs des codes-barres. Les applications qui traitent les manifestes d'expédition, les documents de facturation ou les dossiers médicaux contenant des codes-barres intégrés ne nécessitent plus d'étape intermédiaire d'extraction d'image ni de bibliothèque PDF supplémentaire pour prendre en charge la lecture des codes-barres. Consultez la liste complète des formats de codes-barres pris en charge pour connaître l'ensemble des symbologies et des types de saisie couverts.

Élimination de la Dépendance de System.Drawing : Les SDKs Neodynamic dépendent de System.Drawing, ce qui nécessite une configuration de bibliothèque native supplémentaire sur Linux et dans les conteneurs Docker. Code-barres IronBarcode n'a pas de dépendance System.Drawing, ce qui signifie que la même base de code s'exécute sur Windows, Linux et dans les environnements cloud conteneurisés sans changements de configuration spécifiques à la plateforme.

Coût de licence simplifié pour une fonctionnalité complète : un projet qui nécessitait les deux SDK Neodynamic Plus qu'une troisième bibliothèque pour la lecture 2D payait pour trois dépendances afin d'accomplir ce Code-barres IronBarcode fournit sous une seule licence. Pour les projets nécessitant une génération et une lecture 2D, la migration permet de regrouper l'empreinte technique et le coût des licences en un seul produit commercial. Les informations tarifaires actuelles sont disponibles sur la page de licences IronBarcode .

Veuillez noter: Neodynamic et ZXing.NET sont des marques déposées de leurs propriétaires respectifs. Ce site n'est ni affilié à, ni approuvé par, ni sponsorisé par Neodynamic ou ZXing.NET. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise