QRCoder.NET vs IronBarcode: C# BarCode Bibliothek Vergleich
Spire.Barcode vs IronBarcode: Typenspezifikation, PDF-Unterstützung und Preisvergleich
Spire.Barcode erfordert den Barcode-Typ beim Lesen: scanner.Scan(path, BarCodeType.Code128). Wenn Sie Dokumente verarbeiten, bei denen die eingehenden Barcodes ein beliebiges Format haben können, müssen Sie eine Formaterkennungsschleife schreiben, bevor Sie einen Wert extrahieren können. Diese einzelne API-Entscheidung prägt alles, was Sie beim Erstellen von Barcode-Scanning-Workflows mit Spire.Barcode beachten sollten, und es lohnt sich, sie zu verstehen, bevor Sie sich dafür entscheiden.
Spire.Barcode verstehen
Spire.Barcode ist eine kommerzielle .NET Barcode-Bibliothek, die von E-iceblue, einem chinesischen Softwareunternehmen, entwickelt wurde, das auch die Produktlinien Spire.Doc, Spire.XLS und Spire.PDF herstellt. Die Bibliothek unterstützt die Barcode-Generierung und das Lesen über eine Reihe von 1D- und 2D-Symbologien hinweg und ist so konzipiert, dass sie sich in das umfassendere E-iceblue-Dokumentenverarbeitungs-Ökosystem integrieren lässt.
E-iceblue veröffentlicht zwei Pakete: FreeSpire.Barcode kostenlos und Spire.Barcode als kommerzielles Produkt. Das kostenlose Paket ist ein dauerhaft begrenztes Produkt mit bewussten Einschränkungen und keine zeitlich begrenzte Testversion. Das kommerzielle Paket schaltet den kompletten Symboliksatz frei und beseitigt die Einschränkungen der kostenlosen Version, erfordert jedoch den separaten Erwerb einer Lizenz für jedes andere verwendete Spire-Produkt.
Zu den wichtigsten architektonischen Merkmalen von Spire.Barcode gehören:
- Obligatorischer BarCodeType-Parameter: Jeder Aufruf von
BarcodeScanner.Scan()erfordert einenBarCodeType-Enum-Wert. Es gibt keine Überladung, die nur einen Dateipfad akzeptiert und eine automatische Formaterkennung durchführt. - Einstellungs-Objekt-Generierungsmodell: Die Barcode-Erzeugung basiert auf einem veränderlichen
BarcodeSettings-Objekt, das an eineBarCodeGenerator-Instanz übergeben wird, wobei mehrere Eingabewerte zugewiesen werden müssen, bevor eine Ausgabe erfolgt. - Keine native PDF-Unterstützung: Spire.Barcode kann Barcodes nicht direkt aus PDF-Dateien lesen. PDF-basierte Workflows erfordern ein separates
Spire.PDF-Paket, eine separate Lizenz und manuell geschriebene Codezeilen zur Seiten- und Bildextraktion durch den Entwickler. - Einschränkungen der kostenlosen Version von FreeSpire.Barcode: Die kostenlose Version fügt den generierten Barcodes große Evaluierungswasserzeichen hinzu, verschlechtert absichtlich die Scanleistung, beschränkt den verfügbaren Symbologiesatz und erfordert einen Registrierungsschlüssel von E-iceblue, bevor Warndialoge unterdrückt werden.
- Integration in das E-iceblue-Ökosystem: Teams, die bereits Spire.Doc oder Spire.XLS verwenden, könnten die Vertrautheit mit der API und mögliche Paketpreise als vorteilhaft empfinden. Teams, die Spire.Barcode isoliert nutzen, tragen die vollen Lizenzkosten pro Produkt, ohne von den Vorteilen des Ökosystems zu profitieren.
- Rückgabetyp:
BarcodeScanner.Scan()gibtstring[]zurück, das keine Format-Metadaten enthält. Der ermittelte Typ ist nicht im Ergebnis enthalten.
Die Anforderung an die Typenspezifikation
Spire.Barcodes BarcodeScanner.Scan() hat keine Überladung, die nur einen Dateipfad akzeptiert. Jeder Lesevorgang erfordert, dass der aufrufende Code das Barcode-Format im Voraus deklariert. Für Workflows mit nur einem Format ist dies praktikabel, aber bei der Verarbeitung von Dokumenten in verschiedenen Formaten führt es zu einer potenziellen Endlosschleife:
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}
Dim foundValue As String = Nothing
For Each type In candidates
Dim found As String() = scanner.Scan("barcode.png", type)
If found.Length > 0 Then
foundValue = found(0)
Exit For
End If
Next
Jeder dem Kandidatenarray hinzugefügte Typ ist ein zusätzlicher Scan-Durchlauf. Jedes Format, das in der Liste fehlt, wird stillschweigend ignoriert. Der Entwickler ist verantwortlich für die Pflege eines vollständigen Typeninventars und für erneute Tests, sobald ein neues Format in den Arbeitsablauf aufgenommen wird.
IronBarcode verstehen
IronBarcode ist eine kommerzielle .NET Barcode-Bibliothek, die von Iron Software entwickelt wurde. Es bietet sowohl Barcode-Lesen als auch -Generierung über ein statisches API-Modell, wodurch die Notwendigkeit der Instanzverwaltung entfällt. Die Bibliothek wird als einzelnes NuGet Paket ausgeliefert, das native Unterstützung für die PDF- und Bildverarbeitung bietet, ohne dass zusätzliche Abhängigkeiten erforderlich sind.
Die Leseengine von IronBarcode führt in einem einzigen Scanvorgang eine automatische Formaterkennung für über 50 Symbologien durch. Die von BarcodeReader.Read() zurückgegebenen Ergebnisobjekte enthalten das erkannte Format, den dekodierten Wert und kontextbezogene Metadaten wie Seitennummer für PDF-Quellen und Koordinaten im Quellbild.
Zu den wichtigsten Merkmalen von IronBarcode gehören:
- Automatische Format-Erkennung:
BarcodeReader.Read()erfordert keinen Typ-Parameter. Die Bibliothek identifiziert die Symbolik während des Scans und fügt sie dem Ergebnisobjekt hinzu. - Einzelpaket-PDF-Unterstützung: PDF-Dateien werden direkt von
BarcodeReader.Read()akzeptiert, ohne zusätzliches NuGet-Paket, Lizenz oder manuelle Seitenextraktionscode. - Fluente Generierungs-API:
BarcodeWriter.CreateBarcode()ist eine statische Fabrikmethode, die ein verkettbares Objekt für Größenänderung, Styling und Speicherung in einem einzigen Ausdruck zurückgibt. - Testmodus mit vollem Funktionsumfang: Die IronBarcode Testversion läuft mit demselben Paket wie das lizenzierte Produkt und bietet volle Lesegeschwindigkeit, volle Symbologieunterstützung und den kompletten Funktionsumfang. Die im Testmodus generierten Ausgaben weisen ein kleines Randwasserzeichen auf; Das Leseverhalten bleibt unbeeinflusst.
BarcodeReaderOptionszur Anpassung: Lesegeschwindigkeit, Multi-Barcode-Erkennung, Bildvorverarbeitung und erwartete Symbologie-Filter sind konfigurierbar, ohne die Bibliotheksprodukte wechseln zu müssen.- Ergebnisobjekte mit Metadaten: Jedes Ergebnis in einer
BarcodeResults-Sammlung liefertValue,Format,PageNumberund Bildbereichsdaten.
Funktionsvergleich
Die folgende Tabelle fasst die wichtigsten Unterschiede zwischen Spire.Barcode und IronBarcode zusammen:
| Feature | Spire.Barcode | IronBarcode |
|---|---|---|
| Barcode-Lesung | Ja (BarCodeType erforderlich) | Ja (automatische Erkennung) |
| Barcode-Generierung | Ja | Ja |
| Automatische Formaterkennung | Nein | Ja |
| Native PDF-Unterstützung | Nein (erfordert Spire.PDF) | Ja |
| Kostenloses Tarif | FreeSpire.Barcode (eingeschränkt) | Testmodus (voller Funktionsumfang) |
| Symbolik zählen | ~38 (kommerziell) | 50+ |
| Lizenzmodell | Preisstufen pro Sitzplatz und Abonnement | Dauerhaft mit optionaler Unterstützung |
Detaillierter Funktionsvergleich
| Feature | Spire.Barcode | IronBarcode |
|---|---|---|
| Lektüre | ||
| Automatische Formaterkennung | Nein | Ja |
| Barcode-Typ erforderlich | Ja | Nein |
| Metadaten des Rückgabeformats | Nein | Ja |
| Mehrere Barcodes pro Bild | Ja | Ja |
| Lesegeschwindigkeitssteuerung | Nein | Ja (BarcodeReaderOptions) |
| ML-gestützte Fehlerkorrektur | Nein | Ja |
| Generation | ||
| API-Modell | Einstellungsobjekt + Generator | Statische Fabrik mit fließender Kette |
| QR-Code mit individuellem Logo | Nur für gewerbliche Kunden | Alle Stufen |
| Ausgabeformate | Bild (PNG, JPEG, BMP) | PNG, JPEG, BMP, SVG, HTML, Stream |
| Flüssiges Verketten | Nein | Ja |
| PDF-Unterstützung | ||
| Barcodes aus PDFs lesen | Erfordert Spire.PDF | Native Version, kein Zusatzpaket |
| Seitenzahl im Ergebnis | Manuelle Nachverfolgung | Ja |
| Zusätzliche Lizenz erforderlich | Ja (Spire.PDF) | Nein |
| Plattform | ||
| .NET Framework | Ja | Ja |
| .NET Core / .NET 5+ | Ja | Ja |
| Docker/Linux | Ja | Ja |
| Symboliken | ||
| 1D (Code128, Code39, EAN, UPC) | Ja | Ja |
| 2D (QR, DataMatrix, PDF417) | Ja | Ja |
| Gesamtzahl der Symbole | ~38 (kommerziell) | 50+ |
| Lizenzierung | ||
| Kostenloses Tarif | FreeSpire.Barcode (mit Wasserzeichen versehen, beeinträchtigt) | Testmodus (volle Geschwindigkeit, kleines Wasserzeichen) |
| Für die kostenlose Version ist eine Registrierung erforderlich. | Ja | Nein |
| Lizenzmodell | Dauerlizenz pro Sitzplatz + Abonnement | Dauerlizenz mit optionaler Verlängerung |
| Einstiegspreis | $999/Jahr (Standortabonnement) | $749 (Lite, unbefristet) |
Barcode-Lesung
Spire.Barcode-Ansatz
Spire.Barcodes BarcodeScanner.Scan() erfordert einen BarCodeType-Parameter bei jedem Aufruf. Der Aufruf mit nur einem Datentyp ist dann angebracht, wenn das Format bekannt und garantiert ist:
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim results As String() = scanner.Scan("barcode.png", BarCodeType.Code128)
For Each value As String In results
Console.WriteLine(value)
Next
Wenn das Format nicht im Voraus bekannt ist, bleibt nur die Möglichkeit, die Kandidatentypen zu durchlaufen. Jeder Durchlauf entspricht einem vollständigen Scan, und jedes Format, das nicht in der Liste enthalten ist, wird stillschweigend übersehen. Das Ergebnis ist ein string[], der keinerlei Typinformationen trägt, so dass das nachfolgende Routing basierend auf dem Format zusätzliche Zustandsverwaltung durch den Aufrufer erfordert.
IronBarcode Ansatz
IronBarcodes BarcodeReader.Read() erfordert keinen Typ-Parameter. Die Bibliothek erkennt das Format automatisch in einem einzigen Durchlauf über alle unterstützten Symbologien hinweg. Das Auslesen von Barcodes aus Bildern erfolgt durch einen einzigen Methodenaufruf, unabhängig davon, wie viele verschiedene Formate die Quelle enthalten mag:
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
Imports IronBarCode
' IronBarcode: automatic format detection
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Format}: {result.Value}")
Next
Jedes Ergebnisobjekt enthält Format, Value und Positionsmetadaten. Das Downstream-Routing auf Basis des Formats erfordert keinen zusätzlichen Status – der Typ ist im Ergebnis selbst vorhanden.
Einschränkungen des kostenlosen Tarifs
Spire.Barcode Gratis-Version
FreeSpire.Barcode fügt den generierten Barcode-Bildern ein großes Bewertungswasserzeichen hinzu. Das Wasserzeichen überdeckt den Barcode auf eine Weise, die ihn für den Produktionsprozess ungeeignet macht und eine sinnvolle Bewertung der Erzeugungsqualität verhindert. Die Scanleistung ist in der kostenlosen Version absichtlich reduziert, was bedeutet, dass die während der Evaluierung durchgeführten Durchsatzmessungen nicht die Leistung der kommerziellen Spire.Barcode-Version widerspiegeln. Für das kostenlose Paket ist außerdem ein Registrierungsschlüssel von E-iceblue erforderlich, bevor Warnmeldungen während der Ausführung unterdrückt werden. Die im kostenlosen Tarif verfügbaren Symbole stellen eine Teilmenge des kommerziellen Angebots dar. Diese Einschränkungen bedeuten insgesamt, dass eine auf FreeSpire.Barcode basierende Evaluierung nicht genau widerspiegelt, was das kommerzielle Produkt bietet.
IronBarcode Testmodus
Die Testversion von IronBarcode ist das lizenzierte Paket, das ohne Lizenzschlüssel verwendet wird. Das Lesen erfolgt in voller Geschwindigkeit mit vollständiger Symbolunterstützung und ohne Verhaltensbeschränkungen. Die Optionen für Lesegeschwindigkeit und Lesegenauigkeit verhalten sich im Test- und Lizenzmodus identisch. Im Testmodus generierte Barcodes enthalten ein kleines Wasserzeichen am Bildrand; Es verdeckt den Barcode selbst nicht. Das bei einer IronBarcode -Evaluierung gemessene Verhalten entspricht dem Verhalten, das in der Produktionsumgebung ausgeliefert wird.
| Aspekt | FreeSpire.Barcode | IronBarcode Testversion |
|---|---|---|
| Wasserzeichen auf dem generierten Output | Groß, deckt Barcode ab | Klein, nur am Bildrand |
| Leseleistung | absichtlich herabgesetzt | Volle Geschwindigkeit |
| Symbolikunterstützung | Begrenzte Teilmenge der kostenpflichtigen Ausgabe | Komplettes Set (über 50 Typen) |
| Anmeldung erforderlich | Ja (kostenloser Key von E-iceblue) | Nein |
| Verfügbare Funktionen | Begrenzte Teilmenge | Vollständiger Funktionsumfang |
| Zeitlimit | None | 30 Tage |
PDF-Barcode-Unterstützung
Spire.Barcode-Ansatz
Spire.Barcode verfügt über keine native PDF-Lesefunktion. Um Barcodes aus einer PDF-Datei zu extrahieren, muss ein Entwickler das separate Spire.PDF-Paket installieren, eine separate Spire.PDF-Lizenz erwerben und den Code zur Seiteniteration und Bildextraktion manuell schreiben, bevor der Barcode-Scan beginnen kann:
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
Imports Spire.Pdf
Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")
Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
Dim images = page.ExtractImages()
For Each image In images
' BarCodeType is still required for each scan call
Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
Next
Next
Dieses Muster erfordert zwei NuGet Pakete, zwei Lizenzvereinbarungen und vom Entwickler geschriebenen Seitenverwaltungscode. Sind Barcodes in Vektorinhalten anstatt in Rasterbildern innerhalb der PDF-Datei eingebettet, kann es passieren, dass der Bildextraktionsansatz sie vollständig erfasst.
IronBarcode Ansatz
IronBarcode verarbeitet PDF-Dateien nativ ohne zusätzliche Abhängigkeiten. Das Lesen von Barcodes aus PDF-Dokumenten erfolgt durch einen einzigen Methodenaufruf unter Verwendung derselben BarcodeReader.Read()-API wie bei Bilddateien. In jedem Ergebnisobjekt sind Seitenzahlen enthalten:
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
Imports IronBarcode
' IronBarcode: native PDF reading from the same Read() method
Dim results = BarcodeReader.Read("document.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}")
Next
Es ist keine manuelle Seitenextraktion, kein zweites Paket und kein zusätzlicher Lizenzkauf erforderlich.
API-Generierung
Spire.Barcode-Ansatz
Das Generierungsmodell von Spire.Barcode konzentriert sich auf ein veränderliches BarcodeSettings-Konfigurationsobjekt. Ein Entwickler initialisiert die Einstellungen, weist die Eingabewerte individuell zu, übergibt das Einstellungsobjekt an eine BarCodeGenerator und ruft dann GenerateImage() auf:
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
Imports Spire.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging
Dim settings As New BarcodeSettings()
settings.Type = BarCodeType.Code128
settings.Data = "12345678"
settings.ShowText = True
settings.TextMargin = 5
settings.BarHeight = 60
settings.Unit = GraphicsUnit.Pixel
Dim generator As New BarCodeGenerator(settings)
Dim barcodeImage As Image = generator.GenerateImage()
barcodeImage.Save("barcode.png", ImageFormat.Png)
Das veränderliche Einstellungsobjekt bedeutet, dass Konfigurationen versehentlich über mehrere Aufrufe hinweg geteilt werden können, wenn eine einzelne Instanz über mehrere Generierungsvorgänge hinweg wiederverwendet wird. Die Generatorklasse fügt einen zusätzlichen Instanziierungsschritt hinzu, der keine eigene Konfigurationslogik enthält.
IronBarcode Ansatz
IronBarcode verwendet eine statische Factory-Methode mit optionaler Fluent Chaining. Es gibt kein Einstellungsobjekt und keine Generatorinstanz, die verwaltet werden muss:
// IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
// IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
Imports IronBarCode
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("barcode.png")
' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.SaveAsPng("barcode.png")
QR-Codes mit individuellen Logos sind in allen IronBarcode -Lizenzstufen verfügbar:
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-with-logo.png")
Preise
Die veröffentlichten Preise von Spire.Barcode umfassen Lizenzmodelle für den internen Gebrauch und OEM-Bereitstellungsebenen:
| Lizenz | Preis | Bereitstellung |
|---|---|---|
| Standortlizenz (nur interner Gebrauch) | $1,398 | Einzelner Standort |
| Standortabonnement (1-Jahres-Updates/Support) | 999 $/Jahr | Einzelner Standort |
| Entwickler-OEM-Abonnement | $3,395/Jahr | Öffentlich/rechnergestützt/Cloud/Docker |
| Standort-OEM-Abonnement | $10,187/Jahr | Öffentlich/rechnergestützt/Cloud/Docker (bis zu 10 Entwickler) |
Nur die OEM-Ebenen erlauben die Bereitstellung für öffentliche Websites, Docker oder Cloud-Anwendungen. Die Site-Ebene (nicht-OEM) ist auf den internen Gebrauch an einem geografischen Standort beschränkt. Falls Spire.PDF auch für die PDF-Barcode-Extraktion benötigt wird, fallen zusätzliche Lizenzkosten an.
IronBarcode-Lizenzierung nutzt vier unbefristete Ebenen:
| Lizenz | Preis | Entwickler |
|---|---|---|
| Lite | $749 | 1 |
| Plus | $1,499 | 3 |
| Professionell | $2,999 | 10 |
| Unbegrenzt | $5,999 | Unbegrenzt |
Alle Stufen sind unbefristet und bieten die Option, ein jährliches Support- und Update-Abonnement hinzuzufügen. Ein fünfköpfiges Entwicklerteam bei Spire.Barcodes Standortabonnement zahlt jedes Jahr $999 für Updates und Support; Die entsprechende IronBarcode Professional-Ebene deckt bis zu zehn Entwickler für eine einmalige Zahlung von $2,999 ab, ohne dass eine Erneuerung erforderlich ist.
API-Mapping-Referenz
| Spire.Barcode | IronBarcode |
|---|---|
new BarcodeScanner() |
Statische BarcodeReader.Read() |
scanner.Scan(path, BarCodeType.X) |
BarcodeReader.Read(path) |
BarCodeType.Code128 (erforderlicher Param) |
Automatisch erkannt; kein Äquivalent erforderlich |
string[] results |
BarcodeResults-Sammlung |
results[0] (String) |
results[0].Value (String) |
new BarcodeSettings() |
Parameter für BarcodeWriter.CreateBarcode() |
settings.Type = BarCodeType.Code128 |
BarcodeEncoding.Code128 als zweiter Parameter |
settings.Data = "value" |
Erster Parameter von CreateBarcode() |
new BarCodeGenerator(settings) |
Nicht erforderlich; static factory ersetzt dies |
generator.GenerateImage() + image.Save() |
.SaveAsPng(path) oder .SaveAsJpeg(path) |
Spire.PDF (für PDF-Lesen) |
Nicht erforderlich; Native PDF-Unterstützung integriert |
Spire.License.LicenseProvider.SetLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
Wenn Teams einen Wechsel von Spire.Barcode zu IronBarcode erwägen
Verarbeitung von Dokumenten in gemischten Formaten
Teams, die mit einem einzigen bekannten Barcode-Format beginnen, stellen oft fest, dass die Vielfalt der verwendeten Formate im Laufe der Zeit zunimmt. Eine Lagerverwaltungsanwendung, die mit Code128-Etiketten gestartet ist, kann beispielsweise Lieferungen von Lieferanten empfangen, die DataMatrix-, GS1-128- oder QR-Codes verwenden. Jedes neue Format, das in den Workflow gelangt, erfordert eine Aktualisierung des Kandidatenarrays in der Typerkennungsschleife, einen erneuten Test der Erkennungslogik und die Bestätigung, dass kein vorhandenes Format durch die Iterationsreihenfolge verdrängt wird. Wenn die Formatvielfalt ein Ausmaß erreicht, bei dem der Wartungsaufwand für diese Schleife zu wiederkehrenden Entwicklungskosten wird, prüfen die Teams, ob eine automatische Erkennung diese Belastung vollständig beseitigen würde.
PDF-Integration
Bei dokumentenintensiven Anwendungen kommt es häufig vor, dass Barcodes aus PDF-Dateien anstatt aus eigenständigen Bildern extrahiert werden müssen. In einem Spire.Barcode-Workflow erfordert dieser Übergang den Erwerb einer Spire.PDF-Lizenz, die Integration eines zweiten Pakets und die Entwicklung einer Infrastruktur für Seiteniteration und Bildextraktion, bevor überhaupt ein Barcode gelesen werden kann. Teams, die diese Anforderung beim ursprünglichen Kauf nicht berücksichtigt hatten, sehen sich nun mit der Verwaltung von zwei Produktlizenzen und zwei API-Schnittstellen für eine Aufgabe konfrontiert, die konzeptionell zum Barcode-Lesen gehört. Die Erkenntnis, dass die PDF-Unterstützung einen separaten Kauf erfordert, ist ein häufiger Anlass, die Produktauswahl zu überdenken.
Einschränkungen bei der Bewertung der kostenlosen Version
Teams, die FreeSpire.Barcode evaluiert und anschließend die kommerzielle Lizenz erworben haben, berichten mitunter, dass sich das kommerzielle Produkt anders verhält, als ihre Evaluierung vermuten ließ. Dies ist so beabsichtigt: Die kostenlose Version reduziert absichtlich die Leseleistung und beschränkt den Symboliksatz, was bedeutet, dass die während der Evaluierung durchgeführten Benchmarks und Formatabdeckungstests nicht auf die kommerzielle Bereitstellung übertragbar sind. Wenn ein Team diese Diskrepanz nach dem Kauf feststellt, sucht es häufig nach Alternativen, deren Testverhalten repräsentativ für das Produktionsverhalten ist.
Reduzierung der Produktanzahl
Organisationen, die ihren Technologie-Stack standardisieren, betrachten Spire.Barcode manchmal als eine Komponente in einem wachsenden Bestand an E-iceblue-Produkten, von denen jedes seine eigenen Lizenzkosten und seinen eigenen Erneuerungszyklus hat. Wenn der Hauptzweck von Spire.Barcode das Lesen von Barcodes innerhalb einer Dokumentenverarbeitungspipeline ist – und nicht die tiefe Integration mit Spire.Doc oder Spire.XLS – prüfen die Teams, ob eine einzige, in sich geschlossene Barcode-Bibliothek sowohl die Lizenzierungskomplexität als auch den Supportaufwand reduzieren würde.
Gemeinsame Überlegungen zur Migration
Entfernen des Parameters "BarCodeType"
Jeder scanner.Scan()-Aufruf in einer Spire.Barcode-Codebasis trägt ein BarCodeType-Argument. Das Ersetzen dieser Aufrufe durch BarcodeReader.Read() entfernt den Typ-Parameter vollständig. Typ-Raten-Schleifen — foreach-Blöcke, die durch Kandidaten BarCodeType-Werte iterieren — können vollständig gelöscht werden; ein einziger BarcodeReader.Read()-Aufruf ersetzt die gesamte Schleife.
Aktualisierung des Rückgabetyps
Spire.Barcodes Scan() gibt string[] zurück. IronBarcode gibt eine BarcodeResults-Sammlung zurück. Aufrufstellen, die Wert zu string[] zuweisen oder Ergebnisse an Methoden übergeben, die diesen Typ erwarten, erfordern eine Aktualisierung. Das Extrahieren von Werten als Array verwendet .Select(r => r.Value).ToArray(); der Zugriff auf das erste Ergebnis erfolgt mit .First()?.Value.
Entfernen des Spire.PDF-Pakets
Wenn Spire.PDF ausschließlich installiert wurde, um Barcodes aus PDF-Dateien zu extrahieren, kann es nach der Migration zu IronBarcode entfernt werden. Alle using Spire.Pdf;-Importe und manuellen Seiteniterationsblöcke werden durch einen einzigen BarcodeReader.Read("file.pdf")-Aufruf ersetzt. Wenn Spire.PDF für andere Dokumentoperationen außerhalb der Barcodeextraktion verwendet wird, sollte es behalten werden und nur die barcodebezogenen Codepfade ersetzt werden.
Namensraumänderungen
Ersetzen Sie using Spire.Barcode; durch using IronBarCode;. Das BarCodeType-Enum wird durch BarcodeEncoding für die Generierung ersetzt und erfordert kein Äquivalent für das Lesen. Die Lizenzinitialisierung ändert sich von Spire.License.LicenseProvider.SetLicenseKey() zu einer einzigen IronBarCode.License.LicenseKey-Eigenschaftszuweisung beim Anwendungsstart.
Zusätzliche IronBarcode Funktionen
Die folgenden IronBarcode Funktionen wurden in den obigen Vergleichen nicht berücksichtigt:
- Batch-Bild-Lesen:
BarcodeReader.Read()akzeptiert Arrays von Dateipfaden,Stream-Objekten undBitmap-Instanzen, was eine Batch-Verarbeitung ohne manuelles Durchlaufen der Sammlung von Eingaben ermöglicht. - BarcodeReaderOptions: Lesegeschwindigkeit, Multi-Barcode-Erkennung, maximale Kandidaten und Bildverarbeitungs-Vorverbesserung sind über ein einzelnes Optionsobjekt konfigurierbar, das an
Read()übergeben wird. - SVG- und HTML-Ausgabe:
BarcodeWriter.CreateBarcode()unterstützt.SaveAsSvg()und.SaveAsHtmlFile()zusätzlich zu Rasterbildformaten und ermöglicht so web-einbettbare Barcode-Ausgabe. - QR-Code mit Logo:
QRCodeWriter.CreateQrCode()unterstütztAddBrandLogo()in allen Lizenzstufen, wodurch ein benutzerdefiniertes Bild in das Zentrum des QR-Codes eingefügt werden kann, ohne die Zuverlässigkeit des Scans bei geeigneten Fehlerkorrekturstufen zu beeinträchtigen. - Stream- und Byte-Array-Ausgabe: Generierte Barcodes können als
Streamoderbyte[]exportiert werden, um sie direkt zu speichern oder in eine HTTP-Antwort zu schreiben, ohne dass eine Zwischenablage erforderlich ist. - GS1-128 und strukturierte Symbologien: IronBarcode bietet Unterstützung für strukturierte GS1-Symbologien, die über die Möglichkeiten der kommerziellen Spire.Barcode-Version hinausgehen.
.NET-Kompatibilität und Zukunftsfähigkeit
IronBarcode unterstützt das .NET Framework4.6.2 und höher, .NET Core 3.1 und alle aktuellen .NET-Versionen. Die Bibliothek wird auf Windows, Linux und macOS getestet und läuft in Docker-Containern ohne zusätzliche native Abhängigkeitskonfiguration. Spire.Barcode unterstützt auch die plattformübergreifende .NET Bereitstellung, allerdings kann es je nach verwendeter Version bei den Linux- und Docker-Konfigurationen erforderlich sein, zusätzliche native Bibliothekseinstellungen vorzunehmen. Der regelmäßige Veröffentlichungszyklus von IronBarcode stellt sicher, dass neue C#-Sprachfunktionen und .NET -Laufzeitverbesserungen zusammen mit Plattformkompatibilitätsaktualisierungen integriert werden.
Abschluss
Spire.Barcode und IronBarcode gehen das Problem des Barcode-Lesens von grundlegend verschiedenen Standpunkten aus an. Spire.Barcode legt das Formatwissen auf den Aufrufer – jeder Scanvorgang erfordert, dass der Entwickler die Symbologie im Voraus deklariert, was in Workflows mit geschlossenem Format eine praktikable Einschränkung darstellt, in Workflows mit offenem Format jedoch einen Wartungsaufwand bedeutet. IronBarcode platziert die Formaterkennung innerhalb der Bibliothek, benötigt keinen Typparameter und gibt das erkannte Format als Teil des Ergebnisses zurück.
Spire.Barcode ist eine sinnvolle Wahl für Anwendungen, die ein einziges, garantiertes Barcode-Format verarbeiten, insbesondere wenn das Team bereits in das E-iceblue-Produktökosystem investiert hat. Das Modell zur Generierung von Einstellungsobjekten ist Entwicklern, die eine explizite Konfiguration bevorzugen, vertraut, und die kommerzielle Lizenz ist für Projekte mit nur einem Entwickler wettbewerbsfähig. Teams, die BarCodeType.Code128 bei jedem Aufruf garantieren können, tragen keine praktischen Kosten für den obligatorischen Typ-Parameter.
IronBarcode eignet sich besser für Anwendungen, bei denen die Formatvielfalt unvorhersehbar ist oder zunimmt, bei denen die Extraktion von PDF-Barcodes eine vorrangige Anforderung darstellt und bei denen die Genauigkeit der Auswertung von Bedeutung ist. Der Testlauf erfolgt in voller Produktionsgeschwindigkeit mit dem kompletten Symboliksatz, sodass die während der Evaluierung durchgeführten Leistungsbenchmarks und Formatabdeckungstests direkt auf den Produktionseinsatz übertragbar sind. Die native PDF-Unterstützung macht eine zusätzliche Bibliothek und den damit verbundenen Lizenzaufwand überflüssig. Für Teams, die IronBarcode als Alternative zu Spire.Barcode in Betracht ziehen, bietet die Spire.Barcode-Alternativenübersicht zusätzlichen Kontext für den Vergleich.
Die Entscheidung hängt letztlich von der Vorhersagbarkeit des Formats und dem Umfang des Arbeitsablaufs ab. Ein Lagerverwaltungssystem mit einem festen Code128-Etikettenstandard und ohne PDF-Quelldokumente hat keinen praktischen Grund, die automatische Erkennung von IronBarcode zu bevorzugen. Eine Dokumentenverarbeitungspipeline, die Barcodes von externen Lieferanten aufnimmt, gemischte Symbologien verarbeitet und PDF-Anhänge liest, würde feststellen, dass der obligatorische Typparameter und die Anforderung von zwei PDF-Bibliotheken laufende Wartungskosten darstellen, die IronBarcode eliminiert.
Häufig gestellte Fragen
Was ist Spire.BarCode?
Spire.Barcode 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 for .NET-Projekte in Betracht ziehen.
Was sind die Hauptunterschiede zwischen Spire.Barcode und IronBarcode?
IronBarcode verwendet eine statische, zustandslose API, die keine Instanzverwaltung erfordert, während Spire.Barcode 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 Spire.BarCode?
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 auch Spire.Barcode 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 Spire.Barcode?
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 vor dem Kauf testen, im Gegensatz zu Spire.Barcode?
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 Spire.Barcode 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 die Migration von Spire.Barcode zu IronBarcode einfach?
Bei der Migration von Spire.Barcode zu IronBarcode geht es in erster Linie darum, instanzbasierte API-Aufrufe durch statische Methoden von IronBarcode zu ersetzen, Lizenzierungs-Boilerplate zu entfernen und die Namen von 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.

