Zum Fußzeileninhalt springen
VIDEOS

Wie man QR-Codes anpassbar macht und Logos hinzufügt in C# | IronBracode

Migrating from Syncfusion BarCodeto IronBarcode

Dieser Leitfaden bietet einen vollständigen Migrationspfad von den Barcode-Steuerelementen von Syncfusion — SfBarcode für WinForms und WPF, SfBarcodeGenerator für Blazor und MAUI — zu IronBarcode. Es behandelt die strukturellen Gründe, warum Teams diesen Übergang vornehmen, eine Schritt-für-Schritt-Schnellstartanleitung für den Austausch der NuGet -Pakete und die Lizenzeinrichtung, vollständige Vorher-Nachher-Codebeispiele für jedes gängige Szenario sowie eine Migrations-Checkliste zur Überprüfung einer bestehenden Codebasis. Wenn das Projekt auch andere Syncfusion Komponenten (Grids, Charts, Scheduler) verwendet, bleiben diese Pakete und ihre Registrierungen unberührt – es ändert sich lediglich der barcodespezifische Code.

Warum von Syncfusion BarCodemigrieren?

Leselücke: SfBarcode und SfBarcodeGenerator sind Generationssteuerungen ohne Lesefähigkeit. Es gibt keine .Read() oder .Scan() Methode in einer der Klassen. Wenn für ein Projekt Barcodes aus hochgeladenen Bildern, gescannten Dokumenten oder PDF-Dateien gelesen werden müssen, bietet die Barcode-Steuerung von Syncfusion keine Lösung. Die Syncfusion Dokumentation verweist Teams auf Barcode Reader OPX als Lösung. Dabei handelt es sich um ein separates kommerzielles Produkt, das unabhängig erworben, lizenziert und gewartet werden muss.

OPX als kostenpflichtige Wrapper-Software für freie Software: Barcode-Leser OPX verwendet intern ZXing .NET – eine Open-Source-Barcode-Lesebibliothek, die unter der Apache 2.0-Lizenz veröffentlicht wurde. Apache 2.0 ist eine freizügige Lizenz; Jeder .NET-Entwickler kann ZXing.Net direkt mit dotnet add package ZXing.Net installieren und es in kommerziellen Anwendungen kostenlos verwenden. Ein vollständiger Syncfusion-Lese- und Generierungsworkflow erfordert zwei separate Syncfusion-Produkte, zwei Lizenzvereinbarungen und zwei API-Oberflächen — während die Lesefähigkeit direkt aus der freien Bibliothek, die OPX umhüllt, stammen könnte.

Lizenzklippe für die Community: Die Community-Lizenz von Syncfusion setzt voraus, dass vier Bedingungen gleichzeitig und fortlaufend erfüllt sind: jährlicher Bruttoumsatz unter 1.000.000 US-Dollar, maximal fünf Entwickler, maximal zehn Mitarbeiter und maximal 3.000.000 US-Dollar eingeworbenes Fremdkapital. Behörden sind unabhängig von ihrer Größe ausgeschlossen. Das Nichterfüllen einer einzigen Bedingung führt sofort zur Verpflichtung zur kommerziellen Lizenzierung. Bei einer Series-A-Finanzierungsrunde übersteigt das eingeworbene Kapital typischerweise am Tag des Abschlusses 3.000.000 US-Dollar, wodurch unabhängig von Teamgröße oder Umsatz eine Lizenzgebühr fällig wird. Der kommerzielle Übergang geht von 0 $ zu einem jährlichen Essential Studio Abonnement pro Entwickler — und dieses Abonnement deckt die gesamte Suite ab, nicht nur die Barcode-Komponente. Der von Syncfusion veröffentlichte Weg ist ein individuelles Angebot vom Vertrieb.

Versionsspezifische Schlüsselrotation: Syncfusion Lizenzschlüssel sind an bestimmte Essential Studio-Versionsbereiche gebunden. Für das Upgrade von Version 24.x auf 25.x ist es erforderlich, einen neuen Schlüssel vom Kontoportal abzurufen, diesen Schlüssel im Secrets Store jeder Bereitstellungsumgebung zu aktualisieren und die Bereitstellung erneut durchzuführen, um zu verhindern, dass Testwasserzeichen in den Produktionsausgaben erscheinen. Für Teams mit häufigen Release-Zyklen oder mehreren Bereitstellungszielen wird diese Rotation zu einem wiederkehrenden operativen Mehraufwand, der in keinem Verhältnis zur eigentlichen Anforderung der Generierung eines Barcode-Bildes steht.

Das grundsätzliche Problem

Die Steuerungsarchitektur von Syncfusion macht die programmatische Dateigenerierung indirekt. Das Erstellen einer Barcode-Datei mit SfBarcode erfordert das Vorzuweisen eines Bitmap, das Aufrufen von DrawToBitmap und dann das Speichern der Bitmap — ein WinForms-Darstellungsmuster, das die Windows Forms-Laufzeit als Abhängigkeit mit sich bringt:

// Syncfusion SfBarcode: indirect file output through DrawToBitmap
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "SHIP-2024-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("shipping-label.png", ImageFormat.Png);
// Reading: not possible — requires separate OPX purchase
// Syncfusion SfBarcode: indirect file output through DrawToBitmap
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "SHIP-2024-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("shipping-label.png", ImageFormat.Png);
// Reading: not possible — requires separate OPX purchase
Imports Syncfusion.Licensing
Imports System.Drawing
Imports System.Drawing.Imaging

' Syncfusion SfBarcode: indirect file output through DrawToBitmap
SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "SHIP-2024-001"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.Width = 400
barcode.Height = 150

Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("shipping-label.png", ImageFormat.Png)
End Using
' Reading: not possible — requires separate OPX purchase
$vbLabelText   $csharpLabel

IronBarcode generiert Dateien direkt und liest sie mit demselben Paket:

// IronBarcode: direct generation and reading in one package
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("shipping-label.png");

// Read — same package, no additional product required
var results = BarcodeReader.Read("shipping-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
// IronBarcode: direct generation and reading in one package
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("shipping-label.png");

// Read — same package, no additional product required
var results = BarcodeReader.Read("shipping-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
Imports IronBarCode

' IronBarcode: direct generation and reading in one package
License.LicenseKey = "YOUR-LICENSE-KEY"

' Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPng("shipping-label.png")

' Read — same package, no additional product required
Dim results = BarcodeReader.Read("shipping-label.png")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

IronBarcode vs. Syncfusion Barcode: Funktionsvergleich

Feature Syncfusion BarCode IronBarcode
Barcode-Generierung Ja – UI-Steuerelemente (WinForms, WPF, Blazor, MAUI) Ja – statische API, alle Umgebungen
Barcode-Lesung Nein – ein separates Barcode-Lesegerät OPX ist erforderlich. Ja – dasselbe Paket
OPX liest das Produkt und kapselt ZXing .NET (Apache 2.0) ein. Ja Nicht anwendbar
PDF-Barcode-Ausgabe Nein – zusätzlich wird die Syncfusion.Pdf-Datei benötigt. Ja — SaveAsPdf() integriert
PDF-Barcode-Lesen Nein Ja – einheimische
Serverseitige / Headless-Generierung Erfordert WinForms-Laufzeit (DrawToBitmap) Native – keine Abhängigkeit von der Benutzeroberfläche
Docker-/Linux-Bereitstellung Beschränkt Volle Unterstützung
Minimale ASP.NET Core -API Nicht direkt unterstützt Volle Unterstützung
QR-Code mit eingebettetem Logo Nein Ja — .AddBrandLogo()
Automatische Formaterkennung beim Lesen Nicht anwendbar Ja
Community / kostenlose Stufe Gemeinschaftslizenz (vier gleichzeitige Bedingungen) 30-Tage-Testversion (nur Wasserzeichen)
Kommerzielles Lizenzmodell Jahresabonnement (Essential Studio) Unbefristet (einmalig, siehe ironsoftware.com/csharp/barcode/licensing)
Geltungsbereich des Lizenzschlüssels Versionsspezifisch, wechselt mit größeren NuGet Updates. Versionsstabil innerhalb der Hauptversion
Schritte zur Plattformregistrierung 3–4 Schritte (Lizenz registrieren + SyncfusionBlazor hinzufügen + SyncfusionCore konfigurieren + Razor Importe) Eine Linie, alle Bahnsteige
1D-Formatbereich Code 128, Code 39, EAN, UPC, Codabar und andere Alle Syncfusion Formate Plus PDF417, Aztec, MaxiCode, GS1, USPS IMb und über 50 weitere.
2D-Formatbereich QR-Code, DataMatrix QR-Code, DataMatrix, PDF417, Micro PDF417, Aztec, MaxiCode

Schnellstart

Schritt 1: Ersetzen von NuGet-Paketen

Entfernen Sie das Syncfusion Barcode-Paket für die verwendete Plattform. Wenn das Projekt mehrere Plattformen anvisiert, führen Sie die Entfernung für jede Plattform durch:

# Blazor
dotnet remove package Syncfusion.Blazor.BarcodeGenerator

# WinForms
dotnet remove package Syncfusion.SfBarcode.Windows

# WPF
dotnet remove package Syncfusion.SfBarcode.WPF

# MAUI
dotnet remove package Syncfusion.Maui.Barcode
# Blazor
dotnet remove package Syncfusion.Blazor.BarcodeGenerator

# WinForms
dotnet remove package Syncfusion.SfBarcode.Windows

# WPF
dotnet remove package Syncfusion.SfBarcode.WPF

# MAUI
dotnet remove package Syncfusion.Maui.Barcode
SHELL

Falls nach dem Entfernen des Barcode-Pakets keine weiteren Syncfusion Pakete mehr im Projekt vorhanden sind, entfernen Sie auch das Lizenzierungspaket:

dotnet remove package Syncfusion.Licensing
dotnet remove package Syncfusion.Licensing
SHELL

Installieren Sie IronBarcode – ein Paket für alle Plattformen:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Schritt 2: Namespaces aktualisieren

Entfernen Sie die Syncfusion Barcode-Namensräume und fügen Sie den IronBarcode -Namensraum hinzu:

// Remove these (barcode-specific; leave others if non-barcode Syncfusion controls remain)
using Syncfusion.Windows.Forms.Barcode;
using Syncfusion.Licensing;
// @using Syncfusion.Blazor.BarcodeGenerator  (in _Imports.razor)

// Add this
using IronBarCode;
// Remove these (barcode-specific; leave others if non-barcode Syncfusion controls remain)
using Syncfusion.Windows.Forms.Barcode;
using Syncfusion.Licensing;
// @using Syncfusion.Blazor.BarcodeGenerator  (in _Imports.razor)

// Add this
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

Schritt 3: Lizenz initialisieren

Entfernen Sie die Syncfusion -Lizenzregistrierung und die Plattformkonfiguration aus dem Anwendungsstart. Fügen Sie anschließend an derselben Startstelle eine einzelne IronBarcode -Lizenzzeile hinzu:

// Remove from Program.cs / App.xaml.cs / MauiProgram.cs:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");
builder.Services.AddSyncfusionBlazor();         // Blazor only — remove if no other Syncfusion controls
builder.ConfigureSyncfusionCore();              // MAUI only — remove if no other Syncfusion controls

// Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove from Program.cs / App.xaml.cs / MauiProgram.cs:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");
builder.Services.AddSyncfusionBlazor();         // Blazor only — remove if no other Syncfusion controls
builder.ConfigureSyncfusionCore();              // MAUI only — remove if no other Syncfusion controls

// Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove from Program.vb / App.xaml.vb / MauiProgram.vb:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")
builder.Services.AddSyncfusionBlazor()         ' Blazor only — remove if no other Syncfusion controls
builder.ConfigureSyncfusionCore()              ' MAUI only — remove if no other Syncfusion controls

' Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Für CI/CD-Pipelines und Docker-Container speichern Sie den Schlüssel in einer Umgebungsvariablen:

IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
Imports System

IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
$vbLabelText   $csharpLabel

Beispiele für die Code-Migration

WinForms SfBarcode zu BarcodeWriter

Die WinForms-Migration beseitigt die DrawToBitmap Indirektion und ersetzt sie durch eine direkte Datei-Ausgabekette. Das Syncfusion-Muster erfordert das Vorzuweisen eines Bitmap bekannter Dimensionen; IronBarcode berechnet die Dimensionen im Rahmen des Generierungsaufrufs.

Syncfusion Ansatz:

using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "ORD-20240315-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("order-label.png", ImageFormat.Png);
using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "ORD-20240315-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("order-label.png", ImageFormat.Png);
Imports Syncfusion.Windows.Forms.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "ORD-20240315-001"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.BarHeight = 100
barcode.NarrowBarWidth = 1
barcode.ShowText = True
barcode.Width = 400
barcode.Height = 150

Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("order-label.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

IronBarcode -Ansatz:

using IronBarCode;

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

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .AddBarcodeText()
    .SaveAsPng("order-label.png");
using IronBarCode;

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

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .AddBarcodeText()
    .SaveAsPng("order-label.png");
Imports IronBarCode

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

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .AddBarcodeText() _
    .SaveAsPng("order-label.png")
$vbLabelText   $csharpLabel

BarcodeSymbolType.Code128A wird zu BarcodeEncoding.Code128. Die DrawToBitmap + Bitmap.Save Sequenz kollabiert zu .SaveAsPng(). Falls der Barcode in einem WinForms PictureBox angezeigt und nicht auf Festplatte gespeichert werden muss, verwenden Sie .ToPngBinaryData(), um das Bild in die Steuerung zu laden. Die vollständige Palette der 1D-Barcode-Formate in IronBarcode geht weit über die vom Syncfusion Steuerelement unterstützte Liste hinaus.

Blazor SfBarcodeGenerator zu Minimalem API-Endpunkt

Die Blazor -Migration ist eher eine strukturelle Veränderung als ein Zeilenaustausch. SfBarcodeGenerator ist eine Razor-Komponente, die im Browser über Syncfusions JavaScript-Ebene gerendert wird. IronBarcode enthält keine Razor Komponente; Es handelt sich um eine serverseitige Bibliothek. Das Ersatzmuster ist ein minimaler API-Endpunkt auf dem Server, der Barcode-Bytes zurückgibt und auf der Razor -Seite als Bildquelle referenziert wird.

Syncfusion Ansatz:

@page "/fulfillment"
@using Syncfusion.Blazor.BarcodeGenerator

<SfBarcodeGenerator
    Width="300px"
    Height="150px"
    Type="BarcodeType.Code128"
    Value="@orderNumber">
    <BarcodeGeneratorDisplayText Visibility="true"></BarcodeGeneratorDisplayText>
</SfBarcodeGenerator>

@code {
    private string orderNumber = "ORD-20240315-001";
}

IronBarcode -Ansatz:

Fügen Sie einen Generierungspunkt in Program.cs hinzu:

using IronBarCode;

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .AddBarcodeText()
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
using IronBarCode;

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .AddBarcodeText()
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
Imports IronBarCode

app.MapGet("/barcode/{value}", Function(value As String)
    Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
        .ResizeTo(300, 150) _
        .AddBarcodeText() _
        .ToPngBinaryData()

    Return Results.File(bytes, "image/png")
End Function)
$vbLabelText   $csharpLabel

Verweisen Sie auf den Endpunkt in der Razor Komponente:

@page "/fulfillment"

<img src="/barcode/@orderNumber" alt="Order barcode: @orderNumber" />

@code {
    private string orderNumber = "ORD-20240315-001";
}

Dieser Endpunkt ist unabhängig testbar, von jedem HTTP-Client wiederverwendbar und kompatibel mit Blazor Server, Blazor WebAssembly mit einem gehosteten API-Backend und jedem anderen Web-Frontend.

QR-Code-Generierung

Die Syncfusion QR-Komponente wird ebenfalls im Browser gerendert, ohne serverseitigen Ausgabepfad. IronBarcode generiert QR-Codes serverseitig mit direkter Dateiausgabe.

Syncfusion Ansatz:

@using Syncfusion.Blazor.BarcodeGenerator

<SfQRCodeGenerator
    Width="300px"
    Height="300px"
    Value="https://example.com/product/ABC-123">
    <QRCodeGeneratorDisplayText Visibility="false">
    </QRCodeGeneratorDisplayText>
</SfQRCodeGenerator>

IronBarcode -Ansatz:

using IronBarCode;

// Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300,
    QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("product-qr.png");

// QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("product-qr-branded.png");
using IronBarCode;

// Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300,
    QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("product-qr.png");

// QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("product-qr-branded.png");
Imports IronBarCode

' Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300, QRCodeWriter.QrErrorCorrectionLevel.High) _
    .SaveAsPng("product-qr.png")

' QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("product-qr-branded.png")
$vbLabelText   $csharpLabel

OPX-Lesegerät-Ersatz

Wenn das Projekt Barcode Reader OPX verwendet hat oder eine Leseanforderung auf einen späteren Kauf von OPX verschoben hat, ersetzt IronBarcode diese Abhängigkeit durch das bereits installierte Paket. Kein Folgeprodukt, keine Zweitlizenz.

Syncfusion Ansatz (Barcode-Lesegerät OPX):

// Requires separate Syncfusion BarCodeReader OPX purchase
// OPX wraps ZXing.Net internally (Apache 2.0 — free to use directly)
using Syncfusion.BarcodeReader;

var reader = new BarcodeReader();
var results = reader.ReadBarcodes("warehouse-scan.png");
foreach (var result in results)
    Console.WriteLine($"Value: {result.Value}");
// Requires separate Syncfusion BarCodeReader OPX purchase
// OPX wraps ZXing.Net internally (Apache 2.0 — free to use directly)
using Syncfusion.BarcodeReader;

var reader = new BarcodeReader();
var results = reader.ReadBarcodes("warehouse-scan.png");
foreach (var result in results)
    Console.WriteLine($"Value: {result.Value}");
Imports Syncfusion.BarcodeReader

Dim reader As New BarcodeReader()
Dim results = reader.ReadBarcodes("warehouse-scan.png")
For Each result In results
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

IronBarcode -Ansatz:

using IronBarCode;

// Included in the same NuGet package as generation — no second product required
var results = BarcodeReader.Read("warehouse-scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
}
using IronBarCode;

// Included in the same NuGet package as generation — no second product required
var results = BarcodeReader.Read("warehouse-scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
}
Imports IronBarCode

' Included in the same NuGet package as generation — no second product required
Dim results = BarcodeReader.Read("warehouse-scan.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
Next
$vbLabelText   $csharpLabel

Die Dokumentation zum Barcode-Lesen umfasst das Lesen aus Byte-Arrays für Upload-Handler, die Optimierung des Verhältnisses von Geschwindigkeit zu Genauigkeit sowie die Erkennung mehrerer Barcodes.

PDF-Barcode-Generierung

Syncfusion Barcode-Steuerelemente verfügen über keinen PDF-Ausgabepfad. IronBarcode behandelt PDF als erstklassiges Ausgabeformat.

Syncfusion Ansatz:

//Neindirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
// Step 1: Generate to Bitmap via DrawToBitmap
// Step 2: Load Syncfusion PDF document
// Step 3: Insert bitmap as image element
// Two packages, two APIs, two license obligations
//Neindirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
// Step 1: Generate to Bitmap via DrawToBitmap
// Step 2: Load Syncfusion PDF document
// Step 3: Insert bitmap as image element
// Two packages, two APIs, two license obligations
'Neindirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
' Step 1: Generate to Bitmap via DrawToBitmap
' Step 2: Load Syncfusion PDF document
' Step 3: Insert bitmap as image element
' Two packages, two APIs, two license obligations
$vbLabelText   $csharpLabel

IronBarcode -Ansatz:

using IronBarCode;

// Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("pallet-label.pdf");

// Read barcodes from an existing PDF
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
using IronBarCode;

// Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("pallet-label.pdf");

// Read barcodes from an existing PDF
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
Imports IronBarCode

' Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPdf("pallet-label.pdf")

' Read barcodes from an existing PDF
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Der Leitfaden zur Barcode-PDF-Generierung behandelt mehrseitige PDF-Ausgaben und das Einbetten von Barcodes neben anderen Dokumentinhalten.

Syncfusion BarCodeAPI zu IronBarcode Mapping-Referenz

Syncfusion IronBarcode
SyncfusionLicenseProvider.RegisterLicense("KEY") IronBarCode.License.LicenseKey = "key"
builder.Services.AddSyncfusionBlazor() Nicht erforderlich
builder.ConfigureSyncfusionCore() Nicht erforderlich
new SfBarcode() BarcodeWriter.CreateBarcode() (statisch)
barcode.Text = "value" Erster Parameter von CreateBarcode()
barcode.Symbology = BarcodeSymbolType.Code128A BarcodeEncoding.Code128
barcode.Symbology = BarcodeSymbolType.QRBarcode QRCodeWriter.CreateQrCode()
barcode.BarHeight = 100 .ResizeTo(width, 100)
barcode.ShowText = true .AddBarcodeText()
barcode.DrawToBitmap(bitmap, rect) .SaveAsPng(path)
Manuelles BitmapMemoryStream .ToPngBinaryData()
<SfBarcodeGenerator Type="BarcodeType.Code128" Value="..."> BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) im API-Endpunkt
<SfQRCodeGenerator Value="..."> QRCodeWriter.CreateQrCode(value, size) im API-Endpunkt
BarcodeType.Code128 (Blazor-Enum) BarcodeEncoding.Code128
Barcode-Lesegerät OPX (separates Produkt, beinhaltet ZXing .NET) BarcodeReader.Read(path) — nativ, gleiches Paket
Keine Lese-API in Kontrolle BarcodeReader.Read(path)
Keine PDF-Ausgabe in der Steuerung .SaveAsPdf(path)
Kein PDF-Lesen BarcodeReader.Read("document.pdf")

Gängige Migrationsprobleme und Lösungen

Problem 1: Testwasserzeichen nach NuGet Update

Syncfusion: Durch das Upgrade von Essential Studio 24.x auf 25.x wird der bestehende Lizenzschlüssel ungültig. Alle Ausgaben, die vor der Aktualisierung des Geheimnisspeichers generiert wurden, werden mit einem Testwasserzeichen versehen. Dies ist ein stiller Fehler – die Anwendung läuft zwar weiter, erzeugt aber nicht konforme Ergebnisse.

Lösung: Nach der Aktualisierung des IronBarcode NuGet Pakets ändert sich der Lizenzschlüssel innerhalb einer Hauptversion nicht. Für kleinere Updates oder Patches ist keine Aktualisierung der Geheimnisse oder eine erneute Bereitstellung erforderlich. Beim Upgrade auf eine neue Hauptversion muss der Schlüssel einmalig am Einstiegspunkt der Anwendung aktualisiert werden:

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

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Problem 2: DrawToBitmap schlägt in Headless-Umgebungen fehl

Syncfusion: SfBarcode.DrawToBitmap hängt von der Windows Forms-Darstellungspipeline ab. In einem ASP.NET Core-Prozess, Azure-Funktion oder Linux-Docker-Container wird das Aufrufen von DrawToBitmap InvalidOperationException auslösen oder eine leere Bitmap erzeugen, da keine Windows Forms-Nachrichtenschleife vorhanden ist.

Lösung: Ersetzen Sie durch BarcodeWriter.CreateBarcode(). IronBarcode generiert Barcodes in verwaltetem Code ohne Abhängigkeit von der UI-Laufzeitumgebung:

// Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .ToPngBinaryData();
// Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .ToPngBinaryData();
' Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Problem 3: SfBarcodeGenerator liefert keine serverseitige Ausgabe

Syncfusion: SfBarcodeGenerator ist eine Razor-Komponente ohne serverseitige API-Oberfläche. Bei dem Versuch, es in einer Controller-Aktion oder einem Hintergrunddienst zu verwenden, findet sich keine geeignete Methode zum Generieren von Barcode-Bytes.

Lösung: Erstellen Sie einen minimalen API-Endpunkt, der den Barcode serverseitig generiert und als HTTP-Antwort zurückgibt. Verweisen Sie den Endpunkt von der Razor-Komponente über einen <img src="..."> Tag:

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .ToPngBinaryData();
    return Results.File(bytes, "image/png");
});
app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .ToPngBinaryData();
    return Results.File(bytes, "image/png");
});
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Http

app.MapGet("/barcode/{value}", Function(value As String)
                                   Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
                                       .ResizeTo(300, 150) _
                                       .ToPngBinaryData()
                                   Return Results.File(bytes, "image/png")
                               End Function)
$vbLabelText   $csharpLabel

Problem 4: Fehlende Lesefunktion (OPX nicht erworben)

Syncfusion: Projekte, bei denen das Barcode-Lesen verschoben wurde, weil OPX noch nicht erworben wurde, verfügen über keinen Lesecode, der migriert werden könnte. Um die Lesefähigkeit von Grund auf neu hinzuzufügen, sind die Beschaffung von OPX, die Integration und eine neue Lizenzvereinbarung erforderlich.

Lösung: Die IronBarcode Lesefunktion ist im selben Paket enthalten. Es ist keine Beschaffung oder Zweitlizenz erforderlich. Fügen Sie BarcodeReader.Read(path) überall dort hinzu, wo das Lesen erforderlich ist:

var results = BarcodeReader.Read("incoming-scan.png");
var results = BarcodeReader.Read("incoming-scan.png");
Dim results = BarcodeReader.Read("incoming-scan.png")
$vbLabelText   $csharpLabel

Problem 5: Ablauf der Gemeinschaftslizenz während der Migration

Syncfusion: Ein Team, das die Community-Lizenz verwendet und während des Migrationszeitraums eine der Zulassungsschwellen überschreitet – einschließlich des Abschlusses einer Finanzierungsrunde –, muss möglicherweise feststellen, dass die Syncfusion Steuerelemente keine gültigen Ausgaben mehr erzeugen, bevor die Migration abgeschlossen ist.

Lösung: Die 30-tägige Testphase von IronBarcode ermöglicht eine umfassende Evaluierung ohne Umsatz-, Mitarbeiterzahl- oder Kapitalbeschränkungen. Das Testwasserzeichen erscheint auf der generierten Ausgabe; Durch die Aktivierung eines gekauften Lizenzschlüssels wird dieser entfernt. Im IronBarcode -Lizenzmodell gibt es keine Beschränkungen hinsichtlich der Unternehmensgröße.

Syncfusion Barcode-Migrations-Checkliste

Vor der Migration anfallende Aufgaben

Überprüfen Sie den Quellcode, um alle Dateien zu finden, die auf den Syncfusion -Barcode verweisen:

grep -r "SyncfusionLicenseProvider.RegisterLicense\|AddSyncfusionBlazor\|ConfigureSyncfusionCore" --include="*.cs" .
grep -r "new SfBarcode\(\)\|SfBarcodeGenerator\|SfQRCodeGenerator" --include="*.cs" --include="*.razor" .
grep -r "BarcodeSymbolType\.\|BarcodeType\." --include="*.cs" --include="*.razor" .
grep -r "DrawToBitmap\|barcode\.Text\s*=" --include="*.cs" .
grep -r "Syncfusion\.Barcode\|Syncfusion\.Blazor\.BarcodeGenerator" --include="*.csproj" .
grep -r "SyncfusionLicenseProvider.RegisterLicense\|AddSyncfusionBlazor\|ConfigureSyncfusionCore" --include="*.cs" .
grep -r "new SfBarcode\(\)\|SfBarcodeGenerator\|SfQRCodeGenerator" --include="*.cs" --include="*.razor" .
grep -r "BarcodeSymbolType\.\|BarcodeType\." --include="*.cs" --include="*.razor" .
grep -r "DrawToBitmap\|barcode\.Text\s*=" --include="*.cs" .
grep -r "Syncfusion\.Barcode\|Syncfusion\.Blazor\.BarcodeGenerator" --include="*.csproj" .
SHELL

Dokumentieren Sie Folgendes, bevor Sie Migrationscode schreiben:

  • Listen Sie jede Datei auf, die SyncfusionLicenseProvider.RegisterLicense aufruft
  • Listen Sie jede SfBarcode Instanzierung und deren Eigenschaftszuweisungen auf
  • Listen Sie jede Nutzung von <SfBarcodeGenerator> und <SfQRCodeGenerator> Razor-Komponenten auf
  • Listen Sie jeden DrawToBitmap Aufruf und den nachgelagerten Speicher- oder Anzeigepfad auf
  • Prüfen Sie, ob der Barcode-Leser OPX installiert ist; Falls ja, listen Sie alle Lesungsanrufe auf.

Aufgaben der Code-Aktualisierung

  1. Entfernen Sie die Syncfusion Barcode- NuGet Pakete für jede Plattform im Projekt.
  2. Entfernen Sie das Syncfusion.Licensing NuGet-Paket, wenn keine anderen Syncfusion-Steuerelemente verbleiben
  3. Installieren Sie das IronBarcode NuGet-Paket
  4. Ersetzen Sie SyncfusionLicenseProvider.RegisterLicense("KEY") durch IronBarCode.License.LicenseKey = "KEY" an der Anwendungseintrittsstelle
  5. Entfernen Sie builder.Services.AddSyncfusionBlazor(), wenn keine anderen Syncfusion-Steuerelemente verbleiben
  6. Entfernen Sie builder.ConfigureSyncfusionCore(), wenn keine anderen Syncfusion-Steuerelemente verbleiben
  7. Entfernen Sie @using Syncfusion.Blazor und @using Syncfusion.Blazor.BarcodeGenerator aus _Imports.razor, falls zutreffend
  8. Ersetzen Sie using Syncfusion.Windows.Forms.Barcode und using Syncfusion.Licensing durch using IronBarCode
  9. Ersetzen Sie jeden new SfBarcode() + Eigenschaftszuweisungen + DrawToBitmap Block durch BarcodeWriter.CreateBarcode(value, BarcodeEncoding.X).ResizeTo(w, h).SaveAsPng(path)
  10. Ersetzen Sie BarcodeSymbolType.Code128A (und Äquivalente) durch BarcodeEncoding.Code128
  11. Ersetzen Sie BarcodeType.Code128 (Blazor-Enum) durch BarcodeEncoding.Code128
  12. Ersetzen Sie jede <SfBarcodeGenerator> Razor-Komponente durch einen minimalen API-Endpunkt und einen <img src="..."> Verweis in der Komponente
  13. Ersetzen Sie jede <SfQRCodeGenerator> Razor-Komponente durch einen QRCodeWriter.CreateQrCode() Endpunkt und einen <img src="..."> Verweis
  14. Ersetzen Sie alle Barcode Reader OPX-Leseaufrufe durch BarcodeReader.Read(path)
  15. Fügen Sie BarcodeReader.Read(path) hinzu, wo auch immer vorher eine Lese-Fähigkeit fehlte, da OPX nicht gekauft wurde

Post-Migrationstests

  • Überprüfen Sie mithilfe eines Hardware-Scanners oder einer Referenzleseanwendung, ob die generierten Barcode-Bilder scan-gültig sind.
  • Stellen Sie sicher, dass nach der Aktivierung des Lizenzschlüssels keine Testwasserzeichen auf den generierten Ausgaben erscheinen.
  • Bestätigen Sie, dass BarcodeReader.Read() den erwarteten Wert und das Format für jeden verwendeten Barcode-Typ zurückgibt
  • Testen Sie die PDF-Ausgabe mit .SaveAsPdf(), um zu bestätigen, dass die Seitendimensionen und die Barcode-Dimensionen den Entwurfsspezifikationen entsprechen
  • Testen Sie den minimalen API-Endpunkt von Blazor direkt (über Browser oder HTTP-Client), bevor Sie innerhalb der Razor Komponente testen.
  • Bestätigen Sie, dass die Docker- und Linux-Bereitstellung die gleiche Ausgabe wie die Windows-Entwicklungsrechner erzeugt.
  • Führen Sie einen abschließenden grep Audit durch, um sicherzustellen, dass keine verbleibenden Verweise auf SfBarcode, SfBarcodeGenerator, DrawToBitmap, BarcodeSymbolType oder SyncfusionLicenseProvider vorhanden sind

Wichtigste Vorteile der Migration zu IronBarcode

Einheitliche Generierung und Lesung: Nach der Migration erfolgen sowohl die Generierung als auch die Lesung über ein einziges NuGet Paket unter einer einzigen Lizenz. Es gibt kein zweites Produkt zu kaufen, keine zweite API-Oberfläche zu erlernen und keine Abhängigkeit von einem ZXing .NET -Wrapper, die ein Lizenzbudget verbraucht, das stattdessen für die direkte Open-Source-Bibliothek verwendet werden könnte.

Wegfall der versionsspezifischen Schlüsselrotation: IronBarcode Lizenzschlüssel bleiben auch bei kleineren Updates und Patches innerhalb einer Hauptversion gültig. Der operative Aufwand, einen neuen Schlüssel zu beschaffen, Geheimnisse in jeder Bereitstellungsumgebung zu aktualisieren und bei jedem größeren NuGet Versionsupdate die Testwasserzeichen erneut zu entfernen, entfällt vollständig.

Plattformunabhängige Bereitstellung: Das gleiche IronBarcode Paket und die gleiche API-Generierung funktionieren in WinForms-Desktopanwendungen, ASP.NET Core -Diensten, Azure Functions, Konsolenanwendungen und Linux-Docker-Containern. Die Windows Forms-Laufzeitabhängigkeit eingeführt durch DrawToBitmap wird entfernt, und Blazor-Implementierungen wechseln von browsergerenderten Komponenten zu serverseitigen API-Endpunkten, die unabhängig testbar und klienten-agnostisch sind.

Native PDF-Unterstützung: Sowohl die Generierung als auch das Lesen von PDFs erfolgen nativ. Die Erstellung eines Barcode-PDFs erfordert nicht mehr die Koordination zweier Syncfusion Produkte; Das Auslesen von Barcodes aus PDF-Manifesten und Versanddokumenten erfordert keinen separaten PDF-Extraktionsschritt mehr.

Vorhersehbare Lizenzökonomie: Das unbefristete Lizenzmodell von IronBarcode setzt keine Umsatz-, Personal-, Mitarbeiterzahl- oder Kapitalschwellenwerte voraus. Teams, die die Voraussetzungen für die Syncfusion Community License bereits erfüllt haben oder dies voraussichtlich bald tun werden, wechseln zu einem Lizenzmodell, bei dem das organisatorische Wachstum keinen Compliance-Fall auslöst.

Hinweis:Syncfusion und ZXing.NET sind eingetragene Marken der jeweiligen Eigentümer. Diese Seite ist weder mit Syncfusion noch mit ZXing.NET verbunden, noch wird sie 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.

Häufig gestellte Fragen

Warum sollte ich von Syncfusion BarCode zu IronBarcode migrieren?

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 Syncfusion-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 Syncfusion 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 Syncfusion Barcode und IronBarcode während der Migration 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 Syncfusion 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 Syncfusion 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 Syncfusion 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.

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

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an