IRONSOFTWAREHOME
VIDEOS

Migrieren von QR-Code zu IronBarcode

Curtis Chau
Curtis Chau
Updated: 1. August 2026

Dieser Leitfaden richtet sich an Entwicklungsteams, deren Projekte mit QR-Code begonnen haben und mittlerweile über die QR-Code-Generierung hinausgehende Funktionen erfordern. QR-Code ist eine gut gepflegte, qualitativ hochwertige Bibliothek für ihren vorgesehenen Anwendungsbereich, und eine Migration spiegelt nicht ihre Qualität wider. Es handelt sich um eine Antwort auf Anforderungen – Formaterweiterung, Barcode-Lesung, PDF-Integration –, die nicht dem entsprechen, wofür QR-Code ursprünglich konzipiert wurde. Dieser Leitfaden beschreibt den kompletten technischen Weg von QR-Code zu IronBarcode: Paketaustausch, Namensraumänderungen, Codeübersetzung für jedes gängige Muster, eine Zuordnung der API-Äquivalenzen und Lösungen für die Probleme, die während des Übergangs auftreten.

Warum von QR-Code migrieren?

Formatanforderungen jenseits von QR: QR-Code generiert ausschließlich QR-Codes. Projekte, die sich auf das Erfordernis von Code 128 Labels für die Logistik, EAN-13 Codes für die Produktidentifikation im Einzelhandel, DataMatrixfür die pharmazeutische Serialisierung oder PDF417für die Konformität von Regierungsdokumenten ausweiten, müssen für jedes zusätzliche Format eine separate Bibliothek einführen. Mit der zunehmenden Anzahl der benötigten Formate steigt auch die Anzahl der unabhängigen Pakete, APIs und Wartungsverpflichtungen.

Anforderungen an das Barcode-Lesen: QR-Code verfügt über keine Barcode-Lese-API – es handelt sich von Grund auf um eine reine Generierungsbibliothek. Jede Anwendung, die QR-Codes aus eingehenden Bildern dekodieren, Barcodes auf gescannten Dokumenten überprüfen oder Versandetiketten verarbeiten muss, muss neben QR-Code eine dedizierte Lesebibliothek hinzufügen. Diese zweite Bibliothek bringt ihre eigene API-Oberfläche, ihren eigenen Aktualisierungszyklus und ihre eigenen Kompatibilitätsprobleme bei jedem .NET Upgrade mit sich.

Multi-Bibliotheks-Wartung: Das realistische Akkumulationsmuster für ein QRCoder-basiertes Projekt verläuft von QR-Code zur QR-Code-Generierung über eine 1D-Barcode-Bibliothek für Versandetiketten bis hin zu einer Lesebibliothek zum Dekodieren. Die Verwaltung von drei oder vier unabhängigen Paketen bedeutet, separate Versionshinweise zu verfolgen, Versionskonflikte zu lösen, wenn eines der Pakete aktualisiert wird, und die Vertrautheit mit mehreren APIs innerhalb eines Entwicklungsteams aufrechtzuerhalten. Der Wartungsaufwand summiert sich im Laufe der Zeit auf eine Weise, die in der anfänglichen Integrationsschätzung nicht erkennbar ist.

PDF-Unterstützung: Das Einbetten von Barcodes in PDF-Dokumente oder das Extrahieren von Barcodes aus eingehenden PDF-Dateien fällt nicht in den Funktionsumfang von QRCoder. Dokumentenverarbeitungsprozesse – Rechnungsbearbeitung, Etikettenerstellung aus PDF-Vorlagen, Compliance-Berichterstattung – stoßen früh an diese Grenze. Es muss eine dedizierte PDF-Bibliothek zusammen mit QR-Code hinzugefügt werden, oder die Architektur muss die Barcode-Generierung und die PDF-Generierung über separate Subsysteme leiten.

Das grundsätzliche Problem

QRCoder löst das Problem der QR-Generierung auf effiziente Weise. Sobald eine Anforderung die QR-Kriterien überschreitet, muss die Codebasis zusätzliche Pakete einbinden, um jede Lücke zu füllen:

// QR-Code 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 vereint Generierung, Lesen und PDF-Integration unter einer einzigen API:

// 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");

IronBarcode vs. QRCoder: Funktionsvergleich

FeatureQR-CodeIronBarcode
QR-Code-GenerierungJa – ausgezeichnet.Ja
Mikro-QRJaNein
Code 128 / Code 39NeinJa
EAN-13 / UPC-ANeinJa
DataMatrixNeinJa
PDF417NeinJa
aztekischNeinJa
Gesamtformate150+
Barcode-LesungNeinJa – automatische Erkennung
PDF-Barcode-ExtraktionNeinJa
PDF-Barcode-StempelnNeinJa
LogoeinbettungJaJa
FarbanpassungJaJa
SVG-AusgabeJaJa
PayloadGenerator-HelferJaNein – manuelle Saitenkonstruktion
Keine externen AbhängigkeitenJaIn sich geschlossen
LizenzMIT — uneingeschränktKommerziell — Lite-Lizenz deckt einen einzelnen Entwickler ab

Schnellstart: Migration von QR-Code zu IronBarcode

Schritt 1: Ersetzen des NuGet-Pakets

QRCoder aus dem Projekt entfernen:

dotnet remove package QRCoder
SHELL

IronBarcode installieren:

dotnet add package IronBarcode
SHELL

Falls im Projekt ZXing .NET zusammen mit QR-Code zum Einlesen von Barcodes verwendet wurde, kann dieses Paket ebenfalls in diesem Stadium entfernt werden:

dotnet remove package ZXing.Net
SHELL

Schritt 2: Namespaces aktualisieren

Ersetzen Sie den Import des QRCoder-Namensraums durch den IronBarcode Namensraum:

// Before (QRCoder)
using QRCoder;

// After (IronBarcode)
using IronBarCode;

Schritt 3: Lizenz initialisieren

Lizenzinitialisierung beim Anwendungsstart hinzufügen — Program.cs, Startup.cs oder ein statischer Konstruktor:

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

Ein kostenloser Testschlüssel ist ohne Registrierung erhältlich. Für den Einsatz in Produktionsumgebungen ist eine erworbene Lizenz erforderlich.

Beispiele für die Code-Migration

Grundlegende QR-Code-Generierung

Das häufigste QRCoder-Muster erfordert drei Objekte: eine QRCodeGenerator-Instanz, ein QRCodeData-Zwischenobjekt und eine Renderer-Klasse wie PngByteQRCode. In IronBarcode wird diese Kette durch einen einzigen statischen Aufruf ersetzt.

QRCoder-Ansatz:

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
    }
}

IronBarcode -Ansatz:

using IronBarCode;

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

BarcodeWriter ist eine statische Klasse — keine Instanz wird benötigt und es gibt kein Zwischenobjekt. Die ResizeTo(width, height)-Methode ersetzt die Pixel-pro-Modul-Ganzzahl, die QR-Code in GetGraphic akzeptiert. Wo QR-Code die Ausgabe durch die Anzahl der Module bestimmt (z.B. GetGraphic(10) für ein 10px pro Modul Bild), nimmt IronBarcode absolute Pixelmaße.

QR-Codes in Datei speichern

QRCoder trennt die Bytes im Arbeitsspeicher von der Dateiausgabe erst im letzten Schritt – die Rendererkette bleibt dabei gleich. IronBarcode verwendet auf derselben Kette unterschiedliche Terminalmethoden.

QRCoder-Ansatz:

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);

IronBarcode -Ansatz:

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();

Die SaveAsPng-Methode ist ein Terminal, das direkt auf die Festplatte schreibt. ToPngBinaryData gibt ein byte[] zurück für Streaming, HTTP-Antworten oder Datenbankspeicherung.

SVG-Ausgabe

QRCoder-Ansatz:

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);

IronBarcode -Ansatz:

using IronBarCode;

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

Die SvgQRCode-Rendererklasse und ihr GetGraphic-Aufruf lassen sich zu einer einzigen SaveAsImage-Terminalmethode zusammenfassen (eine .svg-Erweiterung erzeugt SVG-Ausgabe).

Zuordnung der Fehlerkorrekturstufen

QRCoder erfordert eine explizite ECC-Auswahl bei jedem CreateQrCode-Aufruf mit dem QRCodeGenerator.ECCLevel-Enum. IronBarcode wendet einen sinnvollen Standardwert an, wenn BarcodeWriter.CreateBarcode verwendet wird, und bietet explizite Kontrolle über QRCodeWriter.QrErrorCorrectionLevel.

QRCoder-Ansatz:

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);

IronBarcode -Ansatz:

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");

Die Zuordnung der Ebenen ist: ECCLevel.LLow, ECCLevel.MMedium, ECCLevel.QHigh, ECCLevel.HHighest.

Logoeinbettung

Beide Bibliotheken unterstützen das Einbetten von Logos in QR-Codes. QR-Code leitet dies über die QRCode-Rendererklasse (nicht PngByteQRCode) mit System.Drawing.Bitmap-Parametern. IronBarcode bietet QRCodeWriter.CreateQrCodeWithLogo() als dedizierte Fabrikmethode, die Dateipfade für sowohl URL als auch Logo akzeptiert. Der Leitfaden zur Anpassung des QR-Code-Stils umfasst Optionen für Logogröße, Positionierung und Farbkombinationen.

QRCoder-Ansatz:

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);

IronBarcode -Ansatz:

using IronBarCode;

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

Die System.Drawing.Bitmap-Abhängigkeit wird entfernt — CreateQrCodeWithLogo akzeptiert Dateipfad-Strings für sowohl den Inhalt als auch das Logobild. Fehlerkorrektur wird automatisch auf das für die Logo-Einbettung erforderliche Niveau eingestellt; keine explizite ECC-Konfiguration erforderlich.

PayloadGenerator.WiFi-Migration

QRCoder's PayloadGenerator.WiFi formatiert den Standard-WiFi-QR-Payload-String. Das Ausgabeformat ist ein öffentlicher Standard (WIFI:T:{auth};S:{ssid};P:{password};;), der durch die QR-Code-Spezifikation definiert ist. Bei der Migration können diese Zeichenketten direkt erstellt werden.

QRCoder-Ansatz:

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));

IronBarcode -Ansatz:

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");

Für Teams mit vielen PayloadGenerator-Typen im Einsatz (vCard, CalendarEvent, Geo, SMS), ist der Ansatz der gleiche: Identifizieren Sie die formatierte Zeichenkette, die jeder Generator mit seiner .ToString()-Ausgabe produziert, und konstruieren Sie diese Zeichenkette direkt oder durch eine kleine statische Hilfsmethode.

QR-Code API zu IronBarcode Mapping-Referenz

QR-CodeIronBarcodeNotizen
new QRCodeGenerator()Statische Klasse – keine InstanzBarcodeWriter erfordert keine Instanziierung
qrGenerator.CreateQrCode(data, ECCLevel.M)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)Direkter Ersatz
new PngByteQRCode(qrCodeData)Nicht erforderlichRendering ist Teil der Fluent-Kette
qrCode.GetGraphic(20) gibt byte[] zurück.ToPngBinaryData()Größe über .ResizeTo(w, h)
File.WriteAllBytes(path, bytes)-Muster.SaveAsPng(path)Terminalmethode auf GeneratedBarcode
new SvgQRCode(qrCodeData).GetGraphic(10).SaveAsImage(path)Passieren Sie eine .svg-Erweiterung für SVG-Ausgabe
new QRCode(qrCodeData).GetGraphic(...)QRCodeWriter.CreateQrCode(data, size, level)Wird zur Logo- und Farbanpassung verwendet
QRCodeGenerator.ECCLevel.LQRCodeWriter.QrErrorCorrectionLevel.Low
QRCodeGenerator.ECCLevel.MQRCodeWriter.QrErrorCorrectionLevel.MediumStandardwert, wenn nicht anders angegeben
QRCodeGenerator.ECCLevel.QQRCodeWriter.QrErrorCorrectionLevel.High
QRCodeGenerator.ECCLevel.HQRCodeWriter.QrErrorCorrectionLevel.HighestErforderlich für die Logoeinbettung
PayloadGenerator.WiFi(...).ToString()"WIFI:T:WPA;S:{ssid};P:{pass};;"Erstellen Sie direkt eine Standardzeichenkette.
PayloadGenerator.ContactData(...).ToString()"BEGIN:VCARD\n..."vCard ist ein öffentlicher Standard
Keine Lese-APIBarcodeReader.Read(path)Neue Funktion – keine separate Bibliothek mehr nötig
Nur QR-Format50+ Formate über BarcodeEncoding.*Neue Fähigkeit

Gängige Migrationsprobleme und Lösungen

Problem 1: Änderung des PayloadGenerator-Zeichenfolgenformats

QRCoder: PayloadGenerator.WiFi, PayloadGenerator.ContactData und andere Helfer erzeugen automatisch formatierte Zeichenketten. Der Code übergibt die .ToString()-Ausgabe des Helferobjekts an CreateQrCode.

Lösung: Identifizieren Sie die Zeichenkette, die jeder PayloadGenerator-Typ produziert — ihr Format ist in der QR-Code-Spezifikation dokumentiert und einfach zu reproduzieren. Für WiFi: WIFI:T:WPA;S:{ssid};P:{password};;. Für vCard: Standard BEGIN:VCARD / END:VCARD-Blöcke. Schreiben Sie statische Hilfsmethoden, wenn viele Aufrufstellen denselben Payload-Typ verwenden:

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

Problem 2: ECCLevel-Enum-Zuordnung

QRCoder: QRCodeGenerator.ECCLevel ist ein verschachteltes Enum mit Werten L, M, Q, H. Es ist ein erforderlicher Parameter bei jedem CreateQrCode-Aufruf.

Lösung: Ordnen Sie jeden Wert seinem QRCodeWriter.QrErrorCorrectionLevel-Äquivalent zu, wenn Sie den QRCodeWriter-Weg verwenden. Wenn BarcodeWriter.CreateBarcode verwendet wird, wird das ECC-Level automatisch auf Medium gesetzt und erfordert keinen Parameter. Aktualisieren Sie jeden Anrufstandort:

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

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

Problem 3: Entfernung der Renderer-Klasse

QRCoder: Jedes Ausgabeformat erfordert eine eigene Instanzierung der Rendererklasse — PngByteQRCode, SvgQRCode, AsciiQRCode, Base64QRCode, QRCode. Diese Klassen akzeptieren QRCodeData und legen GetGraphic mit unterschiedlichen Rückgabetypen offen.

Lösung: Entfernen Sie alle Instanziierungen der Renderer-Klasse. IronBarcode integriert die Formatausgabe in die Terminalmethoden der Fluent-Kette. Ersetzen Sie new PngByteQRCode(data).GetGraphic(n) durch .ToPngBinaryData() nach .ResizeTo(). Ersetzen Sie new SvgQRCode(data).GetGraphic(n) durch .SaveAsImage(path) (mit einer .svg-Erweiterung). Das QRCodeData-Zwischenobjekt verschwindet ebenfalls — es wird in IronBarcode nicht benötigt.

Ausgabe 4: Entfernung von PngByteQRCode und modulbasierte Größenanpassung

QRCoder: PngByteQRCode.GetGraphic(int pixelsPerModule) bestimmt die Ausgabe durch die Anzahl der Pixel pro QR-Modul. Die resultierenden Bildabmessungen hängen von der Anzahl der Module ab, die mit der Inhaltslänge und dem ECC-Level variiert.

Lösung: Ersetzen Sie die modulbasierte Größenanpassung durch ResizeTo(int width, int height) für absolute Pixelmaße. Wenn Ihr Code die erwartete Ausgabegröße dynamisch anhand der Modulanzahl berechnet hat, wechseln Sie zu einer festen Zielgröße, die Ihren Ausgabeanforderungen entspricht:

// 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();

QRCoder-Migrations-Checkliste

Vor der Migration anfallende Aufgaben

Prüfen Sie den Quellcode auf alle QRCoder-Verwendungen, bevor Sie Änderungen vornehmen:

# Find all QR-Code 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
  • Dokumentieren Sie alle PayloadGenerator-Typen im Einsatz und notieren Sie deren Zeichenkette-Ausgabeformate
  • Notieren Sie alle verwendeten ECC-Level-Werte und deren Aufrufstellen.
  • Identifizieren Sie jeglichen ZXing .NET -Lesecode, der zum Dekodieren mit QR-Code gekoppelt war – dieser kann gleichzeitig ersetzt werden
  • Besorgen Sie sich einen IronBarcode -Lizenzschlüssel (Testschlüssel sind ohne Registrierung erhältlich)

Aufgaben der Code-Aktualisierung

  1. Führen Sie dotnet remove package QRCoder aus
  2. Führen Sie dotnet remove package ZXing.Net aus, wenn es nur zum Lesen zusammen mit QR-Code verwendet wurde
  3. Führen Sie dotnet add package IronBarcode aus
  4. Fügen Sie IronBarCode.License.LicenseKey = "YOUR-KEY"; zum Anwendungsstart hinzu
  5. Ersetzen Sie alle using QRCoder;-Importe durch using IronBarCode;
  6. Entfernen Sie alle new QRCodeGenerator()-Instanzerklärungen — BarcodeWriter ist statisch
  7. Ersetzen Sie alle generator.CreateQrCode(data, ECCLevel.X) + Renderer-Chaining-Muster durch BarcodeWriter.CreateBarcode(data, BarcodeEncoding.QRCode)-Chaining
  8. Ersetzen Sie .GetGraphic(n)-Aufrufe durch .ToPngBinaryData() und fügen Sie .ResizeTo(w, h) vor dem Terminal hinzu
  9. Ersetzen Sie File.WriteAllBytes(path, bytes)-Speichermuster durch .SaveAsPng(path)-Terminalmethoden
  10. Ersetzen Sie new SvgQRCode(data).GetGraphic(n) durch .SaveAsImage(path) (mit einer .svg-Erweiterung)
  11. Ersetzen Sie PayloadGenerator.WiFi(...) und andere Helferinstanzen durch direkte Formatzeichenketten
  12. Ordnen Sie jeden QRCodeGenerator.ECCLevel-Wert seinem QRCodeWriter.QrErrorCorrectionLevel-Äquivalent zu
  13. Ersetzen Sie alle ZXing.Net BarcodeReaderGeneric.Decode(bitmap)-Aufrufe durch BarcodeReader.Read(path)
  14. Für die Logoeinbettung ersetzen Sie new QRCode(data).GetGraphic(n, ..., logoBitmap) durch QRCodeWriter.CreateQrCodeWithLogo(data, logoPath, size)

Post-Migrationstests

  • Scannen Sie alle generierten QR-Codes mit mindestens zwei unabhängigen QR-Code-Scanner-Anwendungen, um die Lesbarkeit zu überprüfen.
  • Verifizieren Sie, dass Logos eingebaute QR-Codes korrekt gescannt werden — bestätigen Sie, dass das Fehlerkorrektur-Level Highest ist
  • Vergleichen Sie die visuelle Ausgabe der generierten Codes mit Beispielen aus der Zeit vor der Migration, bei denen eine einheitliche Darstellung erforderlich ist.
  • Testen Sie alle PayloadGenerator-Ersetzungen — bestätigen Sie, dass WiFi-, vCard- und andere Payload-Zeichenketten auf Zielgeräten korrekt dekodiert werden
  • Falls ZXing.Net ebenfalls entfernt wurde, verifizieren Sie, dass alle Strichcode-Lesewege durch BarcodeReader.Read funktionieren
  • Führen Sie die Anwendung in einer sauberen Umgebung aus, um sicherzustellen, dass keine verbleibenden QRCoder- oder ZXing .NET -Referenzen Bindungsfehler verursachen.
  • Überprüfen Sie, ob der IronBarcode -Lizenzschlüssel in Produktions- und Testumgebungen korrekt geladen wurde.

Wichtigste Vorteile der Migration zu IronBarcode

Einzelne API für alle Barcode-Operationen: Nach der Migration verwendet jede Barcode-Aufgabe — Generierung, Lesen, PDF-Stempeln — dasselbe IronBarCode-Namensraum und dieselben Einstiegspunkte. Entwickler, die dem Projekt beitreten, lernen nur eine API anstatt drei. Die Codeüberprüfung im gesamten Barcode-Subsystem wird einheitlich. Die Dokumentensuche ist zentralisiert.

Strichcode-Lesen ohne zweite Bibliothek: BarcodeReader.Read behandelt Bilddateien, PDF-Seiten, Streams und im Speicher befindliche Bitmaps mit automatischer Format-Erkennung. Die Lesefunktion, für die bisher ZXing .NET – mit seinen Formatvorgaben und Überlegungen zur Thread-Sicherheit – erforderlich war, ist nun sofort durch einen einzigen Methodenaufruf verfügbar. Der Leitfaden zum Lesen von Barcodes aus Bildern umfasst die Erkennung mehrerer Barcodes, die Bildvorverarbeitung und das Scannen von PDF-Seiten.

Format-Erweiterung ohne neue Abhängigkeiten: Das Hinzufügen von Code 128, EAN-13, DataMatrix, PDF417oder einem anderen unterstützten Format nach der Migration erfordert nur einen anderen BarcodeEncoding-Parameterwert. Es müssen keine neuen Pakete installiert, keine neuen APIs erlernt und keine Versionskompatibilitätsprobleme behoben werden. Die neuen Formatvorgaben lassen sich durch eine einzige Änderung in einer Zeile anstatt durch eine neue Bibliotheksintegration realisieren.

Vereinfachte QR-Code-Anpassung: Logoeinbettung, Farbänderungen und Kontrolle der Ruhezone sind als benannte Methoden auf dem QRCodeWriter-Ergebnis verfügbar. Die System.Drawing.Bitmap-Abhängigkeit, die QR-Code für die Logoeinbettung erfordert, wird durch einen einfachen Dateipfad-String ersetzt. Der Leitfaden zur Anpassung des QR-Code-Stils dokumentiert alle verfügbaren Anpassungsoptionen.

Integrierte PDF-Integration: Barcodes können aus eingehenden PDF-Dokumenten gelesen und in bestehende PDF-Dateien eingefügt werden, ohne dass eine PDF-Bibliothek hinzugefügt werden muss. Dokumentenverarbeitungs-Workflows, die bisher eine separate PDF-Abhängigkeit erforderten, verfügen nun über eine integrierte Barcode- und PDF-Funktionalität.

Reduzierter langfristiger Wartungsaufwand: Durch den Wechsel von drei oder vier unabhängigen Paketen zu einem einzigen Paket entfällt der kumulative Aufwand, mehrere Releasezyklen zu verfolgen, Versionskonflikte zwischen Bibliotheken zu lösen und mehrere Testsuiten bei neuen .NET Versionen zu aktualisieren. Die Wartungskosten des Barcode-Subsystems reduzieren sich auf eine einzige Abhängigkeit von einem einzelnen Paket.

Hinweis:: NetBarcode, QR-Code und ZXing.NET sind eingetragene Warenzeichen ihrer jeweiligen Eigentümer. Diese Seite ist nicht mit NetBarcode, QR-Code oder ZXing.NET verbunden, wird nicht von ihnen unterstützt oder gesponsert. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
AWS-Logo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Azure (WebApps, Funktionen v3)
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Azure (WebApps, Funktionen v3)
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.