IRONSOFTWAREHOME
VIDÉOS

Migration de Codeur QR vers IronBarcode

Curtis Chau
Curtis Chau
Updated: 1 août 2026

Ce guide est destiné aux équipes de développement dont les projets ont débuté avec Codeur QR et ont évolué pour nécessiter des fonctionnalités allant au-delà de la simple génération de codes QR. Codeur QR est une bibliothèque de haute qualité et bien maintenue pour son usage prévu, et la migration n'est pas un reflet de sa qualité. Il s'agit d'une réponse à des exigences — extension de format, lecture de codes-barres, intégration PDF — qui ne relèvent pas des fonctionnalités pour lesquelles Codeur QR a été conçu. Ce guide couvre l'intégralité du parcours technique de Codeur QR à IronBarcode: remplacement des packages, modifications des espaces de noms, traduction du code pour chaque modèle courant, correspondance des API et solutions aux problèmes rencontrés lors de la transition.

Pourquoi migrer depuis Codeur QR ?

Exigences de format autres que les QR codes : Codeur QR génère exclusivement des codes QR. Les projets qui s'étendent pour nécessiter des étiquettes Code 128 pour la logistique, des codes EAN-13 pour l'identification des produits de détail, Matrice de données pour la sérialisation pharmaceutique, ou PDF417pour la conformité des documents gouvernementaux doivent introduire une bibliothèque séparée pour chaque format supplémentaire. À mesure que le nombre de formats requis augmente, le nombre de packages indépendants, d'API et d'obligations de maintenance augmente également.

Exigences de lecture des codes-barres : Codeur QR ne possède pas d'API de lecture des codes-barres ; il s'agit d'une bibliothèque de génération uniquement, de par sa conception. Toute application qui doit décoder les codes QR à partir d'images entrantes, vérifier les codes-barres sur des documents numérisés ou traiter des étiquettes d'expédition doit ajouter une bibliothèque de lecture dédiée en plus de QRCoder. Cette seconde bibliothèque apporte sa propre interface API, son propre cycle de mise à jour et ses propres problèmes de compatibilité à chaque mise à niveau de .NET .

Maintenance de plusieurs bibliothèques : Le schéma d'accumulation réaliste pour un projet basé sur Codeur QR va de Codeur QR pour la génération de QR codes à une bibliothèque de codes-barres 1D pour les étiquettes d'expédition, puis à une bibliothèque de lecture pour le décodage. Gérer trois ou quatre packages indépendants implique de suivre des notes de version distinctes, de résoudre les conflits de versions lors de la mise à jour de l'un d'entre eux et de maintenir une bonne connaissance de plusieurs API au sein d'une équipe de développement. Les coûts de maintenance s'accumulent au fil du temps d'une manière qui n'est pas visible dans l'estimation d'intégration initiale.

Prise en charge des fichiers PDF : L'intégration de codes-barres dans des documents PDF ou l'extraction de codes-barres à partir de fichiers PDF entrants ne font pas partie des fonctionnalités de QRCoder. Les processus de traitement de documents — gestion des factures, génération d'étiquettes à partir de modèles PDF, rapports de conformité — se heurtent très tôt à cette limite. Une bibliothèque PDF dédiée doit être ajoutée en plus de QRCoder, ou l'architecture doit acheminer la génération de codes-barres et la génération de PDF via des sous-systèmes distincts.

Le problème fondamental

QRCoder résout efficacement le problème de la génération de QR codes. Dès qu'une exigence dépasse le cadre du QR code, le code source doit commencer à intégrer des packages supplémentaires pour combler chaque manque :

// Codeur QR handles QR generation well — but no further
using QRCoder;
using System.IO;

var generator = new QRCodeGenerator();
var qrCodeData = generator.CreateQrCode("SHIP-12345", QRCodeGenerator.ECCLevel.M);
var qrCode = new PngByteQRCode(qrCodeData);
File.WriteAllBytes("qr.png", qrCode.GetGraphic(10));

// Now the shipping team asks for Code 128 — add NetBarcode
// Now the warehouse needs to scan barcodes — add ZXing.Net
// Now a report needs a barcode in a PDF — add a PDF library
// Each addition: new namespace, new API, new maintenance cycle
C#

IronBarcode centralise la génération, la lecture et l'intégration PDF sous une seule API :

// Code-barres IronBarcode — one library covers all of the above
using IronBarCode;

// Generate QR
BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

// Generate Code 128 — same API
BarcodeWriter.CreateBarcode("SHIP-12345", BarcodeEncoding.Code128)
    .SaveAsPng("label.png");

// Read a barcode from an image — built in
var results = BarcodeReader.Read("incoming.png");
C#

Comparaison des fonctionnalités Code-barres IronBarcode et de QRCoder

FonctionCodeur QRCode-barres IronBarcode
Génération de code QROui, excellentOui
Micro QROuiNon
Code 128 / Code 39NonOui
EAN-13 / UPC-ANonOui
Matrice de donnéesNonOui
PDF417NonOui
AztèqueNonOui
Formats totaux150 ans et plus
Lecture de codes-barresNonOui — détection automatique
Extraction de codes-barres PDFNonOui
Estampillage de codes-barres PDFNonOui
Intégration du logoOuiOui
Personnalisation des couleursOuiOui
Sortie SVGOuiOui
Assistants PayloadGeneratorOuiNon — construction manuelle des cordes
Aucune dépendance externeOuiAutonome
LicenceMIT — sans restrictionCommercial — le niveau Lite couvre un seul développeur

Démarrage rapide : Migration de Codeur QR vers IronBarcode

Étape 1 : Remplacer le package NuGet

Supprimer Codeur QR du projet :

dotnet remove package QRCoder
SHELL

Installer IronBarcode:

dotnet add package IronBarcode
SHELL

Si le projet utilisait ZXing .NET en parallèle de Codeur QR pour la lecture des codes-barres, ce package peut également être supprimé à ce stade :

dotnet remove package ZXing.Net
SHELL

Étape 2 : Mise à jour des espaces de noms

Remplacez l'importation de l'espace de noms Codeur QR par l'espace de noms IronBarcode :

// Before (QRCoder)
using QRCoder;

// After (IronBarcode)
using IronBarCode;

Étape 3 : initialisation de la licence

Ajoutez l'initialisation de la licence au démarrage de l'application — Program.cs, Startup.cs, ou un constructeur statique :

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

Une clé d'essai gratuite est disponible sans inscription. Les déploiements en production nécessitent l'achat d'une licence.

Exemples de migration de code

Génération de code QR de base

Le motif Codeur QR le plus courant nécessite trois objets : une instance de QRCodeGenerator, un objet intermédiaire QRCodeData et une classe de rendu telle que PngByteQRCode. Dans IronBarcode, un simple appel statique remplace cette chaîne.

Approche par codeur QR :

using QRCoder;

public class BarcodeService
{
    private readonly QRCodeGenerator _generator = new QRCodeGenerator();

    public byte[] GenerateQR(string content)
    {
        var qrCodeData = _generator.CreateQrCode(content, QRCodeGenerator.ECCLevel.M);
        var qrCode = new PngByteQRCode(qrCodeData);
        return qrCode.GetGraphic(10); // 10px per module
    }
}

Approche IronBarcode :

using IronBarCode;

public class BarcodeService
{
    public byte[] GenerateQR(string content)
    {
        return BarcodeWriter.CreateBarcode(content, BarcodeEncoding.QRCode)
            .ResizeTo(200, 200)
            .ToPngBinaryData();
    }
}

BarcodeWriter est une classe statique — aucune instance n'est requise, et il n'y a pas d'objet de données intermédiaire. La méthode ResizeTo(width, height) remplace l'entier pixel-par-module que Codeur QR accepte dans GetGraphic. Là où Codeur QR dimensionne la sortie par le nombre de modules (par exemple, GetGraphic(10) pour une image de 10px par module), Code-barres IronBarcode prend des dimensions de pixels absolues.

Enregistrement des codes QR dans un fichier

QRCoder ne sépare les octets en mémoire de la sortie fichier qu'à l'étape du terminal — la chaîne de rendu est la même. Code-barres IronBarcode utilise différentes méthodes de terminal sur la même chaîne.

Approche par codeur QR :

using QRCoder;
using System.IO;

var generator = new QRCodeGenerator();
var qrCodeData = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
var pngBytes = new PngByteQRCode(qrCodeData).GetGraphic(10);
File.WriteAllBytes("output.png", pngBytes);

Approche IronBarcode :

using IronBarCode;

// Save directly — no intermediate byte array needed
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(300, 300)
    .SaveAsPng("output.png");

// Or obtain bytes for in-memory use
byte[] pngBytes = BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .ResizeTo(300, 300)
    .ToPngBinaryData();

La méthode SaveAsPng est un terminal qui écrit directement sur le disque. ToPngBinaryData renvoie un byte[] pour le streaming, les réponses HTTP ou le stockage dans une base de données.

Sortie SVG

Approche par codeur QR :

using QRCoder;
using System.IO;

var generator = new QRCodeGenerator();
var qrCodeData = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);
string svgContent = new SvgQRCode(qrCodeData).GetGraphic(10);
File.WriteAllText("output.svg", svgContent);

Approche IronBarcode :

using IronBarCode;

BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsImage("output.svg");

La classe de rendu SvgQRCode et son appel GetGraphic se réduisent en une seule méthode terminale SaveAsImage (passage d'une extension .svg produit une sortie SVG).

Cartographie des niveaux de correction d'erreur

QRCoder nécessite une sélection ECC explicite à chaque appel CreateQrCode en utilisant l'énum QRCodeGenerator.ECCLevel. Code-barres IronBarcode applique une valeur par défaut raisonnable lors de l'utilisation de BarcodeWriter.CreateBarcode, et expose un contrôle explicite via QRCodeWriter.QrErrorCorrectionLevel.

Approche par codeur QR :

using QRCoder;

var generator = new QRCodeGenerator();

// Medium — suitable for most generation without logos
var dataMedium = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.M);

// High — required when a logo will occlude part of the code
var dataHigh = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H);

Approche IronBarcode :

using IronBarCode;

// Default — equivalent to Medium, applied automatically
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("default-ecc.png");

// Explicit level via QRCodeWriter
var qr = QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest
);
qr.SaveAsPng("high-ecc.png");

La correspondance des niveaux est : ECCLevel.LLow, ECCLevel.MMedium, ECCLevel.QHigh, ECCLevel.HHighest.

Les deux bibliothèques prennent en charge l'intégration de logos dans les codes QR. Codeur QR redirige ceci à travers la classe de rendu QRCode (pas PngByteQRCode) avec des paramètres System.Drawing.Bitmap. Code-barres IronBarcode fournit QRCodeWriter.CreateQrCodeWithLogo() en tant que méthode de fabrication dédiée acceptant les chemins de fichier pour l'URL et le logo. Le guide de personnalisation du style de code QR couvre les options de taille, de positionnement et de combinaison de couleurs du logo.

Approche par codeur QR :

using QRCoder;
using System.Drawing;
using System.Drawing.Imaging;

var generator = new QRCodeGenerator();
// ECCLevel.H is required — the logo occludes part of the code
var qrCodeData = generator.CreateQrCode("https://example.com", QRCodeGenerator.ECCLevel.H);

var qrCode = new QRCode(qrCodeData);
var logoBitmap = new Bitmap("logo.png");
var qrBitmap = qrCode.GetGraphic(10, Color.Black, Color.White, logoBitmap);
qrBitmap.Save("qr-logo.png", ImageFormat.Png);

Approche IronBarcode :

using IronBarCode;

QRCodeWriter.CreateQrCodeWithLogo("https://example.com", "logo.png", 500)
    .SaveAsPng("qr-logo.png");

La dépendance System.Drawing.Bitmap est supprimée — CreateQrCodeWithLogo accepte des chaînes de chemins de fichier pour le contenu et l'image du logo. La correction d'erreur est automatiquement définie au niveau requis pour l'incorporation de logo ; aucune configuration ECC explicite n'est nécessaire.

Générateur de charge utile. Migration WiFi

Le PayloadGenerator.WiFi de Codeur QR formate la chaîne de charge utile standard QR WiFi. Le format de sortie est une norme publique (WIFI:T:{auth};S:{ssid};P:{password};;) définie par la spécification du code QR. Lors de la migration, ces chaînes de caractères peuvent être construites directement.

Approche par codeur QR :

using QRCoder;

var wifi = new PayloadGenerator.WiFi(
    ssid: "OfficeNetwork",
    password: "SecurePass123",
    authenticationMode: PayloadGenerator.WiFi.Authentication.WPA
);
// wifi.ToString() produces: WIFI:T:WPA;S:OfficeNetwork;P:SecurePass123;;

var generator = new QRCodeGenerator();
var qrData = generator.CreateQrCode(wifi.ToString(), QRCodeGenerator.ECCLevel.M);
var qrCode = new PngByteQRCode(qrData);
System.IO.File.WriteAllBytes("wifi.png", qrCode.GetGraphic(10));

Approche IronBarcode :

using IronBarCode;

// Construct the standard WiFi QR string directly
string wifiPayload = "WIFI:T:WPA;S:OfficeNetwork;P:SecurePass123;;";
BarcodeWriter.CreateBarcode(wifiPayload, BarcodeEncoding.QRCode)
    .ResizeTo(300, 300)
    .SaveAsPng("wifi.png");

Pour les équipes avec de nombreux types PayloadGenerator en utilisation (vCard, CalendarEvent, Geo, SMS), l'approche est la même : identifiez la chaîne formatée que chaque générateur produit avec sa sortie .ToString(), puis construisez cette chaîne directement ou à travers une petite méthode d'assistance statique.

Référence de correspondance entre l'API Codeur QR et IronBarcode

Codeur QRCode-barres IronBarcodeNotes
new QRCodeGenerator()Classe statique — aucune instanceBarcodeWriter ne nécessite pas d'instanciation
qrGenerator.CreateQrCode(data, ECCLevel.M)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)remplacement direct
new PngByteQRCode(qrCodeData)Pas nécessaireLe rendu fait partie de la chaîne fluide
qrCode.GetGraphic(20) renvoyant byte[].ToPngBinaryData()Taille via .ResizeTo(w, h)
Motif File.WriteAllBytes(path, bytes).SaveAsPng(path)Méthode terminale sur GeneratedBarcode
new SvgQRCode(qrCodeData).GetGraphic(10).SaveAsImage(path)Passez une extension .svg pour la sortie SVG
new QRCode(qrCodeData).GetGraphic(...)QRCodeWriter.CreateQrCode(data, size, level)Utilisé pour la personnalisation du logo et des couleurs
QRCodeGenerator.ECCLevel.LQRCodeWriter.QrErrorCorrectionLevel.Low
QRCodeGenerator.ECCLevel.MQRCodeWriter.QrErrorCorrectionLevel.MediumValeur par défaut si non spécifiée
QRCodeGenerator.ECCLevel.QQRCodeWriter.QrErrorCorrectionLevel.High
QRCodeGenerator.ECCLevel.HQRCodeWriter.QrErrorCorrectionLevel.HighestNécessaire pour l'intégration du logo
PayloadGenerator.WiFi(...).ToString()"WIFI:T:WPA;S:{ssid};P:{pass};;"Construisez directement une chaîne standard
PayloadGenerator.ContactData(...).ToString()"BEGIN:VCARD\n..."vCard est une norme publique
API de lecture indisponibleBarcodeReader.Read(path)Nouvelle fonctionnalité : pas de bibliothèque séparée
Format QR uniquement50+ formats via BarcodeEncoding.*Nouvelle capacité

Problèmes de migration courants et solutions

Problème 1 : Modification du format de chaîne de PayloadGenerator

QRCoder : PayloadGenerator.WiFi, PayloadGenerator.ContactData, et d'autres aides produisent automatiquement des chaînes formatées. Le code passe la sortie .ToString() de l'objet helper à CreateQrCode.

Solution : Identifiez la chaîne que chaque type PayloadGenerator produit — son format est documenté dans la spécification du code QR et est simple à reproduire. Pour le WiFi : WIFI:T:WPA;S:{ssid};P:{password};;. Pour vCard : blocs BEGIN:VCARD / END:VCARD standards. Créez des méthodes d'assistance statiques si plusieurs sites d'appel utilisent le même type de charge utile :

public static string WifiPayload(string ssid, string password, string auth = "WPA")
    => $"WIFI:T:{auth};S:{ssid};P:{password};;";

Problème 2 : Mappage des énumérations ECCLevel

QRCoder : QRCodeGenerator.ECCLevel est une énumération imbriquée avec les valeurs L, M, Q, H. C'est un paramètre requis pour chaque appel CreateQrCode.

Solution : Mappez chaque valeur à son équivalent QRCodeWriter.QrErrorCorrectionLevel lorsque vous utilisez le chemin QRCodeWriter. Lors de l'utilisation de BarcodeWriter.CreateBarcode, le niveau ECC par défaut est Medium automatiquement et ne nécessite pas de paramètre. Mettre à jour chaque site d'appel :

// Codeur QR ECCLevel.H → Code-barres IronBarcode QrErrorCorrectionLevel.Highest
var qr = QRCodeWriter.CreateQrCode(data, 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);

// Codeur QR ECCLevel.M → Code-barres IronBarcode default (no parameter needed)
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode);
C#

Problème 3 : Suppression de la classe Renderer

QRCoder : Chaque format de sortie nécessite sa propre instanciation de classe de rendu — PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, QRCode. Ces classes acceptent QRCodeData et exposent GetGraphic avec différents types de retour.

Solution : Supprimez toutes les instanciations de la classe de rendu. Code-barres IronBarcode intègre la sortie de format dans les méthodes terminales de la chaîne fluide. Remplacez new PngByteQRCode(data).GetGraphic(n) par .ToPngBinaryData() après .ResizeTo(). Remplacez new SvgQRCode(data).GetGraphic(n) par .SaveAsImage(path) (en passant une extension .svg). L'objet intermédiaire QRCodeData disparaît également — il n'est pas nécessaire dans IronBarcode.

Problème n° 4 : Suppression des codes QR PNG et dimensionnement par modules

QRCoder : PngByteQRCode.GetGraphic(int pixelsPerModule) dimensionne la sortie par le nombre de pixels par module QR. Les dimensions de l'image résultante dépendent du nombre de modules, qui varie en fonction de la longueur du contenu et du niveau ECC.

Solution : Remplacez le dimensionnement basé sur les modules par ResizeTo(int width, int height) pour obtenir des dimensions de pixels absolues. Si votre code calculait dynamiquement la taille de sortie attendue à partir du nombre de modules, passez à une taille cible fixe qui réponde à vos besoins de sortie :

// Before: GetGraphic(20) — output size varies with content
var bytes = new PngByteQRCode(qrData).GetGraphic(20);

// After: fixed 400×400 regardless of content
byte[] bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
    .ResizeTo(400, 400)
    .ToPngBinaryData();

Liste de contrôle de migration du codeur QR

Tâches préalables à la migration

Avant d'apporter des modifications, vérifiez le code source pour toute utilisation de QRCoder :

# Find all Codeur QR namespace imports
grep -r "using QRCoder" --include="*.cs" .

# Find all generator and renderer instantiations
grep -r "QRCodeGenerator\|PngByteQRCode\|SvgQRCode\|AsciiQRCode\|QRCode\b" --include="*.cs" .

# Find all PayloadGenerator usages
grep -r "PayloadGenerator\." --include="*.cs" .

# Find ECCLevel references
grep -r "ECCLevel\." --include="*.cs" .

# Find ZXing.Net usage to remove at the same time
grep -r "using ZXing" --include="*.cs" .
SHELL
  • Documentez tous les types PayloadGenerator en usage et notez leurs formats de sortie de chaîne.
  • Notez toutes les valeurs de niveau ECC utilisées et leurs sites d'appel
  • Identifiez tout code de lecture ZXing .NET associé à Codeur QR pour le décodage ; celui-ci peut être remplacé simultanément.
  • Obtenez une clé de licence Code-barres IronBarcode (des clés d'essai sont disponibles sans inscription)

Tâches de mise à jour du code

  1. Exécutez dotnet remove package QRCoder
  2. Exécutez dotnet remove package ZXing.Net s'il a été utilisé uniquement pour la lecture avec QRCoder
  3. Exécutez dotnet add package IronBarcode
  4. Ajoutez IronBarCode.License.LicenseKey = "YOUR-KEY"; au démarrage de l'application
  5. Remplacez toutes les importations using QRCoder; par using IronBarCode;
  6. Supprimez toutes les déclarations d'instance new QRCodeGenerator()BarcodeWriter est statique
  7. Remplacez tous les motifs de chaîne generator.CreateQrCode(data, ECCLevel.X) + renderer par des chaînes BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)
  8. Remplacez les appels .GetGraphic(n) par .ToPngBinaryData() et ajoutez .ResizeTo(w, h) avant le terminal
  9. Remplacez les motifs de sauvegarde File.WriteAllBytes(path, bytes) par des méthodes terminales .SaveAsPng(path)
  10. Remplacez new SvgQRCode(data).GetGraphic(n) par .SaveAsImage(path) (passez une extension .svg)
  11. Remplacez PayloadGenerator.WiFi(...) et d'autres instanciations de helpers par des chaînes de format direct
  12. Mappez chaque valeur QRCodeGenerator.ECCLevel à son équivalent QRCodeWriter.QrErrorCorrectionLevel
  13. Remplacez tous les appels BarcodeReaderGeneric.Decode(bitmap) de ZXing.Net par BarcodeReader.Read(path)
  14. Pour l'intégration du logo, remplacez new QRCode(data).GetGraphic(n, ..., logoBitmap) par QRCodeWriter.CreateQrCodeWithLogo(data, logoPath, size)

Test de post-migration

  • Scannez tous les codes QR générés avec au moins deux applications de lecture de codes QR indépendantes pour vérifier leur lisibilité.
  • Vérifiez que les codes QR avec logo intégré se scannent correctement — confirmez que le niveau de correction des erreurs est Highest
  • Comparer le rendu visuel des codes générés avec des exemples antérieurs à la migration lorsque la cohérence de l'apparence est requise.
  • Testez tous les remplacements PayloadGenerator — confirmez que les chaînes de charge WiFi, vCard, et autres se déchiffrent correctement sur les appareils cibles
  • Si ZXing.Net a également été supprimé, vérifiez que tous les chemins de lecture des codes-barres fonctionnent via BarcodeReader.Read
  • Exécutez l'application dans un environnement propre pour confirmer qu'aucune référence résiduelle à Codeur QR ou ZXing .NET ne provoque d'échecs de liaison.
  • Vérifier que la clé de licence Code-barres IronBarcode est correctement chargée dans les environnements de production et de préproduction.

Principaux avantages de la migration vers IronBarcode

Une seule API pour toutes les opérations de code-barres : Après la migration, chaque tâche de code-barres — génération, lecture, estampillage PDF — utilise le même espace de noms IronBarCode et les mêmes points d'entrée. Les développeurs qui rejoignent le projet apprennent une seule API au lieu de trois. La vérification du code dans l'ensemble du sous-système de codes-barres devient cohérente. La recherche de documentation est centralisée.

Lecture de code-barres sans deuxième bibliothèque : BarcodeReader.Read gère les fichiers image, les pages PDF, les flux et les bitmaps en mémoire avec détection automatique du format. La fonctionnalité de lecture qui nécessitait auparavant ZXing .NET — avec ses exigences de spécification de format et ses considérations de sécurité des threads — est désormais disponible immédiatement via un simple appel de méthode. Le guide de lecture des codes-barres à partir d'images couvre la détection de plusieurs codes-barres, le prétraitement des images et la numérisation des pages PDF.

Expansion de format sans nouvelles dépendances : Ajouter Code 128, EAN-13, DataMatrix, PDF417, ou tout autre format pris en charge après la migration ne nécessite qu'une valeur de paramètre BarcodeEncoding différente. Aucun nouveau paquet à installer, aucune nouvelle API à apprendre, et aucun problème de compatibilité de versions à gérer. Les nouvelles exigences de format se traduisent par une simple modification d'une ligne plutôt que par une nouvelle intégration de bibliothèque.

Personnalisation simplifiée de code QR : L'intégration de logos, les modifications de couleur et le contrôle de la zone silencieuse sont disponibles en tant que méthodes nommées sur le résultat QRCodeWriter. La dépendance System.Drawing.Bitmap que Codeur QR nécessite pour l'intégration de logos est remplacée par une simple chaîne de chemin de fichier. Le guide de personnalisation du style de code QR répertorie toutes les options de personnalisation disponibles.

Intégration PDF intégrée : les codes-barres peuvent être lus à partir de documents PDF entrants et intégrés aux fichiers PDF existants sans ajout de bibliothèque PDF. Les flux de traitement de documents qui nécessitaient une dépendance PDF distincte intègrent désormais les fonctionnalités des codes-barres et des PDF.

Réduction des coûts de maintenance à long terme : le passage de trois ou quatre packages indépendants à un seul élimine les coûts cumulatifs liés au suivi de plusieurs cycles de publication, à la résolution des conflits de versions entre bibliothèques et à la mise à jour de plusieurs suites de tests lors des évolutions des versions .NET . Le coût de maintenance du sous-système de codes-barres se réduit à une seule dépendance logicielle.

Veuillez noter: Les marques NetBarcode, Codeur QR et ZXing.NET sont toutes des marques déposées de leurs propriétaires respectifs. Ce site n'est pas affilié, approuvé ou parrainé par NetBarcode, Codeur QR 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