IRONSOFTWAREHOME
MIT ANDEREN KOMPONENTEN VERGLEICHEN

Welche C#-Barcode-Bibliothek sollten Sie für die .NET -Entwicklung verwenden?

Curtis Chau
Curtis Chau
Updated: 26. April 2026

Jeder Entwickler, der Aspose.BarCode verwendet hat, hat eine Version dieser Zeile geschrieben: new BarCodeReader(path, DecodeType.Code128). Es funktioniert einwandfrei, wenn man weiß, welches Format das Bild hat. Wenn Sie dies nicht tun – wenn ein Dokument von einem externen System, einem Lieferanten, der das Etikettenformat geändert hat, oder einem Benutzer-Upload stammt – raten Sie entweder eine Liste von Decodier-Typen oder verwenden DecodeType.AllSupportedTypes, das typischerweise langsamer ist, gemäß Aspose's eigener Anleitung. Die Anforderung an die Formatvorgabe ist zwar kein K.O.-Kriterium, aber sie führt zu alltäglichen Reibungsverlusten, die sich bei jedem Lesevorgang in Ihrer Codebasis summieren.

Die PDF-Geschichte ist die Budgetgeschichte. Wenn Sie Barcodes aus PDF-Dokumenten verarbeiten, kann Aspose.BarCode dies nicht allein leisten. Sie benötigen Aspose.PDF for .NET, um die Seiten zuerst in Bilder zu rendern. Aspose.PDF ist ein separates Abonnementprodukt zu dem, was Sie bereits für Aspose.BarCode bezahlen. Zwei Abonnements für einen Workflow, den die meisten Entwickler als eine einzige Aufgabe betrachten.

IronBarcode erkennt Barcode-Formate automatisch, liest PDFs nativ in einem einzigen Paket und bietet eine unbefristete Lizenz ab 749 US-Dollar. Dieser Vergleich untersucht beide Bibliotheken detailliert, damit Sie eine fundierte Entscheidung treffen können.

Aspose.BarCode verstehen

Aspose entwickelt seit Jahren Dokumentenverarbeitungsbibliotheken für .NET, Java und andere Plattformen. Aspose.BarCode ist eines von vielen Produkten dieser Familie, neben Aspose.Words, Aspose.Cells, Aspose.PDF, Aspose.Slides und etwa einem Dutzend weiterer Produkte. Für Teams, die bereits Aspose.Total – das Paket mit allen Aspose-Produkten – nutzen, entstehen durch die Integration von Aspose.BarCode keine zusätzlichen Kosten. Für Teams, die lediglich eine Barcode-Bibliothek benötigen, ist das Abonnementmodell hingegen schwerer zu rechtfertigen.

Aspose.BarCode unterstützt über 80 Barcode-Symbologien, eine der vollständigsten Formatlisten in jeder kommerziellen .NET-Barcode-Bibliothek. Diese Bandbreite ist das stärkste Verkaufsargument der Bibliothek. Die API-Oberfläche ist entsprechend groß, und die Ausführlichkeit der API nimmt mit den Funktionen zu. Um einen einfachen Code-128-Barcode zu erzeugen, muss ein BarcodeGenerator instanziiert, XDimension, BarHeight und andere Parameter festgelegt und dann Save mit einem expliziten Formatargument aufgerufen werden. Das Lesen erfordert die Angabe, welche Decodier-Typen durchsucht werden sollen, und dann das Iterieren der von ReadBarCodes() zurückgegebenen Ergebnisse. Beide Operationen funktionieren einwandfrei – sie sind nur etwas ausführlicher als nötig.

Wichtigste architektonische Merkmale von Aspose.BarCode:

  • Format-First-Lesemodell: Jeder Lesevorgang erfordert eine explizite Angabe von DecodeType. Das Fallback DecodeType.AllSupportedTypes ist typischerweise langsamer als eine gezielte Liste, da der Decoder alle bekannten Symboliken der Reihe nach durchläuft.
  • Instance-Based API: Sowohl BarCodeReader als auch BarcodeGenerator sind instanziierte Objekte, die IDisposable implementieren. Sie sollten in using-Blöcke eingebunden werden, um native Ressourcen freizugeben.
  • Keine native PDF-Unterstützung: Aspose.BarCode kann PDF-Dokumente nicht direkt öffnen oder darstellen. Das Lesen von Barcodes aus PDFs erfordert Aspose.PDF, ein separates Abonnementprodukt.
  • Tiefe Parameterhierarchie: Anpassungen werden über generator.Parameters.Barcode.*-Eigenschafts-Ketten behandelt – eine mehrstufige Objekt-Hierarchie, die das Auswendiglernen erfordert.
  • Abonnementlizenzierung: Laut den veröffentlichten Preisen von Aspose sind die Entwickler- und Site-Stufen jährliche Abonnements; Eine eigenständige unbefristete Option wird nicht aufgeführt.
  • Datei-basierte Lizenzaktivierung: Produktionsbereitstellungen erfordern eine .lic-Datei, die über einen bekannten Pfad zugänglich ist, was einen Bereitstellungsschritt für Docker- und Kubernetes-Umgebungen hinzufügt.

Das Format-First-Lesemodell

Die Lese-API von Aspose.BarCode basiert auf der Annahme, dass der Aufrufer das Barcode-Format kennt:

using Aspose.BarCode.BarCodeRecognition;

var reader = new BarCodeReader("barcode.png", DecodeType.Code128);
foreach (var result in reader.ReadBarCodes())
    Console.WriteLine($"{result.CodeTypeName}: {result.CodeText}");

Wenn man das Format kennt, ist dieses Muster in Ordnung. Das Problem ist jedoch, "wenn man das Format kennt". Ein Einkaufssystem, das Lieferantenrechnungen verarbeitet, kann nicht garantieren, dass jeder Lieferant denselben Barcode-Typ verwendet. Ein Dokumentenmanagementsystem, das Benutzer-Uploads akzeptiert, kann nicht vorhersagen, welches Format ein Scanner verwendet hat. In diesen Fällen ist DecodeType.AllSupportedTypes das Fallback und es ist typischerweise langsamer als eine gezielte Liste von Decodier-Typen.

Der Decoder muss ebenfalls entsorgt werden:

using var reader = new BarCodeReader("barcode.png", DecodeType.Code128);

Die Nichtnutzung von using ist ein Ressourcenleck. BarcodeGenerator implementiert ebenfalls IDisposable, obwohl die Folgen, wenn es nicht entsorgt wird, weniger schwerwiegend sind. In beiden Fällen verwalten Sie die Lebensdauer von Objekten, die eine statische Factory-API automatisch übernehmen würde.

IronBarcode verstehen

IronBarcode verwendet statische Factory-Methoden sowohl zum Lesen als auch zum Schreiben. Es gibt keine Instanz, die erstellt, konfiguriert oder freigegeben werden könnte. Die Lese-API ist standardmäßig formatunabhängig, und der gleiche Aufruf funktioniert unabhängig davon, ob die Quelldatei eine PNG-, JPEG-, TIFF- oder PDF-Datei ist.

IronBarcode wird von Iron Software, einem auf .NET-Entwicklertools spezialisierten Unternehmen, entwickelt und gepflegt. Die Bibliothek basiert auf dem Prinzip, dass das Lesen von Barcodes keine Vorkenntnisse über das Barcode-Format erfordern sollte – die Erkennungs-Engine der Bibliothek ermittelt das Format anhand des Bildinhalts. Zur Generierung wird die in anderen Bibliotheken übliche mehrstufige Parameterhierarchie durch eine flüssige Methodenkette ersetzt.

Hauptmerkmale von IronBarcode:

  • Automatische Format-Erkennung: BarcodeReader.Read() identifiziert die Barcode-Symbolik aus Bildinhalt, ohne dass der Anrufer ein DecodeType-Äquivalent angeben muss.
  • Statische, zustandslose API: Alle Lese- und Schreibvorgänge sind statische Methoden. Es müssen keine Wegwerfinstanzen verwaltet werden, und die API ist von Natur aus threadsicher für die gleichzeitige Nutzung.
  • Nativer PDF-Support: BarcodeReader.Read("doc.pdf") liest direkt aus PDF-Dateien, ohne dass zusätzliche Pakete oder Rendervorgänge erforderlich sind. Die Ergebnisse beinhalten result.PageNumber.
  • Fluent Generation API: BarcodeWriter.CreateBarcode() gibt ein verkettbares Objekt zurück. Die Anpassung erfolgt mittels Methodenverkettung anstelle einer Eigenschaftshierarchie.
  • Dauerlizenzmodell: Alle Stufen bieten einen einmaligen Kauf ohne jährliche Verlängerungspflicht.
  • String-basierte Lizenzaktivierung: Der Lizenzschlüssel wird über IronBarCode.License.LicenseKey festgelegt, kompatibel mit Umgebungsvariablen und CI/CD-Geheimnisverwaltungen.

Funktionsvergleich

FeatureAspose.BarCodeIronBarcode
FormaterkennungManuell – muss DecodeType angeben oder langsame AllSupportedTypes verwenden.Automatischer Ablauf über alle unterstützten Formate hinweg
Symbolik zählen80+50+
PDF-UnterstützungKeine native Unterstützung – separate Aspose.PDF-Lizenz erforderlich.Nativ – BarcodeReader.Read("doc.pdf") integriert im Paket.
PreismodellNur Abonnement — jährliche Stufen ab 999 $/JahrDauerlizenz ab 749 $ (einmalig)
DauerlizenzNicht verfügbarJa, alle Stufen.
API-StilInstanzbasierte, ausführliche KonfigurationStatische Factory-Methoden, flüssige API
EinwegbedarfJa – BarCodeReader und BarcodeGenerator.Nein – zustandslose statische Methoden
Thread-SicherheitFür jeden Thread sind separate Instanzen erforderlich.Statische API — siehe IronBarcode-Dokumentation für Hinweise zum Threading

Detaillierter Funktionsvergleich

FeatureAspose.BarCodeIronBarcode
Generation
API-Stilnew BarcodeGenerator(EncodeTypes.X, "data")BarcodeWriter.CreateBarcode("data", BarcodeEncoding.X)
Anpassungsmodellgenerator.Parameters.Barcode.*-Eigenschaftshierarchie.Fluente Methodenkette (.ResizeTo(), .ChangeBarCodeColor()).
QR-Code mit LogoManuelle GDI+-Überlagerung nach der Generierung.AddBrandLogo("logo.png") integriert.
Ausgabe in Bytesgenerator.GenerateBarCodeImage().ToPngBinaryData()
Farbige Barcodesgenerator.Parameters.Barcode.BarColor.ChangeBarCodeColor(Color.X)
Lektüre
FormatspezifikationErforderlich (DecodeType).Nicht erforderlich – automatisch
Fallback für unbekanntes FormatDecodeType.AllSupportedTypes (langsam).Gleicher Anruf – kein Fallback-Modus erforderlich
LeistungsoptimierungQualitySettings-Parameter-Set.ReadingSpeed-Enum – drei Ebenen.
EinweglesegerätJa – using var reader = new BarCodeReader(...).Nein – statischer Aufruf, kein Objekt zum Freigeben
ErgebniszugriffIterieren reader.ReadBarCodes().Rückgabewert von BarcodeReader.Read().
Barcode-Werteigenschaftresult.CodeTextresult.Value
Format Name Eigenschaftresult.CodeTypeNameresult.Format.ToString()
PDF-Unterstützung
Native PDF-LesungNeinJa
Erforderlich für PDFAspose.PDF (separates Abonnement)Kein zusätzliches Paket
Seitenzahl in den ErgebnissenNicht anwendbarresult.PageNumber
Lizenzierung
LizenzmodellNur Abonnement, jährliche VerlängerungDauerhafter, einmaliger Kauf
Einzelentwickler999 $/Jahr749 $ einmalig
10 Entwickler4.995 $/Jahr (Standortlizenz)2.999 $ einmalig (Professional)
Unbegrenzte Bereitstellungen (10 Entwickler)$13,986/Jahr (Site OEM)5.999 $ einmalig (unbegrenzt)
PDF-Unterstützung inklusiveNein – separates Aspose.PDF-Abonnement erforderlich.Ja
Plattform und Bereitstellung
Lizenzaktivierung.lic-Dateipfad.String-Schlüssel — Umgebungsvariable
Docker-EinsatzMuss die .lic-Datei ins Image kopieren oder mounten.Umgebungsvariable – keine Datei erforderlich
.NET FrameworkJaJa (4.6.2+)
.NET Core / .NET 5+JaJa (.NET Core 3.1+, .NET 5/6/7/8)
WindowsJaJa (x64/x86)
LinuxJaJa (x64)
macOSJaJa (x64/ARM)
DockerJaJa
Azure / AWS LambdaJaJa

API-Generierung

Die API zur Generierung ist der Bereich, in dem der Unterschied in der Ausführlichkeit zwischen den beiden Bibliotheken im alltäglichen Code am deutlichsten sichtbar wird.

Aspose.BarCode-Ansatz

Aspose.BarCode verwendet eine BarcodeGenerator-Klasse mit einer Parameters-Hierarchie für die Konfiguration. Ein minimaler Generierungsaufruf erfordert drei Schritte – Instanziierung, Speicheraufruf und Formatspezifikation. Die tatsächliche Verwendung erfordert typischerweise die Navigation in generator.Parameters.Barcode.*:

using Aspose.BarCode.Generation;
using System.Drawing;

var generator = new BarcodeGenerator(EncodeTypes.Code128, "ITEM-12345");

// Common customizations require navigating a deep parameter hierarchy
generator.Parameters.Barcode.XDimension.Pixels = 2;
generator.Parameters.Barcode.BarHeight.Pixels = 100;
generator.Parameters.Barcode.CodeTextParameters.Location = CodeLocation.Below;
generator.Parameters.Barcode.CodeTextParameters.Font.FamilyName = "Arial";
generator.Parameters.Barcode.Padding.Left.Pixels = 10;
generator.Parameters.Barcode.Padding.Right.Pixels = 10;
generator.Parameters.BackColor = Color.White;
generator.Parameters.Resolution = 300;

generator.Save("barcode.png", BarCodeImageFormat.Png);

Jede Anpassung navigiert in generator.Parameters.Barcode.*, was eine mehrstufige Objekt-Hierarchie ist. Nicht kompliziert, sobald man es auswendig gelernt hat – aber es erfordert Auswendiglernen.

IronBarcode Ansatz

IronBarcode ersetzt die Parameterhierarchie durch eine flüssige Methodenkette. Die Standardeinstellungen liefern für die meisten Anwendungsfälle korrekte Ergebnisse, und Anpassungen werden direkt im Code vorgenommen:

using IronBarCode;

// Default settings work for most cases
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// Customization through a fluent chain
BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");

// Get as bytes instead of saving to disk
byte[] pngData = BarcodeWriter.CreateBarcode("ITEM-12345", BarcodeEncoding.Code128)
    .ToPngBinaryData();

Für QR-Codes bietet die QR-Generierungs-API von IronBarcode Unterstützung für Markenlogos ohne manuelle Bildkomposition:

using IronBarCode;
using IronSoftware.Drawing;

// With brand logo — built in, no manual image overlay needed
QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

// With high error correction (recommended when using a logo)
QRCodeWriter.CreateQrCode(
    "https://example.com",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded-high-ecc.png");

// Colored QR code
QRCodeWriter.CreateQrCode("https://example.com", 300)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("qr-colored.png");

Aspose.BarCode liefert keinen Ein-Klick-Logoassistenten für QR-Codes aus; Der dokumentierte Ansatz ist, das Barcode-Bild zu erzeugen und dann das Logo darüber zu legen (zum Beispiel mit System.Drawing.Graphics). IronBarcode's AddBrandLogo erledigt die Komposition in einem Aufruf und setzt die Fehlerkorrektur automatisch entsprechend fest.

PDF-Barcode-Lesen

Für viele Teams ist dieser Vergleich von größter Bedeutung. Das Auslesen von Barcodes aus PDF-Dokumenten ist ein gängiger Arbeitsablauf: eingehende Rechnungen, als PDF gespeicherte Versandetiketten, gescannte Dokumentenarchive.

Aspose.BarCode-Ansatz

Aspose.BarCode bietet keine native PDF-Unterstützung. Um mit Aspose einen Barcode aus einer PDF-Datei zu lesen, benötigen Sie Aspose.PDF zum Laden der PDF-Datei und zum Rendern der Seiten in Bilder sowie Aspose.BarCode zum Scannen dieser gerenderten Bilder. Beides sind Abonnementprodukte. Beide benötigen eine Lizenzaktivierung. Sie zahlen zwei jährliche Abonnements für das, was die meisten Entwickler als eine einzige Fähigkeit betrachten.

// Requires both Aspose.PDF (separate license) and Aspose.BarCode
using Aspose.Pdf;
using Aspose.Pdf.Devices;
using Aspose.BarCode.BarCodeRecognition;
using System.IO;

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

    // Step 1: Load and render the PDF using Aspose.PDF
    var pdfDocument = new Aspose.Pdf.Document(pdfPath);
    var resolution = new Resolution(300);
    var device = new PngDevice(resolution);

    for (int pageNum = 1; pageNum <= pdfDocument.Pages.Count; pageNum++)
    {
        using var pageStream = new MemoryStream();
        device.Process(pdfDocument.Pages[pageNum], pageStream);
        pageStream.Seek(0, SeekOrigin.Begin);

        // Step 2: Scan the rendered image for barcodes using Aspose.BarCode
        using var reader = new BarCodeReader(pageStream, DecodeType.AllSupportedTypes);
        foreach (var result in reader.ReadBarCodes())
        {
            barcodeValues.Add(result.CodeText);
        }
    }

    return barcodeValues;
}

Das sind zwei Lizenz-Setups, zwei using-Anweisungen aus zwei Namespaces, ein Rendering-Pipeline, Speicherstream-Management und eine geschachtelte Schleife. Es verwendet auch DecodeType.AllSupportedTypes, weil Sie zum Zeitpunkt der Bildextraktion typischerweise nicht wissen, welches Format der Barcode verwendet.

IronBarcode Ansatz

IronBarcode übernimmt das Parsen von PDFs, das Rendern der Seiten und die Barcode-Erkennung intern. Sie rufen Read mit einem Pfad auf, der in .pdf endet, und es gibt Barcode-Ergebnisse zurück, die result.PageNumber beinhalten, so dass Sie wissen, von welcher Seite jeder stammt. Kein zweites Paket, keine zweite Lizenz, kein Rendering-Code.

using IronBarCode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);
    return results.Select(r => r.Value).ToList();
}
// With page number context
var results = BarcodeReader.Read("invoice-batch.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: [{barcode.Format}] {barcode.Value}");
}

Die IronBarcode Dokumentation zum Lesen von PDFs behandelt Optionen zur Stapelverarbeitung mehrseitiger Dokumente sowie zur Filterung von Seitenbereichen.

Lesen unbekannter Barcode-Formate

Wenn Sie nicht wissen, welches Barcodetyp ein Bild enthält, behandeln die beiden Bibliotheken die Situation unterschiedlich.

Aspose.BarCode-Ansatz

DecodeType.AllSupportedTypes ist Aspose's Lösung für Szenarien unbekannten Formats. In der Dokumentation von Aspose wird selbst eingeräumt, dass dies langsamer ist als die Angabe einer Zielliste, da der Decoder alle bekannten Symboliken nacheinander durchläuft. Bei der Verarbeitung großer Mengen – beispielsweise in einem Lager, das Tausende von Etiketten pro Minute scannt – ist dieser Leistungsunterschied nicht zu vernachlässigen.

using Aspose.BarCode.BarCodeRecognition;

using var reader = new BarCodeReader("unknown-format.png");
reader.SetBarCodeReadType(DecodeType.AllSupportedTypes);
foreach (var result in reader.ReadBarCodes())
{
    Console.WriteLine($"{result.CodeTypeName}: {result.CodeText}");
}

IronBarcode Ansatz

Es gibt keinen "langsamen Modus" und keinen "schnellen Modus" basierend auf Formatkenntnissen. Die Erkennungsmethode von IronBarcode verwendet denselben Algorithmus, unabhängig davon, ob das Bild einen Code 128 oder eine DataMatrix enthält. Wenn Sie die Leistung im Vergleich zu Genauigkeit-Abwägungen optimieren möchten, ermöglicht es ReadingSpeed ohne Formatwissen:

using IronBarCode;

// The same call regardless of format — always auto-detects
var results = BarcodeReader.Read("unknown-format.png");
foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    MaxParallelThreads = 4
};

var results = BarcodeReader.Read("document.png", options);

ReadingSpeed.Faster priorisiert den Durchsatz. ReadingSpeed.Detailed priorisiert die Genauigkeit bei beschädigten oder kontrastarmen Bildern. Für keine der beiden Methoden müssen Sie das Format im Voraus kennen. Die vollständigen Einstellparameter finden Sie unter IronBarcode Leseoptionen .

API-Mapping-Referenz

Aspose.BarCodeIronBarcode
new BarcodeGenerator(EncodeTypes.Code128, "data")BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
generator.Save("file.png", BarCodeImageFormat.Png).SaveAsPng("file.png")
new BarCodeReader(path, DecodeType.Code128)BarcodeReader.Read(path)
DecodeType.AllSupportedTypes (langsamer, erschöpfender Scan).Automatisch – immer schnell, gleicher Aufruf für alle Formate
reader.ReadBarCodes()(part of BarcodeReader.Read — returns results directly)
Iteration von reader.ReadBarCodes().Rückgabewert von BarcodeReader.Read.
result.CodeTextresult.Value
result.CodeTypeNameresult.Format.ToString()
result.Confidenceresult.Confidence
Aspose.BarCode + Aspose.PDF for PDF readingBarcodeReader.Read("doc.pdf") – ein Paket.
license.SetLicense("Aspose.BarCode.lic")IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
new Aspose.BarCode.Metered() + .SetMeteredKey()(not needed — single key covers all environments)
generator.GenerateBarCodeImage().ToPngBinaryData() oder .SaveAsPng().
QREncodeMode.Auto + QRErrorLevel.LevelH + manuelle Logo-Überlagerung.QRCodeWriter.CreateQrCode().AddBrandLogo()

Wenn Teams einen Wechsel von Aspose.BarCode zu IronBarcode erwägen

Mehrere Szenarien veranlassen Entwicklungsteams üblicherweise dazu, IronBarcode als Alternative zu Aspose.BarCode zu evaluieren.

Die Abonnementverlängerung ist da

Bei der jährlichen Abonnementverlängerung überprüfen Teams am häufigsten ihre Bibliotheksentscheidungen. Wenn Aspose.BarCode das einzige Produkt in der Aspose-Produktpalette ist, zieht der Barcode-Funktionalitätsvergleich die Zahlung von 999 $/Jahr pro Entwickler (oder 4.995 $/Jahr in der Site-Stufe) nach sich. Das Gespräch verläuft üblicherweise so: "Das zahlen wir jedes Jahr auf ewig." Was kostet IronBarcode einmalig? In der Professional Version (2.999 US-Dollar für 10 Entwickler) amortisiert sich IronBarcode innerhalb des ersten Jahres mit der Standortlizenz.

Für Teams, die Aspose.Total verwenden — wo Aspose.BarCode mit vielen anderen Aspose-Produkten gebündelt ist — ist die Rechnung anders. Die Grenzkosten von Aspose.BarCode innerhalb dieses Pakets nähern sich Null. Diese Teams haben weniger Grund zum Wechseln.

PDF-Unterstützung wird zur Voraussetzung

Viele Projekte beginnen mit dem Auslesen von Barcodes aus Bildern und fügen dann später die PDF-Unterstützung hinzu, wenn ein Beteiligter feststellt, dass die eingehenden Dokumente PDFs und keine Bilddateien sind. An diesem Punkt steht das Aspose.BarCode-Team vor einer Entscheidung: Aspose.PDF hinzufügen (ein weiteres Abonnement), einen PDF-Renderer von Drittanbietern finden oder die Barcode-Bibliothek neu bewerten.

Das Hinzufügen von Aspose.PDF löst die unmittelbare Anforderung, bedeutet jedoch ein zweites jährliches Abonnement. Das Finden eines Drittanbieters für Renderer fügt eine Abhängigkeit und einen Integrationsaufwand hinzu. Das Ergebnis ist oft die erneute Überprüfung der Barcode-Bibliothek – und die Entdeckung, dass IronBarcode PDFs nativ gegen eine einmalige Gebühr lesen kann.

Formatunbekannte Szenarien in der Produktion

Kundenorientierte Anwendungen, die Dokumenten-Uploads akzeptieren, können nicht steuern, welches Barcode-Format ein hochgeladenes Dokument verwendet. Wenn die Anwendung mit dem Erwartung, dass Code-128-Eingaben vorliegen, erstellt wurde und ein Kunde ein DataMatrix-Etikett hochlädt, wird ein festgelegtes DecodeType.Code128 stillschweigend keine Ergebnisse zurückgeben. Ändern zu DecodeType.AllSupportedTypes korrigiert die Richtigkeit, führt aber zu einem Leistungseinbruch.

Teams, die auf dieses Problem gestoßen sind – sie fügen ihrer Lese-Konfiguration immer mehr DecodeType-Werte hinzu, da in der Produktion neue Formate erscheinen – enden oft damit, eine Liste zu pflegen, die bei jeder neuen Formatquelle aktualisiert werden muss. Die automatische Erkennung von IronBarcode macht diese Liste überflüssig.

Cloud- und containerbasierte Bereitstellungen

Die dateibasierte Lizenzierung von Aspose.BarCode erfordert einen zusätzlichen Bereitstellungsschritt: Die Lizenzdatei muss zur Laufzeit über einen Pfad zugänglich sein, den die Anwendung lesen kann. In einem GitOps-Workflow landet die Lizenzdatei entweder in der Quellcodeverwaltung (ein Sicherheitsrisiko) oder muss über ein eingebundenes geheimes Volume eingebunden werden. Der schlüsselbasierte Ansatz von IronBarcode fügt sich nahtlos in Kubernetes Secrets und CI/CD Secret-Variablen ein, ohne dass im Container-Image eine Datei verwaltet werden muss.

Gemeinsame Überlegungen zur Migration

Teams, die von Aspose.BarCode auf IronBarcode umsteigen, müssen einige wenige, vorhersehbare technische Anpassungen vornehmen.

Zuordnung von Eigenschaftsnamen

Der häufigste Kompilierungsfehler nach dem Pakettausch ist das Umbenennen von result.CodeText zu result.Value. Eine Suche im gesamten Quellcode deckt dies schnell ab:

grep -r "\.CodeText" --include="*.cs" .
grep -r "\.CodeTypeName" --include="*.cs" .
SHELL

result.CodeText wird zu result.Value. result.CodeTypeName wird zu result.Format.ToString(). Die result.Format-Eigenschaft ist ein BarcodeEncoding-Enum-Wert, der auch typisierte Vergleiche dort ermöglicht, wo sie benötigt werden.

DecodeType-Entfernung

Jeder DecodeType.*-Verweis im Codebestand kann entfernt werden:

grep -r "DecodeType\." --include="*.cs" .
SHELL

Wenn ein bestimmter DecodeType aufgelistet wurde, um die Leistung für ein bekanntes Format zu verbessern, bietet ReadingSpeed.Faster in BarcodeReaderOptions einen ähnlichen Vorteil ohne Anforderungen an das Formatwissen.

Änderung der Lizenzinitialisierung

Aspose.BarCode verwendet eine .lic-Datei, die über license.SetLicense() geladen wird. IronBarcode verwendet einen String-Schlüssel:

IronBarCode.License.LicenseKey =
    Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
    ?? throw new InvalidOperationException("IronBarcode license key not configured");

Entfernen Sie die .lic-Datei aus dem Repository und den Build-Artefakten. Entfernen Sie in Dockerdie COPY Aspose.BarCode.lic-Zeile und ersetzen Sie sie durch einen ENV IRONBARCODE_LICENSE-Eintrag.

Zuordnung von Codierungstypen zu Barcode-Codierung

EncodeTypes.QR mappt auf BarcodeEncoding.QRCode – der Benennungsunterschied ist der Punkt, an dem Teams am häufigsten dem ersten Kompilierungsfehler begegnen, nachdem sie den Generierungscode migriert haben. Die meisten anderen Zuordnungen sind direkte Entsprechungen mit konsistenter Benennung.

Zusätzliche IronBarcode Funktionen

Über die zentralen Vergleichspunkte hinaus bietet IronBarcode Funktionen, die je nach Anwendungskontext relevant sein können:

.NET-Kompatibilität und Zukunftsfähigkeit

IronBarcode unterstützt .NET Framework4.6.2+, .NET Core 3.1+ und .NET 5, 6, 7, und 8. Die Bibliothek erhält regelmäßige Updates im Einklang mit Microsofts .NET-Veröffentlichungsrhythmus. Aspose.BarCode unterstützt einen vergleichbaren .NET-Versionenbereich, sodass keine der Bibliotheken auf den aktuellen Versionen einen Kompatibilitätsvorteil bietet. Der entscheidende Unterschied für die Zukunftsfähigkeit liegt in der Lizenzierung: Eine heute erworbene unbefristete IronBarcode -Lizenz deckt zukünftige .NET Versionen ohne zusätzliche Kosten ab, während Aspose.BarCode-Abonnements eine fortlaufende Verlängerung erfordern, um Zugriff auf aktualisierte Versionen zu erhalten.

Abschluss

Aspose.BarCode und IronBarcode repräsentieren zwei unterschiedliche Philosophien im Design von Barcode-Bibliotheken. Aspose.BarCode basiert auf einer expliziten, instanzbasierten API, bei der der Aufrufer das Format angibt, die Lebensdauer von Objekten verwaltet und jede Operation über eine Eigenschaftshierarchie konfiguriert. IronBarcode basiert auf einer statischen, formatunabhängigen API, wobei die Bibliothek die Erkennung, den Objektlebenszyklus und das PDF-Rendering intern übernimmt. Keiner der beiden Ansätze ist an sich richtig – die richtige Wahl hängt davon ab, was die Anwendung benötigt.

Aspose.BarCode ist die bessere Wahl für Teams, die bereits im Aspose-Ökosystem tätig sind. Wenn Aspose.Total bereits lizenziert ist, entstehen durch Aspose.BarCode keine Marginalkosten, und seine über 80 Symbologien sind eine der breitesten Verfügbarkeiten in jeder kommerziellen .NET-Barcode-Bibliothek. Für Anwendungen, die ungewöhnliche Formate erfordern – MaxiCode, DotCode oder spezielle Postsymbologien, die nicht in der Liste der über 50 Symbole von IronBarcode enthalten sind – ist Aspose.BarCode möglicherweise die einzig praktikable Option. Seine Reife und Formatvielfalt sind echte Stärken.

Für Teams, die Aspose.BarCode als Einzelkauf in Betracht ziehen, gestaltet sich die Wertberechnung schwieriger. Die Anforderung an die Formatvorgabe führt zu zusätzlichen Schwierigkeiten bei jedem Lesevorgang. Das Fehlen einer nativen PDF-Unterstützung verdoppelt die Abonnementkosten für eine Funktion, die IronBarcode bereits im Basispaket bietet. Und das Abonnementmodell bedeutet, dass sich die Kosten jährlich erhöhen – 4.995 US-Dollar pro Jahr für ein Team von 10 Entwicklern summieren sich über fünf Jahre auf 24.975 US-Dollar, verglichen mit 2.999 US-Dollar bei einem einmaligen Kauf von IronBarcode Professional . Die automatische Erkennung, die native PDF-Lesefunktion und die unbefristete Lizenz von IronBarcode lösen alle drei Probleme in einem einzigen Paket.

Die Entscheidung hängt letztendlich von der Passung zum Ökosystem und den Symbolikanforderungen ab. Teams, die eng mit Aspose-Produkten integriert sind, oder Teams, die Formate außerhalb der von IronBarcode unterstützten Liste benötigen, gehören zu Aspose.BarCode. Teams, die eine eigenständige Dauerlizenz, native PDF-Lesefunktion und eine API wünschen, die keine Formatkenntnisse bei jedem Lesevorgang erfordert, werden IronBarcode als die praktischere Wahl empfinden.

Curtis Chau
Technischer Autor

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

...
Weiterlesen

Verwandte Artikel

Key in blue circle

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

Your trial license will be sent to your email address

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

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

Von Millionen von Ingenieur*innen weltweit vertraut

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