IRONSOFTWAREHOME
PORÓWNAJ Z INNYMI KOMPONENTAMI

LEADTOOLS Barcode vs IronBarcode: Porównanie bibliotek kodów kreskowych C#

Curtis Chau
Curtis Chau
Updated: 21 kwietnia 2026

#NetBarcodevs IronBarcode: Porównanie generacji tylko 1D z pełnym zestawem narzędzi kodów kreskowych

Enum TypeNetBarcodenie zawiera wpisu dla kodu QR. Kiedy w trzecim miesiącu projektu dotyczącego etykiet wysyłkowych pojawia się wymóg dodania kodu QR, programiści sięgają po drugą bibliotekę. Ta druga biblioteka posiada własny interfejs API, własny harmonogram wydawania aktualizacji oraz wspólną zależność SixLabors.ImageSharp, której wersja może nie być zgodna z wersją wymaganą przez NetBarcode. W niniejszym porównaniu przeanalizowano, czym jest NetBarcode, gdzie dobrze się sprawdza oraz w jakich obszarach IronBarcode wypełnia luki bez konieczności dodawania drugiego lub trzeciego pakietu.

Zrozumienie NetBarcode

NetBARCODE to biblioteka open source do generowania kodów kreskowych w środowisku .NET, opublikowana na licencji MIT. Zostało stworzone w celu generowania obrazów BARCODE liniowych na podstawie danych tekstowych i doskonale spełnia to zadanie. Biblioteka celuje w Code128, EAN-13, Code39 i kilka innych formatów 1D — wszystkie udostępniane za pomocą prostego konstruktora i zestawu metod wyjściowych. Jego zależność od SixLabors.ImageSharp dostarcza warstwę renderowania obrazu, a od wersji 1.8 ta zależność jest odzwierciedlona w publicznym API przez typ zwracany Image<Rgba32> w GetImage().

NetBarcode nie ma na celu byćia uniwersalnym zestawem narzędzi do obsługi kodów kreskowych. Nie posiada funkcji odczytu ani nie obsługuje formatów 2D. Są to świadome decyzje dotyczące zakresu. Biblioteka doskonale nadaje się do aplikacji, które wymagają wyłącznie kodów kreskowych 1D, a jej licencjaMITsprawia, że wdrożenie w środowisku open source jest proste.

Kluczowe cechy architektury:

  • Licencja MIT: Sama biblioteka jest objęta licencją MIT, choć jej zależność SixLabors.ImageSharp posiada odrębną licencję komercyjną, która ma zastosowanie przy przekroczeniu określonego progu przychodów
  • Projekt tylko 1D: Enum Type definiuje 11 wartości w 8 rodzinach symbolik liniowych; nie ma wpisów 2D ani wpisów dla UPC-A, UPC-E, ITF czy MSI
  • Zależność SixLabors.ImageSharp: Renderowanie obrazu jest delegowane do ImageSharp, a od wersji 1.8 metoda GetImage() zwraca Image<Rgba32>, bezpośrednio eksponując typ ImageSharp w publicznym API
  • API oparte na konstruktorze: Kody kreskowe są tworzone za pomocą new Barcode(data, Type.X) i zapisywane lub pobierane za pomocą SaveImageFile() lub GetImage()
  • **Brak API odczytu:**NetBarcodesłuży wyłącznie do generowania; nie ma metody ani klasy do dekodowania obrazów kodów kreskowych
  • Brak przetwarzania wsadowego: każdy BarCode jest niezależnym wywołaniem konstruktóra; no built-in enumeration or batch pipeline

Granice projektowe typu Enum

Enum Type jest autorytatywną listą tego, coNetBarcodepotrafi generować. Analiza tekstu pozwala poznać zakres biblioteki:

//NetBarcodeType enum — complete list as of v1.8
public enum Type
{
    Codabar,
    Code11,
    Code128,
    Code128A,
    Code128B,
    Code128C,
    Code39,
    Code39E,
    Code93,
    EAN13,
    EAN8
}

// These entries do not exist — attempting to use them produces a CS0117 compile error:
// Type.QRCode      — does not exist
// Type.DataMatrix  — does not exist
// Type.PDF417      — does not exist
// Type.Aztec       — does not exist
// Type.UPCA        — does not exist
// Type.UPCE        — does not exist
// Type.ITF         — does not exist
// Type.MSI         — does not exist
C#

Enum ma jedenaście wpisów w ośmiu rodzinach symbologii liniowej i odzwierciedla to zakres bibliotek. Każda aplikacja wymagająca kodów QR, DataMatrix, PDF417, Aztec, UPC-A, UPC-E, ITF czy MSI musi uzyskać osobny pakiet dla dostarczenia tych formatów.

Zrozumienie IronBarcode

IronBarcode to komercyjna biblioteka kodów kreskowych .NET, która w jednym pakiecie obejmuje zarówno generowanie, jak i odczyt. Jest ona tworzona i utrzymywana przez Iron Software, a regularne aktualizacje są dostosowane do aktualnych wersji .NET. Statyczna powierzchnia API biblioteki jest zaprojektowana tak, aby zmiana formatu kodu kreskowego wymagała tylko zmiany jednej stałej — ta sama funkcja BarcodeWriter.CreateBarcode, która generuje Code128, generuje również kody QR, DataMatrix,PDF417i Aztec.

IronBarcode obsługuje odczytywanie kodów kreskowych przez klasę BarcodeReader, która akceptuje pliki obrazów i dokumenty PDF, zwracając zdekodowane wyniki z identyfikacją formatu. Oznacza to, że generowanie i odczyt mają jedną zależność, jedną licencję i jeden zestaw informacji o wydaniu do śledzenia.

Kluczowe cechy:

  • Zunifikowane Generowanie i Odczytywanie: Zarówno BarcodeWriter, jak i BarcodeReader są zawarte w pojedynczej paczce NuGet
  • Ponad 50 obsługiwanych formatów: formaty 1D obejmują wszystkie odpowiedniki NetBarcode; Formaty 2D obejmują QR Code, DataMatrix, PDF417,Azteci inne
  • Płynne API Łańcucha: BarcodeWriter.CreateBarcode(data, encoding) zwraca obiekt GeneratedBarcode z metodami wyjściowymi, w tym SaveAsPng(), SaveAsJpeg(), ToPngBinaryData(), i przeciążeniami opartymi na strumieniu
  • Brak zależności od ImageSharp: renderowanie obrazów w IronBarcode jest samodzielne; nie wprowadzono żadnej zależności przechodniej SixLabors
  • Wsparcie dla PDF: API odczytywania akceptuje pliki .pdf bezpośrednio oprócz formatów obrazów
  • Licencja komercyjna: wymagany jest klucz licencyjny; Tryb próbny jest dostępny i usuwa znaki wodne po zakupie

Porównanie funkcji

FunkcjaNetBarcodeIronBarcode
Generowanie kodów kreskowych 1DTakTak
Generowanie kodów kreskowych 2DNieTak
Odczytywanie BarCodeNieTak
Obsługa plików PDFNieTak
Całkowita liczba symboli11 wartości wyliczenia / 8 rodzin50+
Zależność ImageSharpTak (licencja dzielona)Nie
Model licencjiMIT(+ warunki ImageSharp)Komercjalne

Szczegółowe porównanie funkcji

FunkcjaNetBarcodeIronBarcode
Generacja
Code128 (plus 128A/B/C), Code39, Code39 Extended, Code93, Code11TakTak
EAN-13, EAN-8, CodabarTakTak
UPC-A, UPC-E, ITF, MSINieTak
Kod QRNieTak
DataMatrixNieTak
PDF417NieTak
AztecNieTak
GS1-128, GS1 DataBarNieTak
Formaty pocztowe (Intelligent Mail, Royal Mail)NieTak
Wynik w formacie SVGNieTak
Czytanie
Odkoduj obrazy BarCodeNieTak
Odczyt z dokumentów PDFNieTak
Wykrywanie wielu kodów BarCodeNieTak
Automatyczne wykrywanie formatuNieTak
Projektowanie API
Tworzenie oparte na konstruktórachTakNie (metoda statyczna)
Płynny łańcuch wyjściowyNieTak
Obsługa przetwarzania wsadowegoPodręcznikWbudowane
Licencjonowanie i zależności
Licencja bibliotekiMITKomercjalne
Zależność ImageSharpTakNie
Wsparcie komercyjneSpołecznośćProfessional

Zakres formatu

Podejście NetBarcode

NetBarcode dostarcza 11 wartości enumu kodów kreskowych liniowych w 8 rodzinach symbolik poprzez enum Type. W tym zakresie wybór formatu jest prosty — wystarczy przekazać odpowiedni element wyliczenia do konstruktóra. Granica jest równie jasna: próba użycia formatu spoza wyliczenia powoduje błąd kompilacji.

//NetBarcode— formats that compile and produce output
using NetBarcode;

var code128 = new Barcode("12345678901234", Type.Code128);
code128.SaveImageFile("shipping.png");

var ean13 = new Barcode("5901234123457", Type.EAN13);
ean13.SaveImageFile("product.png");

//NetBarcode— formats that produce CS0117 compile errors
// var qr     = new Barcode("data", Type.QRCode);     // error CS0117
// var dm     = new Barcode("data", Type.DataMatrix);  // error CS0117
// var p417   = new Barcode("data", Type.PDF417);      // error CS0117
// var aztec  = new Barcode("data", Type.Aztec);       // error CS0117
// var upca   = new Barcode("data", Type.UPCA);        // error CS0117
// var itf    = new Barcode("data", Type.ITF);         // error CS0117
C#

Branże, w których ta granica staje się ograniczeniem, obejmują śledzenie produktów farmaceutycznych (kodDataMatrixwymagany zgodnie z wymogąmi FDA dotyczącymi BARCODE-ów 2D), karty pokładowe linii lotniczych (Aztec), listy przewozowe (PDF417) oraz marketing mobilny (kod QR). Każdy z tych wymagań wykluczaNetBarcodejako samodzielne rozwiązanie.

Podejście IronBarcode

IronBarcode eksponuje wszystkie obsługiwane formaty przez tę samą metodę BarcodeWriter.CreateBarcode. Powierzchnia API nie zmienia się przy przechodzeniu z formatu 1D na 2D — różni się tylko stała BarcodeEncoding.

using IronBarCode;

// 1D formats — identical API to the 2D examples below
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("shipping.png");

BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .SaveAsPng("product.png");

// 2D formats — same method, different encoding constant
BarcodeWriter.CreateBarcode("https://example.com", BarcodeEncoding.QRCode)
    .SaveAsPng("qr.png");

BarcodeWriter.CreateBarcode("01034531200000111719112510ABCD1234", BarcodeEncoding.DataMatrix)
    .SaveAsPng("pharma-label.png");

BarcodeWriter.CreateBarcode("M1DOE/JOHN MR ABC123 JFKLHR 0012 123Y015A0001 100", BarcodeEncoding.Aztec)
    .SaveAsPng("boarding-pass.png");

Pełna lista obsługiwanych stałych jest dostępna w dokumentacji dotyczącej obsługiwanych formatów BARCODE, obejmującej wszystkie formaty generowania BARCODE 2D oraz pełny zestaw BARCODE 1D.

Projekt API generowania

Podejście NetBarcode

Model generowaniaNetBarcodeopiera się na konstruktórach. Obiekt Barcode jest zainicjowany za pomocą ciągu danych i wartości enumu Type. Wyjście jest albo zapisywane bezpośrednio za pomocą SaveImageFile() albo pobierane jako Image<Rgba32> za pomocą GetImage(). Od wersji 1.8, typ zwracany przez GetImage() to typ SixLabors.ImageSharp, co oznacza, że każdy kod przechowujący lub przetwarzający wartość zwracaną musi importować i działać w ramach API ImageSharp.

using NetBarcode;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;

// Constructor-based creation
var barcode = new Barcode("12345678901234", Type.Code128);

// Save to file — straightforward
barcode.SaveImageFile("code128.png");

// GetImage() returns Image<Rgba32> — ImageSharp import required
Image<Rgba32> image = barcode.GetImage();

// Further processing requires familiarity with the ImageSharp API
using var stream = new MemoryStream();
image.SaveAsPng(stream);
byte[] bytes = stream.ToArray();

Typ zwracany przez metodę GetImage() wiąże kod potomny z biblioteką ImageSharp. Każda metoda, która akceptuje lub przechowuje wynik, musi deklarować go jako Image<Rgba32>, wprowadzając przejściową zależność do kodu wywołującego.

Podejście IronBarcode

IronBarcode wykorzystuje łańcuch płynny. BarcodeWriter.CreateBarcode zwraca obiekt GeneratedBarcode, który ma wiele metod wyjściowych. Obsługa obrazów odbywa się wewnętrznie — kod wywołujący nie ma dostępu do typu ImageSharp.

using IronBarCode;

// Fluent generation — save directly to file
BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128)
    .SaveAsPng("code128.png");

// Multiple output options on the same GeneratedBarcode object
var barcode = BarcodeWriter.CreateBarcode("12345678901234", BarcodeEncoding.Code128);
barcode.SaveAsPng("code128.png");
barcode.SaveAsJpeg("code128.jpg");
byte[] bytes = barcode.ToPngBinaryData();

using var stream = new MemoryStream();
barcode.SaveAsPng(stream);

Szczegółowe opcje generowania kodów kreskowych 1D, w tym szerokość, wysokość i konfiguracja etykiet, zostały omówione w dokumentacji IronBarcode.

Umiejętność czytania

Podejście NetBarcode

NetBarcode nie posiada API do odczytu. Nie ma metody, klasy ani konfiguracji, która dekodowałaby obraz kodu kreskowego z powrotem do ciągu danych. Jest to celowe ograniczenie zakresu, a nie pominięcie w oczekiwaniu na wydanie. Projekt, który generuje BarCodes za pomocą NetBarcode, a następnie musi je odczytać — w celu weryfikacji wydrukowanej etykiety, zeskanowania przesyłki zwrotnej lub wyodrębnienia wartości z faktury dostawcy — musi wprowadzić oddzielną bibliotekę do tego celu.

//NetBarcode— no reading method exists
// The following does not compile because the method does not exist:
// var result = barcode.Read("image.png");  // method does not exist

// The typical workaround requires ZXing.Net as a third-party dependency

Biblioteka ZXing.Net jest najczęściej dodawanym elementem do odczytu obok NetBarcode, zapewniając trzeci interfejs API i trzeci pakiet do zarządzania wersjami obokNetBarcodei dowolnej biblioteki 2D już dodanej dla kodów QR.

Podejście IronBarcode

IronBarcode zawiera BarcodeReader w tej samej paczce, co BarcodeWriter. API odczytu akceptuje pliki graficzne i dokumenty PDF i zwraca zbiór zdekodowanych wyników, z których każdy zawiera wartość BARCODE, typ formatu oraz numer strony w przypadku odczytu z pliku PDF.

using IronBarCode;

// Read barcodes from an image file
var imageResults = BarcodeReader.Read("shipping-label.png");
foreach (var r in imageResults)
{
    Console.WriteLine($"{r.Format}: {r.Value}");
}

// Read barcodes from a PDF document — no additional library required
var pdfResults = BarcodeReader.Read("invoice.pdf");
foreach (var r in pdfResults)
{
    Console.WriteLine($"Page {r.PageNumber}: {r.Value}");
}

Przewodnik dotyczący odczytu kodów kreskowych z obrazów obejmuje opcje dostosowywania szybkości, wykrywania wielu kodów kreskowych oraz korekcji obrazu dostępne w interfejsie API odczytu.

Kwestie dotyczące zależności i licencji

###NetBarcodei ImageSharp

NetBarcode jest objęty licencją MIT. Biblioteka SixLabors.ImageSharp, od której jest ona zależna, stosuje inny model: jest bezpłatna dla projektów open source oraz dla firm, których roczne przychody brutto nie przekraczają określonego progu, ale powyżej tego progu wymagana jest licencja komercyjna. Ten podział obowiązuje bez względu na to, czy ImageSharp jest wyraźnie wymieniony w .csproj projektu, czy przychodzi przejściowo przez NetBarcode.

<!-- This single reference pulls in SixLabors.ImageSharp and SixLabors.Fonts
     under their respective split licences. NuGet does not surface the
     commercial licence condition during package installation. -->
<PackageReference Include="NetBarcode" Version="1.8.3" />
XML

W przypadku firmy detalicznej lub logistycznej przetwarzającej BarCodes na dużą skalę — głównego przypadku użycia, do którego skierowany jestNetBarcode— roczne przychody często przekraczają próg, od którego obowiązuje komercyjna licencja ImageSharp. Audyt zgodności może ujawnić ten obowiązek osadzony w drzewie pakietów.

Wydanie v1.8 wprowadziło dodatkową konsekwencję zależności ImageSharp: typ zwracany przez GetImage() zmienił się z wewnętrznego przedstawienia na SixLabors.ImageSharp.Image<Rgba32>. Istniejący kod, który wywoływał GetImage() bez wyraźnego typowania, przestał działać podczas kompilacji, a nowe dyrektywy using dla SixLabors.ImageSharp i SixLabors.ImageSharp.PixelFormats stały się wymagane. Gdy własne API ImageSharp ewoluuje w przyszłych wersjach, ma to wpływ na publiczny interfejs API NetBarcode.

IronBarcode

IronBarcode nie jest zależny od SixLabors.ImageSharp. Warunki licencji są określone bezpośrednio na stronie licencyjnej IronBarcode, bez progu podziału ani przechodnich zobowiązań komercyjnych. Dostępny jest klucz próbny do oceny wersji próbnej; Zakupione licencje usuwają znak wodny wersji próbnej z wygenerowanych wyników.

Przewodnik po mapowaniu API

NetBarcodeIronBarcodeUwagi
new Barcode(data, Type.Code128)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)Konstruktor → metoda statyczna
new Barcode(data, Type.Code128A/B/C)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)IronBarcode automatycznie wybiera podzbiór
new Barcode(data, Type.EAN13)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN13)Bezpośrednie odwzorowanie
new Barcode(data, Type.EAN8)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.EAN8)Bezpośrednie odwzorowanie
new Barcode(data, Type.Code39)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39)Bezpośrednie odwzorowanie
new Barcode(data, Type.Code39E)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code39Extended)Bezpośrednie odwzorowanie
new Barcode(data, Type.Code93)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code93)Bezpośrednie odwzorowanie
new Barcode(data, Type.Code11)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code11)Bezpośrednie odwzorowanie
new Barcode(data, Type.Codabar)BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Codabar)Bezpośrednie odwzorowanie
barcode.SaveImageFile("x.png").SaveAsPng("x.png")Zmiana nazwy metody
barcode.SaveImageFile("x.jpg").SaveAsJpeg("x.jpg")Zmiana nazwy metody
barcode.GetImage()Image<Rgba32>.ToPngBinaryData() lub .SaveAsPng()Brak eksponowanego typu ImageSharp
Brak Type.UPCA / UPCE / ITF / MSIBarcodeEncoding.UPCA / UPCE / ITF / MSINowa funkcja
Brak Type.QRCodeBarcodeEncoding.QRCodeNowa funkcja
Brak Type.DataMatrixBarcodeEncoding.DataMatrixNowa funkcja
Brak Type.PDF417BarcodeEncoding.PDF417Nowa funkcja
Brak Type.AztecBarcodeEncoding.AztecNowa funkcja
Brak API do odczytuBarcodeReader.Read(path)Nowa funkcja
using NetBarcode;using IronBarCode;Zastąpienie przestrzeni nazw
using SixLabors.ImageSharp;UsuńNie jest już potrzebne

Pełne informacje na temat formatów znajdują się w dokumentacji dotyczącej obsługiwanych formatów BarCode.

Kiedy zespoły rozważają przejście zNetBarcodena IronBarcode

Wymagania dotyczące kodów QR i formatów 2D

Najczęstszym powodem rozważania alternatywy dlaNetBarcodejest nowe wymaganie dotyczące kodów QR. Aplikacje, które zaczynają od generowania kodów kreskowych 1D dla etykiet detalicznych lub listów przewozowych, często otrzymują kolejne wymagania dotyczące kodów QR — linków bezdotykowych, głębokich linków do aplikacji mobilnych, kampanii marketingowych. Ponieważ enum Type nie zawiera wpisu QR, nie można spełnić tego wymagania w NetBarcode. Zespoły, które dodają oddzielną bibliotekę kodów QR, aby wypełnić tę lukę, stają następnie przed drugą oceną, gdyDataMatrixjest wymagany do integracji farmaceutycznej lubPDF417dla przewoźnika logistycznego, który wymaga go na etykietach wysyłkowych.

Odczytywanie BarCode staje się konieczne

Niektóre projekty zaczynają się od samego generowania, a później dodają wymóg walidacji lub przetwarzania dokumentów: potwierdzenie, że wydrukowany BARCODE pasuje do danych źródłowych, wyciąganie wartości BARCODE-ów z przychodzących faktur dostawców lub skanowanie etykiet przesyłek zwrotnych.Net/Barcodenie zapewnia takiej możliwości. Dodanie ZXing.Net lub podobnej biblioteki do odczytu wprowadza trzecie API, którego trzeba się nauczyć i które trzeba utrzymywać w tym samym kodzie źródłowym, który już zawieraNetBarcodei bibliotekę QR. W projektach, w których przewiduje się zapotrzebowanie na odczyt danych, nawet w przyszłej fazie, często bardziej efektywne jest wybranie biblioteki, która od samego początku obsługuje oba te zadania.

Audyt licencji komercyjnej ImageSharp

Podczas przeglądów prawnych i zgodnościowych zależności stron trzecich czasami pojawia się warunek licencji komercyjnej SixLabors.ImageSharp osadzony w drzewie pakietów NetBarcode. W przypadku firm, których roczne przychody brutto przekraczają próg, obowiązek ten ma zastosowanie niezależnie od tego, czy ImageSharp został wybrany celowo, czy też trafił do nich pośrednio poprzez NetBarcode. Zespoły, które odkryją to podczas audytu — a nie przed wdrożeniem — staną przed koniecznością retroaktywnego naprawiania błędów zamiast planowanej migracji. Ocena licencji zależności przed rozpoczęciem projektu jest lepszym rozwiązaniem.

Zmniejszenie złożoności wielu bibliotek

Zespoły, które korzystają zNetBarcodedo generowania kodów 1D, biblioteki przeznaczonej do generowania kodów QR oraz ZXing.Net do odczytu, muszą dbać o kompatybilność wersji trzech oddzielnych pakietów. Każdy cykl aktualizacji wymaga sprawdzenia, czy wszystkie trzy biblioteki korzystają z tej samej wersji ImageSharp. Każdy nowy programista w projekcie ma do czynienia z trzema różnymi interfejsami API, które koncepcyjnie dotyczą tej samej kwestii. Konsolidacja w jedną bibliotekę BarCODE upraszcza wdrażanie, zmniejsza ryzyko konfliktów między wersjami i skupia konserwację w jednym cyklu wydawniczym.

Typowe kwestie związane z migracją

Zamiana pakietów i czyszczenie zależności przechodnich

UsunięcieNetBarcodeza pomocą dotnet remove package NetBarcode to pierwszy krok. Pakiet SixLabors.ImageSharp może ponownie pojawić się w drzewie zależności, jeśli inne pakiety w projekcie również go przejmują. Po usunięciu, sprawdź przywróconą listę pakietów za pomocą dotnet list package --include-transitive, aby potwierdzić, czy ImageSharp nadal jest obecny i czy nadal obowiązuje jego warunek licencji komercyjnej.

Zastąpienie typu zwracanego przez metodę GetImage()

Każdy kod, który przechowywał wynik GetImage() jako Image<Rgba32>, musi być zaktualizowany. Typ ImageSharp nie ma bezpośredniego odpowiednika w IronBarcode; Wybór zamiennika zależy od tego, w jaki sposób obraz został wykorzystany w dalszej części procesu. Kod, który zapisywał obraz do strumienia, można zastąpić .SaveAsPng(stream) bezpośrednio na obiekcie GeneratedBarcode. Kod, który pobierał surowe bajty, może używać .ToPngBinaryData(). Kod, który wykonywał dalsze operacje ImageSharp na zwróconym obrazie, będzie wymagał indywidualnej oceny tych operacji.

Aktualizacja przestrzeni nazw

Pliki, które importowały using NetBarcode;, using SixLabors.ImageSharp;, using SixLabors.ImageSharp.PixelFormats; lub using SixLabors.Fonts;, muszą mieć te dyrektywy zastąpione using IronBarCode;. Wyszukiwanie tych instrukcji using w całym projekcie pozwala zidentyfikować każdy plik, który wymaga uwagi przed rozpoczęciem kompilacji.

Dodatkowe możliwości IronBarcode

Oprócz podstawowych funkcji generowania i odczytu omówionych w tym porównaniu,IronBarcode oferuje:

  • Generowanie BarCode'ów w formacie SVG: Generowanie obrazów BarCode'ów w formacie wektorowym, odpowiednich do procesów drukowania i skalowalnych projektów etykiet
  • Stylizacja BarCode'ów: Konfiguracja koloru paska, koloru tła, czcionki adnotacji, marginesu i obrotu generowanych BarCode'ów
  • GS1-128 i GS1 DataBar: BARCODE o strukturze identyfikatora aplikacji, zapewniający zgodność z wymogąmi handlu detalicznego i łańcucha dostaw
  • Formaty pocztowe: Intelligent Mail, Royal Mail i inne symbole pocztowe stosowane w aplikacjach pocztowych
  • Wyodrębnianie kodów kreskowych z plików PDF: Odczytuj kody kreskowe bezpośrednio z wielostronicowych dokumentów PDF bez konieczności korzystania z oddzielnej biblioteki PDF
  • Generowanie partii: wydajne przetwarzanie zbiorów danych BarCode w ramach jednego potoku
  • **MAUI i urządzenia mobilne:**IronBarcode obsługuje aplikacje .NET MAUI do wielopłatformowych procesów związanych z kodami kreskowymi na urządzeniach mobilnych i stacjonarnych

Zgodność z platformą .NET i gotowość na przyszłość

IronBarcode celuje w nowe wersje .NET i zachowuje zgodność z .NET Standard dla projektów, które jeszcze nie migrowały do nowoczesnego .NET. Regularna kadencja wydania Iron Software wyrównuje aktualizacje kompatybilności z każdym głównym wydaniem .NET.Net/Barcodejest przeznaczony dla .NET Standard 2.0 i działa na aktualnych środowiskach uruchomieniowych poprzez tę warstwę kompatybilności, chociaż częstotliwość aktualizacji biblioteki i zestaw formatów 2D są ustalone przez zakres jej projektu.

Wnioski

NetBarcode i IronBarcode reprezentują różne pozycje w spektrum zakresu biblioteki BarCode.Net/Barcodeto skupiona, czysta implementacja generowania 1D kodów kreskowych: jedenaście wartości wyliczenia w ośmiu rodzinach symbologii liniowej, prosty API oparty na konstruktorze i licencja MIT, która utrzymuje proces adopcji płynny dla projektów open-source w zakresie przychodów ImageSharp.IronBarcode to szeroki zestaw narzędzi obejmujący generowanie ponad 50 formatów, odczyt z obrazów i plików PDF oraz płynny interfejs API, który traktuje formaty 1D i 2D identycznie.

Dla projektów, gdzie wymagania rzeczywiście ograniczają się do generowania liniowego kodu kreskowego w obrębie obsługiwanej grupy — systemu kasowego wytwarzającego kody EAN-13 dla europejskich skanerów sklepów detalicznych lub wewnętrznego narzędzia o określonym i krótkim czasie życia —NetBarcodedostarcza, co jest potrzebne, bez wprowadzania komercyjnej zależności. Biblioteka jest dobrze zbudowana w ramach swojego zakresu, a ten zakres jest jasny od pierwszego spojrzenia na enum Type.

W przypadku projektów, w których zakres formatowania może się rozszerzyć, gdzie w końcu konieczne będzie odczytanie danych lub gdzie problemem jest weryfikacja zgodności zależności przechodniej ImageSharp,IronBarcode rozwiązuje wszystkie trzy kwestie za pomocą jednego pakietu. Zespoły, które zaczynają odNetBarcodedo generowania kodów 1D, a później dodają QRCoder do kodów 2D i ZXing.Net do odczytu, mają trzy osobne obowiązki związane z utrzymaniem bibliotek;IronBarcodełączy je w jedno.

Wybór wynika bezpośrednio z wymagań projektu. Jeśli jedenaście wartości wyliczenia 1D zNetBarcodew ośmiu rodzinach symbologii i brak zdolności czytania pasują doskonale do specyfikacji,NetBarcodeto technicznie solidny wybór. Jeśli specyfikacja obejmuje dowolny format 2D, dowolny proces odczytu lub jakiekolwiek obawy dotyczące warunków licencji ImageSharp,IronBarcode jest bardziej kompletnym rozwiązaniem.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta