Zum Fußzeileninhalt springen
MIT ANDEREN KOMPONENTEN VERGLEICHEN

Dynamsoft Barcode Reader vs IronBarcode: C# Barcode Bibliothek Vergleich

Dynamsoft Barcode Reader ist in dem, wofür er entwickelt wurde – dem Einlesen von Barcodes aus einem Live-Kamerabild mit 30 Bildern pro Sekunde – wirklich hervorragend. Die Algorithmen sind schnell, die Symbolisierungsunterstützung ist breit gefächert, und das mobile SDK, das es auf iOS und Android einbindet, ist eine der besseren Optionen in diesem Bereich. Wenn es sich bei Ihrem Produkt um eine Lagerscanning-App handelt, bei der ein Mitarbeiter ein Smartphone auf ein Palettenetikett richtet und eine Erkennungszeit von unter 100 ms erwartet, ist Dynamsoft eine glaubwürdige Option.

Befinden sich Ihre Barcodes in PDF-Dateien auf einem Server ohne Internetverbindung, ist die Bibliothek nicht mit dem Anwendungsfall kompatibel – die Lizenzvalidierung erinnert Sie bei jedem Start daran. BarcodeReader.InitLicense stellt eine Netzwerkanfrage an den Lizenzserver von Dynamsoft. In einem vom Internet abgeschotteten Rechenzentrum, einer isolierten VPC oder einer beliebigen Umgebung, in der der ausgehende Internetzugang eingeschränkt ist, schlägt dieser Anruf fehl, bevor auch nur ein einziger Barcode dekodiert wurde. Die Offline-Alternative – der Bezug einer gerätespezifischen Lizenzdatei mit UUID vom Dynamsoft-Support – funktioniert zwar, verursacht aber einen zusätzlichen operativen Aufwand, der in den meisten Dokumentenverarbeitungs-Workflows nicht eingeplant war.

Bei diesem Vergleich geht es um die Eignung für den jeweiligen Anwendungsfall, nicht um die Qualität der Bibliothek. Dynamsoft hat eine kamerazentrierte Bibliothek entwickelt und diese gut umgesetzt. Die Frage ist, ob sich die Annahmen des kamerazentrierten Ansatzes auf einen serverseitigen Dokumentenverarbeitungs-Workflow übertragen lassen.

Dynamsoft Barcode-Lesegerät verstehen

Die Architektur von Dynamsoft spiegelt den Ursprung des Unternehmens im Kamerabereich wider. Die Startsequenz erfordert eine Online-Lizenzvalidierung, das Einstellungsmodell enthält für die Echtzeit-Bildverarbeitung optimierte Timeout-Werte, und die API stellt Konzepte wie DeblurLevel bereit, die speziell für die variablen Fokus- und Bewegungsunschärfebedingungen einer Handkamera existieren:

// Dynamsoft: license server call required at startup
using Dynamsoft.DBR;

// This call contacts Dynamsoft's license server — fails in air-gapped environments
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
    throw new InvalidOperationException($"License validation failed: {errorMsg}");

var reader = new BarcodeReader();

// Settings tuned for camera frame processing
var settings = reader.GetRuntimeSettings();
settings.DeblurLevel = 5;          // compensates for camera motion blur
settings.ExpectedBarcodesCount = 1; // camera focus: one barcode at a time
settings.Timeout = 100;             // 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings);
// Dynamsoft: license server call required at startup
using Dynamsoft.DBR;

// This call contacts Dynamsoft's license server — fails in air-gapped environments
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
    throw new InvalidOperationException($"License validation failed: {errorMsg}");

var reader = new BarcodeReader();

// Settings tuned for camera frame processing
var settings = reader.GetRuntimeSettings();
settings.DeblurLevel = 5;          // compensates for camera motion blur
settings.ExpectedBarcodesCount = 1; // camera focus: one barcode at a time
settings.Timeout = 100;             // 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings);
Imports Dynamsoft.DBR

' Dynamsoft: license server call required at startup
' This call contacts Dynamsoft's license server — fails in air-gapped environments
Dim errorCode As Integer = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", errorMsg:=Nothing)
If errorCode <> CType(EnumErrorCode.DBR_OK, Integer) Then
    Throw New InvalidOperationException($"License validation failed: {errorMsg}")
End If

Dim reader As New BarcodeReader()

' Settings tuned for camera frame processing
Dim settings = reader.GetRuntimeSettings()
settings.DeblurLevel = 5          ' compensates for camera motion blur
settings.ExpectedBarcodesCount = 1 ' camera focus: one barcode at a time
settings.Timeout = 100             ' 100ms — optimized for 30fps video pipeline
reader.UpdateRuntimeSettings(settings)
$vbLabelText   $csharpLabel

Dies ist eine für ihren Zweck gut konzipierte API. Die Einstellung Timeout = 100 ist sinnvoll, wenn Sie 30 Bilder pro Sekunde von einer Kamera verarbeiten und es sich nicht leisten können, 500 ms für ein einzelnes Bild zu verschwenden. Für einen Server, der eine hochgeladene PDF-Datei verarbeitet, ist ein Timeout von 100 ms eine sinnlose Einschränkung, die dazu führen kann, dass Lesevorgänge bei dichteren Barcodes fehlschlagen.

Das instanzbasierte Design — new BarcodeReader(), reader.Dispose()— folgt der Semantik einer Kamerasitzung: Sie öffnen eine Sitzung, verarbeiten Frames und schließen die Sitzung. Für die Dateiverarbeitung fügt dieser Lebenszyklus unnötigerweise zusätzlichen Code hinzu.

Das PDF-Problem

Dynamsoft Barcode Reader bietet keine native PDF-Unterstützung. Wenn es sich bei der Eingabe um eine PDF-Datei handelt, muss Ihr Code jede Seite zuerst in ein Bild umwandeln und dieses Bild dann an Dynamsoft übergeben. Hierfür ist eine separate PDF-Rendering-Bibliothek erforderlich – üblicherweise wird PdfiumViewer verwendet –, die eine NuGet Abhängigkeit, eine native Binärabhängigkeit (pdfium.dll unter Windows oder libpdfium unter Linux) und eine Rendering-Schleife um jede PDF-Operation herum hinzufügt:

// Dynamsoft PDF processing — requires PdfiumViewer (external dependency)
// dotnet add package PdfiumViewer
// dotnet add package PdfiumViewer.Native.x86_64.v8-xfa (platform-specific)
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.DBR;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();

    using (var pdfDoc = PdfDocument.Load(pdfPath))
    {
        for (int page = 0; page < pdfDoc.PageCount; page++)
        {
            // Render each page at 300 DPI
            using var image = pdfDoc.Render(page, 300, 300, true);
            using var ms = new MemoryStream();
            image.Save(ms, ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // Now pass rendered image bytes to Dynamsoft
            TextResult[] barcodes = reader.DecodeFileInMemory(imageBytes, "");
            foreach (var b in barcodes)
                results.Add(b.BarcodeText);
        }
    }

    return results;
}
// Dynamsoft PDF processing — requires PdfiumViewer (external dependency)
// dotnet add package PdfiumViewer
// dotnet add package PdfiumViewer.Native.x86_64.v8-xfa (platform-specific)
using PdfiumViewer;
using System.Drawing.Imaging;
using Dynamsoft.DBR;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();

    using (var pdfDoc = PdfDocument.Load(pdfPath))
    {
        for (int page = 0; page < pdfDoc.PageCount; page++)
        {
            // Render each page at 300 DPI
            using var image = pdfDoc.Render(page, 300, 300, true);
            using var ms = new MemoryStream();
            image.Save(ms, ImageFormat.Png);
            byte[] imageBytes = ms.ToArray();

            // Now pass rendered image bytes to Dynamsoft
            TextResult[] barcodes = reader.DecodeFileInMemory(imageBytes, "");
            foreach (var b in barcodes)
                results.Add(b.BarcodeText);
        }
    }

    return results;
}
Imports PdfiumViewer
Imports System.Drawing.Imaging
Imports Dynamsoft.DBR

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results As New List(Of String)()

    Using pdfDoc = PdfDocument.Load(pdfPath)
        For page As Integer = 0 To pdfDoc.PageCount - 1
            ' Render each page at 300 DPI
            Using image = pdfDoc.Render(page, 300, 300, True)
                Using ms As New MemoryStream()
                    image.Save(ms, ImageFormat.Png)
                    Dim imageBytes As Byte() = ms.ToArray()

                    ' Now pass rendered image bytes to Dynamsoft
                    Dim barcodes As TextResult() = reader.DecodeFileInMemory(imageBytes, "")
                    For Each b In barcodes
                        results.Add(b.BarcodeText)
                    Next
                End Using
            End Using
        Next
    End Using

    Return results
End Function
$vbLabelText   $csharpLabel

Dies sind drei Abhängigkeiten (Dynamsoft, PdfiumViewer und eine plattformspezifische native Binärdatei), eine Rendering-Schleife pro Seite und ein erheblicher Speicher-Overhead bei Dokumenten mit vielen Seiten.

IronBarcode liest direkt aus einer PDF-Datei:

// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package IronBarcode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: PDF is native — no extra library, no render loop
// NuGet: dotnet add package IronBarcode
var results = BarcodeReader.Read("invoice.pdf");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
' IronBarcode: PDF is native — no extra library, no render loop
' NuGet: dotnet add package IronBarcode
Dim results = BarcodeReader.Read("invoice.pdf")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Ein Anruf. Kein PDF-Renderer. Keine Schleife pro Seite. Keine plattformspezifische native Binärdatei für die PDF-Unterstützung.

Lizenzkomplexität

Die Online-Lizenzvalidierung ist unkompliziert, wenn der Server über einen Internetzugang verfügt. Wenn dies nicht der Fall ist – oder wenn Netzwerkrichtlinien eine explizite Zulassungsliste für ausgehende Hosts erfordern – vergrößert sich die Angriffsfläche für Validierungsfehler:

// Dynamsoft: error code pattern required
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
{
    // Handle: network timeout, license server unreachable, invalid key,
    // expired key, device count exceeded, etc.
    throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
// Dynamsoft: error code pattern required
int errorCode = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", out string errorMsg);
if (errorCode != (int)EnumErrorCode.DBR_OK)
{
    // Handle: network timeout, license server unreachable, invalid key,
    // expired key, device count exceeded, etc.
    throw new InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}");
}
Imports System

' Dynamsoft: error code pattern required
Dim errorCode As Integer = BarcodeReader.InitLicense("YOUR-LICENSE-KEY", errorMsg:=Nothing)
If errorCode <> CType(EnumErrorCode.DBR_OK, Integer) Then
    ' Handle: network timeout, license server unreachable, invalid key,
    ' expired key, device count exceeded, etc.
    Throw New InvalidOperationException($"Dynamsoft license failed [{errorCode}]: {errorMsg}")
End If
$vbLabelText   $csharpLabel

Die Offline-Lizenzierung mit Dynamsoft erfordert einen separaten Arbeitsablauf. Sie rufen BarcodeReader.OutputLicenseToString() auf, um die Geräte-UUID abzurufen, senden diese UUID an den Dynamsoft-Support, um eine gerätespezifische Lizenzdatei zu erhalten, und aktivieren diese dann mit InitLicenseFromLicenseContent:

// Dynamsoft offline license — device UUID required
string uuid = BarcodeReader.OutputLicenseToString();
// Send uuid to Dynamsoft support → receive licenseContent string
int errorCode = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, out string errorMsg);
// Dynamsoft offline license — device UUID required
string uuid = BarcodeReader.OutputLicenseToString();
// Send uuid to Dynamsoft support → receive licenseContent string
int errorCode = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, out string errorMsg);
' Dynamsoft offline license — device UUID required
Dim uuid As String = BarcodeReader.OutputLicenseToString()
' Send uuid to Dynamsoft support → receive licenseContent string
Dim errorCode As Integer = BarcodeReader.InitLicenseFromLicenseContent("YOUR-LICENSE-KEY", licenseContent, uuid, errorMsg)
$vbLabelText   $csharpLabel

In einer Docker-Umgebung, in der Container kurzlebig sind und sich die UUIDs bei jedem Deployment ändern, entsteht dadurch ein kontinuierlicher operativer Aufwand. Bei jedem Containerstart ist möglicherweise eine neue UUID erforderlich, die beim Dynamsoft-Support registriert wird.

Die Aktivierung der IronBarcode -Lizenz ist eine einzelne, lokal ausgewertete Zuweisung:

// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY";
// IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY";
' IronBarCode: local validation, no network required
IronBarCode.License.LicenseKey = "YOUR-KEY"
$vbLabelText   $csharpLabel

Kein Fehlercode zum Überprüfen. Keine Netzwerkabhängigkeit. Keine gerätespezifische Registrierung. Dieselbe Zeile funktioniert auf einem Entwicklungsrechner, in einer CI/CD-Pipeline, in einem Docker-Container und auf einem vom Netzwerk isolierten Server.

Anwendungsfälle Kamera vs. Datei

Ehrlich gesagt sind Dynamsoft und IronBarcode für unterschiedliche primäre Anwendungsfälle optimiert. Die folgende Tabelle verdeutlicht dies, anstatt eine Bibliothek als universell besser zu deklarieren:

Szenario Dynamsoft Barcode-Lesegerät IronBarcode
Live-Kamerabild (30 Bilder/Sekunde) Hervorragend – optimiert für Echtzeit Nicht der primäre Anwendungsfall
Mobiles SDK (iOS/Android) Vollständiges SDK verfügbar .NET exklusiv
Serverseitige Dateiverarbeitung Funktioniert, erfordert aber Umwege. Primärer Anwendungsfall
PDF-Barcode-Lesen Erfordert einen externen PDF-Renderer Native Unterstützung
Air-Gap-Bereitstellung Erfordert Geräte-UUID + Dynamsoft-Unterstützung Funktioniert out of the box
Docker / ephemere Container UUID-Verwaltung pro Container Einzelne Umgebungsvariable
Offline-Lizenz Gerätespezifische Datei vom Dynamsoft-Support Standard-Lizenzschlüssel
ASP.NET Core API Werke (zusätzlicher Lizenzvorschlag) Funktioniert einwandfrei
Azure-Funktionen Netzwerkrichtlinie für license.dynamsoft.com erforderlich Keine Netzwerkverbindung erforderlich
Barcode-Generierung Nein – nur Lesen Ja – Generation und Lesen
QR-Code-Generierung Nein Ja – QRCodeWriter

IronBarcode verstehen

IronBarcode ist eine .NET Bibliothek zum Generieren und Lesen von Barcodes. Die API ist statisch – keine Instanzen, keine Dispose-Aufrufe, kein Session-Lebenszyklus. Die Lizenzaktivierung erfolgt lokal. PDF-Unterstützung ist integriert:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-KEY";

// Read from an image file
var results = BarcodeReader.Read("label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

// Read from a PDF — native, no extra library
var pdfResults = BarcodeReader.Read("manifest.pdf");

// Read with options for high-accuracy or high-throughput scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads= 4
};
var multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options);
// NuGet: dotnet add package IronBarcode
using IronBarCode;

// License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-KEY";

// Read from an image file
var results = BarcodeReader.Read("label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");

// Read from a PDF — native, no extra library
var pdfResults = BarcodeReader.Read("manifest.pdf");

// Read with options for high-accuracy or high-throughput scenarios
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads= 4
};
var multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options);
Imports IronBarCode

' License — local validation, no network call
IronBarCode.License.LicenseKey = "YOUR-KEY"

' Read from an image file
Dim results = BarcodeReader.Read("label.png")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next

' Read from a PDF — native, no extra library
Dim pdfResults = BarcodeReader.Read("manifest.pdf")

' Read with options for high-accuracy or high-throughput scenarios
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .MaxParallelThreads = 4
}
Dim multiResults = BarcodeReader.Read("multi-barcode-sheet.png", options)
$vbLabelText   $csharpLabel

Die Erzeugung ist genauso unkompliziert:

// Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

// Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("tracking-qr.png");

// Get bytes for HTTP response
byte[] bytes = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .ToPngBinaryData();
// Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

// Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("tracking-qr.png");

// Get bytes for HTTP response
byte[] bytes = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .ToPngBinaryData();
Imports System

' Generate Code 128
BarcodeWriter.CreateBarcode("SHIP-7734-X", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng("shipping-label.png")

' Generate QR with error correction and embedded logo
QRCodeWriter.CreateQrCode("https://track.example.com/7734", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("tracking-qr.png")

' Get bytes for HTTP response
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("ITEM-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Funktionsvergleich

Feature Dynamsoft Barcode-Lesegerät IronBarcode
Barcode-Lesung Ja – kameraoptimiert Ja – datei- und dokumentenoptimiert
Barcode-Generierung Nein Ja
QR-Code-Generierung Nein Ja – QRCodeWriter
Native PDF-Unterstützung Nein – erfordert einen externen Renderer. Ja — BarcodeReader.Read(pdf)
Lizenzvalidierung Online (Lizenzserver) Lokale
Air-Gap / Offline Geräte-UUID + Dynamsoft-Unterstützung erforderlich Standardschlüssel, funktioniert offline
Docker / Container UUID-Verwaltung pro Containerinstanz Einzelne Umgebungsvariable
Azure-Funktionen Ausgehende Netzwerkrichtlinie erforderlich Keine Netzwerkverbindung erforderlich
AWS Lambda Ausgehende Netzwerkrichtlinie erforderlich Keine Netzwerkverbindung erforderlich
Mobiles SDK Verfügbar für iOS und Android .NET exklusiv
Echtzeitkamera (30 Bilder/Sekunde) Primäres Designziel Dafür nicht ausgelegt
Code 128 Ja Ja
QR-Code Ja (liest) Ja (Lesen und Generation)
Datenmatrix Ja Ja
PDF417 Ja Ja
aztekisch Ja Ja
EAN / UPC Ja Ja
Instanzverwaltung new BarcodeReader() + Dispose() Statisch – keine Instanz
Mehrfach-Barcode-Lesung Erwartete Barcode-Anzahl ExpectMultipleBarcodes = true
Lesegeschwindigkeitssteuerung Zeitüberschreitung + DeblurLevel ReadingSpeed-Enumeration
Parallellesen Manuelles Einfädeln MaxParallelThreads
Preismodell Abonnement Unbefristet ab $749
.NET Unterstützung .NET Standard, .NET 5+ .NET 4.6.2 bis .NET 9
Plattformen Windows, Linux, macOS Windows, Linux, macOS, Docker, Azure, AWS Lambda

API-Mapping-Referenz

Für Teams, die Dynamsoft-Code verwenden und verstehen müssen, wie Konzepte übersetzt werden:

Dynamsoft Barcode-Lesegerät IronBarcode
BarcodeReader.InitLicense(key, out errorMsg) IronBarCode.License.LicenseKey = "key"
errorCode != (int)EnumErrorCode.DBR_OK prüfen Nicht erforderlich
BarcodeReader.OutputLicenseToString() (UUID) Nicht erforderlich
BarcodeReader.InitLicenseFromLicenseContent(content, uuid) Nicht erforderlich
new BarcodeReader() Statisch – keine Instanz
reader.Dispose() Nicht erforderlich
reader.DecodeFile(imagePath, "") BarcodeReader.Read(imagePath)
reader.DecodeFileInMemory(bytes, "") BarcodeReader.Read(imageBytes)
TextResult[].BarcodeText result.Value
TextResult[].BarcodeFormat result.Format
PublicRuntimeSettings über GetRuntimeSettings() new BarcodeReaderOptions { ... }
settings.Timeout = 100 Speed = ReadingSpeed.Balanced
settings.ExpectedBarcodesCount = 1 ExpectMultipleBarcodes = false (Standard)
reader.UpdateRuntimeSettings(settings) Als Parameter an Read() übergeben
Externe PDF-Bibliothek + Seitenrendering-Schleife BarcodeReader.Read("doc.pdf")

Wenn die Teams wechseln

Serverseitige Dokumentenverarbeitung, nicht Kamerascanning. Das häufigste Migrationsszenario ist, dass ein Team sich aufgrund seines guten Rufs für Dynamsoft entschieden, die Software integriert und dann festgestellt hat, dass die kamerazentrierte API und die fehlende PDF-Unterstützung die Arbeitsabläufe in der Dokumentenverarbeitung umständlich gestalten. Das Auslesen von Barcodes aus hochgeladenen PDFs in einer Webanwendung ist ein zentraler Anwendungsfall, der in Dynamsoft Umwege erfordert, in IronBarcode jedoch mit einem einzigen Aufruf erledigt ist.

Abgeschottete oder eingeschränkte Netzwerkumgebungen. Finanzinstitute, Gesundheitssysteme und staatliche Einrichtungen verbieten häufig ausgehende Internetverbindungen von Anwendungsservern. Die Online-Lizenzvalidierung von Dynamsoft schlägt in diesen Umgebungen fehl. Der Offline-Geräte-UUID-Workflow ist zwar funktional, verursacht aber zusätzlichen Aufwand durch Supportabhängigkeiten. Teams in diesen Umgebungen migrieren häufig zu IronBarcode, gerade weil die Lizenzvalidierung keine Netzwerkkomponente aufweist.

Docker und Kubernetes verwenden kurzlebige Container. Containerisierte Bereitstellungen, bei denen Instanzen häufig skaliert werden, machen gerätebasierte Offline-Lizenzierung unpraktikabel. Je nach Infrastruktur kann jeder neue Container eine andere UUID haben. Der Lizenzschlüssel von IronBarcode funktioniert als Standard-Umgebungsvariable und muss nicht pro Instanz registriert werden.

Bedarf an Generierung und Lesefunktion. Dynamsoft ist schreibgeschützt. Anwendungen, die Barcode-Etiketten generieren, QR-Codes für Produkte drucken oder Versandmanifeste mit eingebetteten Barcodes erstellen müssen, benötigen eine zweite Bibliothek. Teams in dieser Situation schließen sich oft für IronBarcode an, um die Verwaltung zweier separater Barcode-Abhängigkeiten zu vermeiden.

Vereinfachter Betriebsablauf. Durch das Entfernen des Dynamsoft-Lizenzservers aus der Liste der erreichbaren externen Abhängigkeiten, das Entfernen der PDF-Rendering-Bibliothek und das Ersetzen der Instanzverwaltung durch statische Aufrufe wird die Anzahl potenzieller Fehlerquellen im Produktivbetrieb reduziert.

Abschluss

Dynamsoft Barcode Reader ist eine hochwertige Bibliothek, die genau für ihren vorgesehenen Anwendungsfall geeignet ist: das kamerabasierte Scannen von Barcodes in Echtzeit, insbesondere in mobilen Anwendungen. Die Algorithmen sind optimal auf die Bedingungen des Scannens mit Handgeräten abgestimmt – variable Beleuchtung, Bewegungsunschärfe, teilweise Verdeckung. Wenn das Ihr Anwendungsfall ist, kann Dynamsoft gut mithalten.

Bei der serverseitigen Dokumentenverarbeitung – dem Einlesen von Barcodes aus PDFs, dem Generieren von Barcode-Etiketten, dem Betrieb in abgeschotteten Umgebungen oder der Bereitstellung in kurzlebigen Docker-Containern – führt die Architektur der Bibliothek in jedem Schritt zu Problemen. Die Online-Lizenzvalidierung, die fehlende PDF-Unterstützung, die für Kameras optimierten Timeout-Einstellungen und der Offline-Workflow mit Geräte-UUID sind allesamt Folgen der Entwicklung für die Nutzung mit mobilen Kameras. Das sind keine Insekten; Es handelt sich um bewusste Designentscheidungen für einen anderen Kontext.

IronBarcode ist für den Dokument- und Serverkontext konzipiert. Lokale Lizenzvalidierung, natives PDF-Lesen, statische API und Generierungsunterstützung sind allesamt erstklassige Funktionen und keine Notlösungen. Die Entscheidung für eine Migration hängt davon ab, in welcher Umgebung Ihre Barcodes tatsächlich verwendet werden.

Häufig gestellte Fragen

Was ist Dynamsoft BarCode Reader?

Dynamsoft BarCode Reader ist eine .NET Barcode-Bibliothek zum Erzeugen und Lesen von Barcodes in C#-Anwendungen. Sie ist eine von mehreren Alternativen, die Entwickler bei der Auswahl einer Barcode-Lösung für .NET-Projekte in Betracht ziehen.

Was sind die Hauptunterschiede zwischen Dynamsoft Barcode Reader und IronBarcode?

IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während Dynamsoft Barcode Reader in der Regel eine Instanzerstellung und -konfiguration vor der Verwendung erfordert. IronBarcode bietet außerdem native PDF-Unterstützung, automatische Formaterkennung und Single-Key-Lizenzierung in allen Umgebungen.

Ist IronBarcode einfacher zu lizenzieren als Dynamsoft Barcode Reader?

IronBarcode verwendet einen einzigen Lizenzschlüssel, der sowohl die Entwicklungs- als auch die Produktionsbereitstellung abdeckt. Dies vereinfacht CI/CD-Pipelines und Docker-Konfigurationen im Vergleich zu Lizenzierungssystemen, die SDK-Schlüssel von Laufzeitschlüsseln trennen.

Unterstützt IronBarcode alle Barcode-Formate, die Dynamsoft Barcode Reader unterstützt?

IronBarcode unterstützt über 30 Barcode-Symbologien, darunter QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 und viele mehr. Die automatische Formaterkennung bedeutet, dass keine explizite Formataufzählung erforderlich ist.

Unterstützt IronBarcode das native Lesen von PDF-Barcodes?

Ja, IronBarcode liest Barcodes direkt aus PDF-Dateien mit BarcodeReader.Read("document.pdf"), ohne dass eine separate PDF-Rendering-Bibliothek erforderlich ist. Die seitenweisen Ergebnisse umfassen Seitenzahl, Barcodeformat, Wert und Konfidenzwert.

Wie handhabt IronBarcode die Stapelverarbeitung im Vergleich zu Dynamsoft Barcode Reader?

Die statischen Methoden von IronBarcode sind zustandslos und natürlich thread-sicher, was die direkte Verwendung von Parallel.ForEach ohne Instanzverwaltung pro Thread ermöglicht. Es gibt auf keiner Preisstufe eine Obergrenze für den Durchsatz.

Welche .NET Versionen werden von IronBarcode unterstützt?

IronBarcode unterstützt .NET Framework 4.6.2+, .NET Core 3.1 und .NET 5, 6, 7, 8 und 9 in einem einzigen NuGet-Paket. Zu den Zielplattformen gehören Windows x64/x86, Linux x64 und macOS x64/ARM.

Wie installiere ich IronBarcode in einem .NET-Projekt?

Installieren Sie IronBarcode über NuGet: Führen Sie "Install-Package IronBarCode" in der Paketmanager-Konsole oder "dotnet add package IronBarCode" in der CLI aus. Es sind keine zusätzlichen SDK-Installationsprogramme oder Laufzeitdateien erforderlich.

Kann ich IronBarcode im Gegensatz zu Dynamsoft vor dem Kauf testen?

Ja, der Testmodus von IronBarcode liefert vollständige dekodierte Barcodewerte - nur die erzeugten Ausgabebilder erhalten ein Wasserzeichen. Sie können die Lesegenauigkeit an Ihren eigenen Dokumenten testen, bevor Sie sich zum Kauf verpflichten.

Was ist der Preisunterschied zwischen Dynamsoft Barcode Reader und IronBarcode?

Die Preise für IronBarcode beginnen bei 749 US-Dollar für eine unbefristete Einzelentwicklerlizenz für Entwicklung und Produktion. Preisdetails und Volumenoptionen sind auf der IronBarcode-Lizenzierungsseite verfügbar. Es ist keine separate Runtime-Lizenz erforderlich.

Ist es einfach, von Dynamsoft Barcode Reader zu IronBarcode zu wechseln?

Bei der Migration von Dynamsoft Barcode Reader zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch die statischen Methoden von IronBarcode zu ersetzen, Lizenzierungsklauseln zu entfernen und die Namen der Ergebniseigenschaften zu aktualisieren. Bei den meisten Migrationen wird eher Code reduziert als hinzugefügt.

Kann IronBarcode QR-Codes mit Logos generieren?

Ja. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") bettet ein Markenbild nativ in einen QR-Code mit konfigurierbarer Fehlerkorrektur ein. Farbige QR-Codes werden auch über ChangeBarCodeColor() unterstützt.

Jordi Bardia
Software Ingenieur
Jordi ist am besten in Python, C# und C++ versiert. Wenn er nicht bei Iron Software seine Fähigkeiten einsetzt, programmiert er Spiele. Mit Verantwortung für Produkttests, Produktentwicklung und -forschung trägt Jordi mit immensem Wert zur kontinuierlichen Produktverbesserung bei. Die abwechslungsreiche Erfahrung hält ihn gefordert und engagiert, ...
Weiterlesen

Iron Support Team

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