Wie man die Barcode-Ausrichtung in C# behebt | IronBarcode
Migrating from Telerik RadBarcodeto IronBarcode
Dieser Leitfaden bietet einen vollständigen Migrationspfad von Telerik RadBarcodezu IronBarcode for .NET-Entwickler, die die Grenzen dessen erreicht haben, was RadBarcode und RadBarcodeReader leisten können. Es umfasst Paketaustausch, Namespace-Aktualisierungen, Lizenzinitialisierung, Beispiele für Migrationen auf Codeebene, eine API-Mapping-Referenz und eine Checkliste zur Überprüfung der Vollständigkeit der Migration. Die Beispiele konzentrieren sich auf die Szenarien, die bei Telerik-Barcode-Migrationen am häufigsten auftreten: Austausch von XAML-Steuerelementen, Erweiterung des Leseformats, serverseitige Bereitstellung und PDF-Verarbeitung.
Warum von Telerik RadBarcodemigrieren?
Telerik RadBarcode-Migrationen werden durch konkrete technische Anforderungen ausgelöst, die die bestehenden Komponenten nicht erfüllen können. Die folgenden Gründe stellen die am häufigsten von Teams gemeldeten Bedingungen dar, die diesen Übergang abgeschlossen haben oder derzeit evaluieren.
2D-Lesegrenze: Die RadBarcodeReader-Komponente in WPF und die RadBarcodeReader-Komponente in WinForms teilen denselben Lesemotor, der durch das DecodeType-Enum begrenzt ist. Diese Aufzählung enthält Einträge für 1D lineare Formate – Code128, Code39, EAN13, EAN8, UPCA, UPCE, Codabar, ITF – und sonst nichts. Für QR Code, DataMatrix, PDF417 oder Aztec existiert kein Eintrag. Wenn eine neue Anforderung eingeht, eingehende QR-Codes zu verarbeiten oder DataMatrix-Etiketten aus gescannten Dokumenten zu lesen, wird die DecodeType-Einschränkung zu einem harten Blocker ohne verfügbare Lösung innerhalb der Telerik-Produktfamilie.
Plattform-Code-Fragmentierung: Lesen mit Telerik erfordert UI-Framework-Abhängigkeiten: RadBarcodeReader verwendet WPF-Typen (BitmapImage) und RadBarcodeReader verwendet WinForms-Typen (System.Drawing.Image). Diese Typen können nicht in einer gemeinsam genutzten .NET Bibliothek, einer Konsolenanwendung, einem ASP.NET Core Projekt oder einem Blazor -Server referenziert werden. Ein Team, das die Barcode-Leselogik in einer gemeinsamen Serviceschicht zentralisieren möchte, kann dies mit Telerik-Typen nicht tun – die Reader-Implementierungen sind permanent an ihre jeweiligen UI-Frameworks gebunden.
PDF-Verarbeitungslücke: Viele Barcode-Workflows arbeiten mit Dokumenten anstatt mit Bilddateien. Telerik RadBarcodeReader akzeptiert nur Bitmap-Bilder. Das Lesen eines in eine PDF-Seite eingebetteten Barcodes erfordert die Konvertierung der Seite in ein Bild mithilfe einer separaten Bibliothek und die anschließende Zuführung dieses Bildes zum Telerik-Reader – wodurch eine zusätzliche Abhängigkeit entsteht und man dennoch nur 1D-Ergebnisse erhält. Für Teams, deren Dokumente hauptsächlich im PDF-Format vorliegen, führt diese Umgehungslösung zu zusätzlichen Reibungspunkten an jedem Punkt des Arbeitsablaufs.
Abonnementlizenzierung: Die Telerik-Barcode-Funktionalität wird nicht als eigenständiges Paket verkauft. Der Zugriff auf RadBarcode und RadBarcodeReader ist mit plattformspezifischen UI-Suite-Abonnements gebündelt – pro Plattform beginnen Telerik UI-Abonnements bei $749 pro Entwickler pro Jahr (Lite-Stufe) und DevCraft UI kostet $1.149 pro Entwickler pro Jahr für alle Plattformen zusammen, gemäß den von Telerik veröffentlichten Preisen 2026. Teams, deren Hauptanforderung die Barcode-Funktionalität ist und die keine anderen Telerik UI-Steuerelemente verwenden, tragen die vollen Kosten der Suite für eine Komponente, die nur einen kleinen Teil des gekauften Produkts ausmacht.
Das grundsätzliche Problem
Die deutlichste Ausprägung der Lesebeschränkung von Telerik besteht darin, dass die Komponente, die ein Format generiert, dieses nicht durch den Reader zurückführen kann:
// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...
// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...
// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
' Telerik — generates a QR code, then cannot read it back
Dim qrBarcode As New RadBarcode()
qrBarcode.Value = "https://example.com/order/4821"
qrBarcode.Symbology = New QRCode With {.ErrorCorrectionLevel = ErrorCorrectionLevel.H}
' Save to file...
' Attempt to read the same QR code:
Dim reader As New RadBarcodeReader()
' DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
Dim bitmap As New BitmapImage(New Uri("qr-output.png", UriKind.Absolute))
Dim result = reader.Decode(bitmap)
' result == null — always, for any QR code image
IronBarcode schließt diese Lücke. Generierung und Lesen verwenden dasselbe Paket, und die Lese-Engine erkennt QR-Codes, DataMatrix, PDF417 und alle anderen Formate automatisch:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
.SaveAsPng("qr-output.png");
// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
.SaveAsPng("qr-output.png");
// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
' Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode) _
.SaveAsPng("qr-output.png")
' Read that same QR code back — no format specification needed
Dim results = BarcodeReader.Read("qr-output.png")
Console.WriteLine(results.First().Value)
' Output: https://example.com/order/4821
IronBarcode vs. Telerik RadBarcode: Funktionsvergleich
| Feature | Telerik RadBarcode | IronBarcode |
|---|---|---|
| 1D-Barcode-Generierung | Ja (alle Plattformen) | Ja |
| 2D-Barcode-Generierung | Ja (alle Plattformen) | Ja |
| 1D-Barcode-Lesen | Nur WPF + WinForms | Ja (alle Plattformen) |
| QR-Code-Lesen | Nur WPF | Ja (alle Plattformen) |
| DataMatrix-Lesung | Nur WPF | Ja (alle Plattformen) |
| PDF417 lesen | Nur WPF | Ja (alle Plattformen) |
| Aztekenlesung | Nicht verfügbar | Ja |
| PDF-Datei lesen | Nicht verfügbar | Ja (Muttersprachler) |
| Automatische Formaterkennung | Nein – DecodeType erforderlich | Ja |
| ASP.NET Core lesen | Nicht verfügbar | Ja |
| Blazor -Lesung | Nicht verfügbar | Ja |
| Docker / Linux-Lesen | Nicht verfügbar | Ja |
| Gemeinsame Servicebibliothek | Nicht möglich (Plattformtypen) | Ja |
| Statische Lese-API | Nein (erfordert Instanz) | Ja |
| Eigenständiges NuGet Paket | Nein – UI- Suite erforderlich | Ja |
| Unbefristete Lizenz | Unbefristete Stufe neben Abonnement verfügbar | Ja — ab 749 $ (Lite) |
Schnellstart
Schritt 1: Ersetzen des NuGet-Pakets
Entfernen Sie das Telerik UI-Paket für die Plattform(en) in Ihrem Projekt:
# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml
# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode
# Blazor
dotnet remove package Telerik.UI.for.Blazor
# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml
# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode
# Blazor
dotnet remove package Telerik.UI.for.Blazor
Wenn Ihr Projekt auch andere Telerik-Steuerelemente aus demselben Paket verwendet, lassen Sie das Paket an Ort und Stelle und fahren Sie mit Schritt 2 fort. Sie werden die barcodespezifischen API-Aufrufe entfernen, ohne das gemeinsam genutzte Paket zu entfernen.
IronBarcode installieren:
dotnet add package IronBarcode
dotnet add package IronBarcode
Ein Paket umfasst WPF, WinForms, ASP.NET Core, Blazor Server, Konsolenanwendungen, Docker, Azure Functions und AWS Lambda. Die vollständigen Details zur Plattformkompatibilität dokumentieren die genauen unterstützten .NET Versionen und Betriebssystemziele.
Schritt 2: Namespaces aktualisieren
Entfernen Sie die Telerik-Barcode-Namensraumimporte und ersetzen Sie sie durch den IronBarcode Namensraum:
// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode; // WPF reader and generator
// using Telerik.Windows.Controls; // WPF general
// using Telerik.WinControls.UI; // WinForms
// using Telerik.WinControls.UI.Barcode; // WinForms barcode reader
// Add this:
using IronBarCode;
// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode; // WPF reader and generator
// using Telerik.Windows.Controls; // WPF general
// using Telerik.WinControls.UI; // WinForms
// using Telerik.WinControls.UI.Barcode; // WinForms barcode reader
// Add this:
using IronBarCode;
Imports IronBarCode
Schritt 3: Lizenz initialisieren
Ersetzen Sie die Telerik-Lizenzinitialisierung durch die IronBarcode -Schlüsselzuweisung beim Anwendungsstart:
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");
// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");
// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("key")
' Add at application startup (Program.vb, App.xaml.vb, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Die Schlüsselzuweisung erfolgt einmalig am Einstiegspunkt der Anwendung. Es gibt keine Lizenzdatei, die bereitgestellt werden muss, keinen plattformspezifischen Initialisierungspfad und keine separate Konfiguration für WPF im Vergleich zu ASP.NET Core.
Beispiele für die Code-Migration
Barcode-Generierung: XAML-Steuerung zu codebasierter API
Teleriks Generierung in WPF ist deklarativ – das RadBarcode-XAML-Element wird direkt im UI-Baum gerendert. IronBarcode generiert Barcodes im Code und gibt ein GeneratedBarcode-Objekt zurück, das als Datei gespeichert oder in ein BitmapSource für die WPF-Anzeige konvertiert werden kann.
Telerik-Ansatz:
<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
<telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>
<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
<telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>
@* Blazor — TelerikBarcode renders as a Razor component *@
<TelerikBarcode Value="PROD-2026-00184" Type="@BarcodeType.Code128" />
IronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ToBitmapSource();
barcodeImageControl.Source = bitmapSource;
// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
// NuGet: dotnet add package IronBarcode
using IronBarCode;
// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ToBitmapSource();
barcodeImageControl.Source = bitmapSource;
// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
Imports IronBarCode
' Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.SaveAsPng("barcode.png")
' Display in WPF — assign to an Image control's Source property
Dim bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
.ToBitmapSource()
barcodeImageControl.Source = bitmapSource
' Serve in Blazor or ASP.NET Core — return as base64 src attribute
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.ToPngBinaryData()
Dim imgSrc As String = $"data:image/png;base64,{Convert.ToBase64String(bytes)}"
Das BarcodeEncoding-Enum deckt dieselben Symbologien wie das Symbology-Enum von Telerik ab. Die Umstellung auf QR-Code-Generierung ändert lediglich das Enum-Argument. Die IronBarcode Dokumentation bietet vollständige Beispiele für alle Optionen zur Generierung von 2D-Barcodes , einschließlich QR-Fehlerkorrekturstufen und DataMatrix-Dimensionen.
Lesen von Barcodes aus Desktop-Anwendungen
Telerik bietet zwei separate Leser-Klassen für Desktop-Plattformen – RadBarcodeReader für WPF und RadBarcodeReader für WinForms – mit unterschiedlichen Klassennamen, unterschiedlichen Eigenschaftsnamen und unterschiedlichen Eingabetypen. IronBarcode ersetzt beide mit einem einzigen statischen Aufruf, der in jedem Projekttyp identisch funktioniert.
Telerik WPF-Ansatz:
Für das Lesen in WPF wird eine RadBarcodeReader-Instanz, eine explizite DecodeType-Konfiguration, ein BitmapImage-Objekt, das von einer URI geladen wird, und ein Aufruf von reader.Decode() benötigt. Die Ergebnisseigenschaft ist .Text.
using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;
public string ReadProductBarcode(string imagePath)
{
var reader = new RadBarcodeReader();
reader.DecodeTypes = new DecodeType[]
{
DecodeType.Code128,
DecodeType.Code39,
DecodeType.EAN13,
DecodeType.EAN8,
DecodeType.UPCA,
DecodeType.UPCE,
DecodeType.Codabar,
DecodeType.ITF
};
var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
var result = reader.Decode(bitmap);
return result?.Text ?? "No barcode found";
}
using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;
public string ReadProductBarcode(string imagePath)
{
var reader = new RadBarcodeReader();
reader.DecodeTypes = new DecodeType[]
{
DecodeType.Code128,
DecodeType.Code39,
DecodeType.EAN13,
DecodeType.EAN8,
DecodeType.UPCA,
DecodeType.UPCE,
DecodeType.Codabar,
DecodeType.ITF
};
var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
var result = reader.Decode(bitmap);
return result?.Text ?? "No barcode found";
}
Imports Telerik.Windows.Controls.Barcode
Imports System.Windows.Media.Imaging
Public Function ReadProductBarcode(imagePath As String) As String
Dim reader = New RadBarcodeReader()
reader.DecodeTypes = New DecodeType() {
DecodeType.Code128,
DecodeType.Code39,
DecodeType.EAN13,
DecodeType.EAN8,
DecodeType.UPCA,
DecodeType.UPCE,
DecodeType.Codabar,
DecodeType.ITF
}
Dim bitmap = New BitmapImage(New Uri(imagePath, UriKind.Absolute))
Dim result = reader.Decode(bitmap)
Return If(result?.Text, "No barcode found")
End Function
Telerik WinForms-Ansatz:
Die WinForms RadBarcodeReader-Klasse verwendet einen anderen Namen, einen anderen Eigenschaftsnamen (DecodeType singular anstelle von DecodeTypes plural), und nimmt einen System.Drawing.Image anstelle eines BitmapImage an.
using Telerik.WinControls.UI.Barcode;
using System.Drawing;
public string ReadShippingLabel(string imagePath)
{
var reader = new RadBarcodeReader();
reader.DecodeType = new DecodeType[]
{
DecodeType.Code128,
DecodeType.ITF,
DecodeType.EAN13
};
using var image = Image.FromFile(imagePath);
var result = reader.Read(image);
return result?.Text ?? "No barcode found";
}
using Telerik.WinControls.UI.Barcode;
using System.Drawing;
public string ReadShippingLabel(string imagePath)
{
var reader = new RadBarcodeReader();
reader.DecodeType = new DecodeType[]
{
DecodeType.Code128,
DecodeType.ITF,
DecodeType.EAN13
};
using var image = Image.FromFile(imagePath);
var result = reader.Read(image);
return result?.Text ?? "No barcode found";
}
Imports Telerik.WinControls.UI.Barcode
Imports System.Drawing
Public Function ReadShippingLabel(imagePath As String) As String
Dim reader = New RadBarcodeReader()
reader.DecodeType = New DecodeType() {
DecodeType.Code128,
DecodeType.ITF,
DecodeType.EAN13
}
Using image = Image.FromFile(imagePath)
Dim result = reader.Read(image)
Return If(result?.Text, "No barcode found")
End Using
End Function
IronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public string ReadProductBarcode(string imagePath)
{
var results = BarcodeReader.Read(imagePath);
return results.FirstOrDefault()?.Value ?? "No barcode found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public string ReadProductBarcode(string imagePath)
{
var results = BarcodeReader.Read(imagePath);
return results.FirstOrDefault()?.Value ?? "No barcode found";
}
Imports IronBarCode
Public Function ReadProductBarcode(imagePath As String) As String
Dim results = BarcodeReader.Read(imagePath)
Return If(results.FirstOrDefault()?.Value, "No barcode found")
End Function
BarcodeReader.Read() ist eine statische Methode – kein Leser-Instanz wird benötigt. Es akzeptiert direkt einen Dateipfad-String, ohne dass ein BitmapImage- oder System.Drawing.Image-Laden erforderlich ist. Die Format-Erkennung ist automatisch bei allen über 50 unterstützten Typen. Die Ergebnisseigenschaft ist .Value anstelle von .Text. Dieser Aufruf funktioniert ohne Änderungen sowohl in WPF- als auch in WinForms-Anwendungen – es gibt keine plattformspezifische Variante. Es liest außerdem QR-Codes, DataMatrix und alle anderen im Bild vorhandenen Formate, im Gegensatz zu den Telerik-Lesegeräten, die auf 1D-Formate beschränkt sind.
QR-Codes lesen: Bisher unmöglich mit Telerik
Wenn Ihr Codekommentar oder eine NotSupportedException-Dokumentation enthält, dass QR-Lesen nicht verfügbar ist, ist dies der Ersatz. Es gibt in Telerik keinen Konfigurationspfad, der das Lesen von QR-Codes ermöglicht – dieses Szenario hat kein Telerik-Äquivalent.
Telerik-Ansatz:
// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
throw new NotSupportedException(
"Telerik RadBarcodeReader cannot read QR codes. " +
"DecodeType.QR is not a valid enum value.");
}
// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
throw new NotSupportedException(
"Telerik RadBarcodeReader cannot read QR codes. " +
"DecodeType.QR is not a valid enum value.");
}
' RadBarcodeReader does not support QR codes.
' DecodeType.QR does not exist in the Telerik enum.
Public Function ReadQrCode(imagePath As String) As String
Throw New NotSupportedException("Telerik RadBarcodeReader cannot read QR codes. " & _
"DecodeType.QR is not a valid enum value.")
End Function
IronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
var results = BarcodeReader.Read(imagePath);
return results.FirstOrDefault()?.Value ?? "No QR code found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
var results = BarcodeReader.Read(imagePath);
return results.FirstOrDefault()?.Value ?? "No QR code found";
}
Imports IronBarCode
Public Function ReadQrCode(imagePath As String) As String
' QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
Dim results = BarcodeReader.Read(imagePath)
Return If(results.FirstOrDefault()?.Value, "No QR code found")
End Function
Der gleiche BarcodeReader.Read()-Aufruf, der EAN-13-Barcodes liest, liest auch QR-Codes. Es gibt keine separate Konfiguration für 2D-Formate. Eine vollständige Liste der unterstützten Barcode-Formate für Lese- und Generierungsprozesse finden Sie in der IronBarcode Dokumentation. Diese umfasst alle über 50 Einträge mit formatspezifischen Hinweisen.
Lesen von Barcodes in einem ASP.NET Core -Endpunkt
Telerik bietet keine Barcode-Lesekomponente für ASP.NET Core oder Blazor an. Falls eine bestehende Anwendung hochgeladene Bilder zum Lesen an einen Desktop-Dienst weiterleitet, weil die Webschicht keinen Telerik-Reader besitzt, wird diese Umgehungslösung durch direktes Lesen in der Webschicht ersetzt.
Telerik-Ansatz:
// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
// Must proxy to desktop service — no Telerik reader available here
var bytes = await ReadAllBytesAsync(imageFile);
var result = await _desktopBridgeService.ReadAsync(bytes);
return Ok(result);
}
// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
// Must proxy to desktop service — no Telerik reader available here
var bytes = await ReadAllBytesAsync(imageFile);
var result = await _desktopBridgeService.ReadAsync(bytes);
return Ok(result);
}
Imports Microsoft.AspNetCore.Mvc
' No Telerik reading API available in ASP.NET Core.
' Workaround: forward uploaded file to a WPF or WinForms service
' that can reference Telerik.Windows.Controls.Barcode.
<HttpPost("read")>
Public Async Function ReadBarcode(imageFile As IFormFile) As Task(Of IActionResult)
' Must proxy to desktop service — no Telerik reader available here
Dim bytes = Await ReadAllBytesAsync(imageFile)
Dim result = Await _desktopBridgeService.ReadAsync(bytes)
Return Ok(result)
End Function
IronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
[HttpPost("read")]
public IActionResult ReadBarcode(IFormFile imageFile)
{
using var stream = imageFile.OpenReadStream();
var results = BarcodeReader.Read(stream);
return Ok(results.Select(r => new
{
Format = r.BarcodeType.ToString(),
Value = r.Value
}));
}
[HttpGet("generate")]
public IActionResult GenerateBarcode([FromQuery] string data)
{
var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
return File(bytes, "image/png");
}
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
[HttpPost("read")]
public IActionResult ReadBarcode(IFormFile imageFile)
{
using var stream = imageFile.OpenReadStream();
var results = BarcodeReader.Read(stream);
return Ok(results.Select(r => new
{
Format = r.BarcodeType.ToString(),
Value = r.Value
}));
}
[HttpGet("generate")]
public IActionResult GenerateBarcode([FromQuery] string data)
{
var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.ToPngBinaryData();
return File(bytes, "image/png");
}
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
<ApiController>
<Route("api/barcode")>
Public Class BarcodeController
Inherits ControllerBase
<HttpPost("read")>
Public Function ReadBarcode(imageFile As IFormFile) As IActionResult
Using stream = imageFile.OpenReadStream()
Dim results = BarcodeReader.Read(stream)
Return Ok(results.Select(Function(r) New With {
.Format = r.BarcodeType.ToString(),
.Value = r.Value
}))
End Using
End Function
<HttpGet("generate")>
Public Function GenerateBarcode(<FromQuery> data As String) As IActionResult
Dim bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.ToPngBinaryData()
Return File(bytes, "image/png")
End Function
End Class
BarcodeReader.Read() akzeptiert direkt einen Stream, sodass der hochgeladene Dateistrom ohne Schreiben auf die Festplatte übergeben wird. Dieser Controller kann ohne Änderungen unter Linux, Docker oder Azure App Service bereitgestellt werden.
Barcodes aus PDF-Dateien lesen
Telerik verfügt über keine PDF-Barcode-Lesefunktion. Das Hinzufügen des PDF-Lesens zu einer bestehenden auf Telerik basierenden Codebasis erfordert eine PDF-Rendering-Bibliothek, um die Seiten zu Bildern zu konvertieren, bevor sie an RadBarcodeReader übergeben werden. IronBarcode liest PDF-Dateien direkt.
Telerik-Ansatz:
// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = new List<string>();
var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call
foreach (var pageImage in pages)
{
var reader = new RadBarcodeReader();
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = ConvertToBitmapImage(pageImage); // conversion required
var result = reader.Decode(bitmap);
if (result != null)
results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
}
return results;
}
// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = new List<string>();
var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call
foreach (var pageImage in pages)
{
var reader = new RadBarcodeReader();
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = ConvertToBitmapImage(pageImage); // conversion required
var result = reader.Decode(bitmap);
if (result != null)
results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
}
return results;
}
Imports SomePdfLibrary ' third-party dependency
Imports Telerik.Windows.Controls.Barcode
Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
Dim results As New List(Of String)()
Dim pages = PdfRenderer.ExtractPages(pdfPath) ' third-party call
For Each pageImage In pages
Dim reader As New RadBarcodeReader()
reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
Dim bitmap = ConvertToBitmapImage(pageImage) ' conversion required
Dim result = reader.Decode(bitmap)
If result IsNot Nothing Then
results.Add(result.Text) ' 1D only — QR codes on PDF pages are missed
End If
Next
Return results
End Function
IronBarcode -Ansatz:
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = BarcodeReader.Read(pdfPath);
return results.Select(r =>
$"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
public List<string> ReadBarcodesFromPdf(string pdfPath)
{
var results = BarcodeReader.Read(pdfPath);
return results.Select(r =>
$"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
Imports IronBarCode
Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
Dim results = BarcodeReader.Read(pdfPath)
Return results.Select(Function(r) $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList()
End Function
Es wird keine separate PDF-Bibliothek benötigt. Kein Seitenextraktionsschritt. Keine Bildkonvertierung. Übergeben Sie den PDF-Pfad, und IronBarcode verarbeitet alle Seiten und gibt alle Barcodes mit Seitennummerverfolgung zurück. Es werden sowohl 1D- als auch 2D-Barcodes auf PDF-Seiten erkannt.
Telerik RadBarcodeAPI zu IronBarcode Mapping-Referenz
| Telerik RadBarcode | IronBarcode |
|---|---|
TelerikLicenseManager.InstallLicense("key") |
IronBarCode.License.LicenseKey = "key" |
<telerik:RadBarcode Value="..." Symbology="Code128" /> |
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) |
<TelerikBarcode Type="@BarcodeType.Code128" /> |
Serverseitige Generierung, die ToPngBinaryData() zurückgibt |
Symbology.Code128 |
BarcodeEncoding.Code128 |
Symbology.QRCode |
BarcodeEncoding.QRCode |
new RadBarcodeReader() (WPF) |
Statische Klasse – keine Instanz erforderlich |
new RadBarcodeReader() (WinForms) |
Statische Klasse – keine Instanz erforderlich |
reader.DecodeTypes = new DecodeType[] { ... } (WPF) |
Automatische Erkennung – keine Spezifikation erforderlich |
reader.DecodeType = new DecodeType[] { ... } (WinForms) |
Automatische Erkennung – keine Spezifikation erforderlich |
reader.Decode(bitmapImage) (WPF) |
BarcodeReader.Read(imagePath) |
reader.Read(drawingImage) (WinForms) |
BarcodeReader.Read(imagePath) |
result.Text |
result.Value |
result.Symbology |
result.BarcodeType |
BitmapImage erforderlich als Eingabe (WPF) |
Dateipfad, Stream oder Byte-Array akzeptiert |
System.Drawing.Image erforderlich als Eingabe (WinForms) |
Dateipfad, Stream oder Byte-Array akzeptiert |
| Nur 1D-Formate beim Lesen | Mehr als 50 Formate, einschließlich aller 2D-Typen |
| WPF- und WinForms-Nur-Lesemodus | Alle .NET -Plattformen |
| Keine Unterstützung für das Lesen von PDFs | BarcodeReader.Read("file.pdf") — nativ |
Gängige Migrationsprobleme und Lösungen
Ausgabe 1: Ersatz für XAML-Barcode-Steuerung
Telerik: <telerik:RadBarcode> ist ein visuelles Steuerelement, das direkt im WPF-UI-Elementbaum gerendert wird. Es kann nicht durch ein Image-Element ohne Code-Behind-Änderungen ersetzt werden.
Lösung: Ersetzen Sie das <telerik:RadBarcode>-Element durch ein <Image>-Steuerelement und generieren Sie den Barcode im Code-Behind. Binden Sie die Image.Source an ein BitmapSource, das von IronBarcode generiert wurde:
// In code-behind or ViewModel
using IronBarCode;
var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
.ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
// In code-behind or ViewModel
using IronBarCode;
var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
.ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
Imports IronBarCode
' In code-behind or ViewModel
Dim generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128) _
.ResizeTo(400, 100)
BarcodeImage.Source = generated.ToBitmapSource()
Für Blazor ersetzen Sie <TelerikBarcode> durch ein <img>-Element, dessen src-Attribut einen serverseitig generierten base64-codierten PNG empfängt.
Problem 2: Nebenwirkungen der DecodeType-Entfernung
Telerik: Die DecodeTypes- (WPF) oder DecodeType- (WinForms) Eigenschaft filtert, welche Formate der Leser zu erkennen versucht. Durch das Entfernen dieses Filters im Rahmen einer IronBarcode -Migration gibt IronBarcode nun Ergebnisse für alle im Bild vorhandenen Formate zurück, einschließlich der Formate, die zuvor durch den Filter ausgeschlossen wurden.
Lösung: Entfernen Sie den DecodeType-Zuweisungsblock vollständig. Wenn die zusätzlich erkannten Formate unerwartete Ergebnisse in nachgelagerter Logik verursachen — zum Beispiel, wenn der Code davon ausgeht, dass immer nur ein Barcode-Format zurückgegeben wird — fügen Sie optionales Filtern mit BarcodeReaderOptions hinzu:
using IronBarCode;
var options = new BarcodeReaderOptions
{
ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
using IronBarCode;
var options = new BarcodeReaderOptions
{
ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
Imports IronBarCode
Dim options As New BarcodeReaderOptions With {
.ExpectedBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.EAN13
}
Dim results = BarcodeReader.Read(imagePath, options)
Dies ist optional. Das Standardverhalten (alle Formate erkennen) ist für die meisten Anwendungsfälle korrekt und liefert Ergebnisse, die mit der vorherigen Telerik-Implementierung nicht möglich waren.
Problem 3: Bereinigung des TelerikLicenseManager
Telerik: Telerik.WinControls.TelerikLicenseManager.InstallLicense(key)-Aufrufe erscheinen beim Anwendungsstart, typischerweise in Program.cs (WinForms) oder App.xaml.cs (WPF). Der Schlüssel wird oft in den App-Einstellungen, einer Konfigurationsdatei oder fest im Startverfahren codiert gespeichert.
Lösung: Entfernen Sie den TelerikLicenseManager.InstallLicense()-Aufruf. Ersetzen Sie es durch die IronBarcode -Schlüsselzuweisung am selben Startort:
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");
// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");
// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY")
' Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
Wenn das Telerik-Paket weiterhin installiert bleibt (weil andere Nicht-Barcode Telerik-Steuerelemente noch verwendet werden), sollte der TelerikLicenseManager-Aufruf für diese Steuerelemente beibehalten werden. Den Aufruf nur dann entfernen, wenn die Telerik-Pakete selbst vollständig entfernt werden.
Telerik RadBarcodeMigrations-Checkliste
Vor der Migration anfallende Aufgaben
Prüfen Sie den Quellcode auf jegliche Verwendung von Telerik-Barcodes, bevor Sie Codeänderungen vornehmen:
# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .
# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .
# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .
# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .
# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .
# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .
# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .
# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .
# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .
# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .
# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
Dokumentieren Sie jedes Spiel. Notieren Sie, welche Dateien XAML-Steuerelemente enthalten, welche Lesecode enthalten und zu welcher Plattform die jeweilige Datei gehört.
Aufgaben der Code-Aktualisierung
- Entfernen Sie die Telerik-Barcode- NuGet -Pakete (oder behalten Sie sie bei, falls sie für andere Steuerelemente benötigt werden).
- Installieren Sie das
IronBarcode-NuGet-Paket in jedem Projekt, das Barcode-Funktionalität benötigt. - Fügen Sie
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"an jedem Anwendungsstart-Einstiegspunkt hinzu. - Entfernen Sie Telerik-Namensraum-Importe und fügen Sie
using IronBarCodehinzu. - Ersetzen Sie
<telerik:RadBarcode>-XAML-Elemente durch<Image>-Steuerelemente. - Generieren Sie Barcode-Bilder im Code-Behind mit
BarcodeWriter.CreateBarcode(...).ToBitmapSource(). - Ersetzen Sie
<TelerikBarcode>-Razor-Komponenten durch Base64-<img>-Quellen, die serverseitig generiert wurden. - Ersetzen Sie
new RadBarcodeReader()-Instanzen durchBarcodeReader.Read(path)-statische Aufrufe. - Ersetzen Sie
new RadBarcodeReader()-Instanzen durchBarcodeReader.Read(path)-statische Aufrufe. - Löschen Sie alle
reader.DecodeTypes = new DecodeType[] { ... }andreader.DecodeType = new DecodeType[] { ... }Blöcke - Ersetzen Sie
reader.Decode(bitmapImage)-Aufrufe durchBarcodeReader.Read(imagePath). - Ersetzen Sie
reader.Read(drawingImage)-Aufrufe durchBarcodeReader.Read(imagePath). - Benennen Sie
result.Textinresult.Valueum an allen Leseergebnis-Zugriffspunkten. - Benennen Sie
result.Symbologyinresult.BarcodeTypean allen Formatprüfpunkten um. - Ersetzen Sie
Symbology.Code128und ähnliche Generierungs-Enum-Werte durchBarcodeEncoding.Code128. - Entfernen Sie
TelerikLicenseManager.InstallLicense()-Aufrufe, wo Telerik-Pakete vollständig entfernt wurden.
Post-Migrationstests
- Überprüfen Sie, ob alle zuvor gelesenen 1D-Barcodes (Code128, EAN13 usw.) weiterhin korrekte Werte liefern.
- Bestätigen Sie, dass QR-Codes in Testbildern nun erfolgreich gelesen werden, nachdem sie zuvor "null" zurückgegeben hatten.
- Testen Sie, ob die generierten Barcodes (gespeichert als PNG oder als Bytes bereitgestellt) sichtbar dargestellt und korrekt gescannt werden.
- Überprüfen Sie, ob ASP.NET Core oder Blazor Endpunkte, die zuvor keine Leseoperationen durchführen konnten, nun korrekt funktionieren.
- Falls die PDF-Lesefunktion hinzugefügt wurde, überprüfen Sie, ob die Barcodes auf jeder PDF-Seite mit den korrekten Seitenzahlen erkannt werden.
- Führen Sie die grep-Audit-Befehle aus dem Abschnitt "Vormigration" aus, um zu bestätigen, dass keine weiteren Telerik-Barcode-API-Referenzen mehr vorhanden sind.
- Stellen Sie sicher, dass
IronBarCode.License.LicenseKeyvor dem erstenBarcodeReader.Read()- oderBarcodeWriter.CreateBarcode()-Aufruf eingestellt ist.
Wichtigste Vorteile der Migration zu IronBarcode
Vollständige Unterstützung für 2D-Formate: Nach der Migration können QR-Code-, DataMatrix-, PDF417- und Aztec-Formate mit demselben API-Aufruf gelesen werden, der bereits Code128 und EAN13 verarbeitet hat. Es ist keine zusätzliche Konfiguration erforderlich und es wird keine separate Bibliothek für 2D-Formate benötigt. Die Lese-Engine übernimmt die Formaterkennung automatisch.
Einheitliche plattformübergreifende API: Die gleichen BarcodeReader.Read()- und BarcodeWriter.CreateBarcode()-Aufrufe kompilieren und laufen identisch in WPF, WinForms, ASP.NET Core, Blazor, Konsolenanwendungen und Docker-Containern. Die einmal in einer gemeinsam genutzten Servicebibliothek geschriebene Barcode-Logik funktioniert ohne Änderungen für jeden Projekttyp in der Lösung.
Native PDF-Dateiverarbeitung: IronBarcode liest Barcodes direkt aus PDF-Dateien, verarbeitet alle Seiten und gibt Ergebnisse mit Seitenzahlen-Metadaten zurück. Arbeitsabläufe, die zuvor eine PDF-Rendering-Bibliothek Plus einen Telerik-Leseschritt erforderten, werden zu einem einzigen Methodenaufruf zusammengefasst, wodurch die Abhängigkeit von Drittanbietern und der Zwischenschritt der Bildkonvertierung entfallen.
Wegfall der Abonnementabhängigkeit für den Barcode-Zugriff: Nach der Migration ist die Barcode-Funktionalität über das unbefristete Lizenzmodell von IronBarcode verfügbar. Für den fortgesetzten Zugriff ist keine jährliche Erneuerung erforderlich. Teams, deren Hauptanwendung der Telerik- Suite im Barcode-Bereich liegt, reduzieren ihren wiederkehrenden Lizenzaufwand auf eine einmalige Kostenbelastung.
Vereinfachte Codebasis: Der DecodeType-Konfigurationsblock, der BitmapImage-Ladeschritt, die plattformspezifische Leserklassen-Auswahl und die result.Text-Eigenschaftskette werden alle durch einen einzigen statischen Methodenaufruf mit einer sich automatisch erkennenden Ergebnis-Sammlung ersetzt. Code, der zuvor unterschiedliche Implementierungen für das Lesen in WPF und WinForms erforderte, wird in einer einzigen gemeinsamen Implementierung zusammengefasst.
Häufig gestellte Fragen
Warum sollte ich von Telerik BarCode auf IronBarcode umsteigen?
Zu den häufigsten Gründen gehören die Vereinfachung der Lizenzierung (Beseitigung der Komplexität von SDK und Laufzeitschlüsseln), die Beseitigung von Durchsatzbeschränkungen, die Verbesserung der nativen PDF-Unterstützung, die Verbesserung der Docker/CI/CD-Bereitstellung und die Verringerung von API-Boilerplate im Produktionscode.
Wie kann ich Telerik-API-Aufrufe durch IronBarcode ersetzen?
Ersetzen Sie Instanzerstellung und Lizenzierung durch IronBarCode.License.LicenseKey = "key". Ersetzen Sie die Leseaufrufe durch BarcodeReader.Read(path) und die Schreibaufrufe durch BarcodeWriter.CreateBarcode(data, encoding). Statische Methoden erfordern keine Instanzverwaltung.
Wie viel Code ändert sich bei der Migration von Telerik BarCode zu IronBarcode?
Die meisten Migrationen führen zu weniger Codezeilen. Lizenzierungs-Boilerplate, Instanzkonstruktoren und explizite Formatkonfiguration werden entfernt. Zentrale Lese-/Schreibvorgänge werden auf kürzere IronBarcode-Äquivalente mit saubereren Ergebnisobjekten abgebildet.
Müssen während der Migration sowohl Telerik Barcode als auch IronBarcode installiert bleiben?
Nein. Die meisten Migrationen sind direkte Ersetzungen und keine Paralleloperationen. Migrieren Sie eine Serviceklasse nach der anderen, ersetzen Sie die NuGet-Referenz und aktualisieren Sie die Instanzierungs- und API-Aufrufmuster, bevor Sie zur nächsten Klasse übergehen.
Wie lautet der NuGet-Paketname für IronBarcode?
Das Paket ist 'IronBarCode' (mit großem B und C). Installieren Sie es mit 'Install-Package IronBarCode' oder 'dotnet add package IronBarCode'. Die using-Anweisung im Code lautet 'using IronBarCode;'.
Wie vereinfacht IronBarcode die Docker-Bereitstellung im Vergleich zu Telerik BarCode?
IronBarcode ist ein NuGet-Paket, für das keine externen SDK-Dateien oder Lizenzkonfigurationen erforderlich sind. In Docker setzen Sie die Umgebungsvariable IRONBARCODE_LICENSE_KEY und das Paket übernimmt die Lizenzvalidierung beim Start.
Erkennt IronBarcode nach der Migration von Telerik alle Barcode-Formate automatisch?
Ja, IronBarcode erkennt automatisch die Symbologie aller unterstützten Formate. Eine explizite Aufzählung von BarcodeTypes ist nicht erforderlich. Wenn das Format bereits bekannt ist und die Leistung eine Rolle spielt, ermöglicht BarcodeReaderOptions die Einschränkung des Suchraums als eine Optimierung.
Kann IronBarcode Barcodes aus PDFs ohne eine separate Bibliothek lesen?
Ja, BarcodeReader.Read("document.pdf") verarbeitet PDF-Dateien nativ. Die Ergebnisse enthalten PageNumber, Format, Value und Confidence für jeden gefundenen Barcode. Es ist kein externer PDF-Rendering-Schritt erforderlich.
Wie handhabt IronBarcode die parallele Verarbeitung von Barcodes?
Die statischen Methoden von IronBarcode sind zustandslos und thread-sicher. Verwenden Sie Parallel.ForEach direkt über Dateilisten ohne Instanzmanagement pro Thread. BarcodeReaderOptions.MaxParallelThreads steuert das interne Thread-Budget.
Welche Ergebniseigenschaften ändern sich bei der Migration von Telerik Barcode zu IronBarcode?
Übliche Umbenennungen: BarcodeValue wird zu Value, BarcodeType wird zu Format. IronBarcode-Ergebnisse fügen auch Confidence und PageNumber hinzu. Eine lösungsweite Such- und Ersetzungsfunktion übernimmt die Umbenennungen im bestehenden Ergebnisverarbeitungscode.
Wie kann ich die IronBarcode-Lizenzierung in einer CI/CD-Pipeline einrichten?
Speichern Sie IRONBARCODE_LICENSE_KEY als Pipeline-Geheimnis und weisen Sie IronBarCode.License.LicenseKey im Startup-Code der Anwendung zu. Ein Geheimnis deckt alle Umgebungen ab, einschließlich Entwicklung, Test, Staging und Produktion.
Unterstützt IronBarcode die Generierung von QR-Codes mit benutzerdefiniertem Styling?
Ja. QRCodeWriter.CreateQrCode() unterstützt benutzerdefinierte Farben über ChangeBarCodeColor(), das Einbetten von Logos über AddBrandLogo(), konfigurierbare Fehlerkorrekturstufen und mehrere Ausgabeformate einschließlich PNG, JPG, PDF und Stream.

