Przejdź do treści stopki
PORóWNAJ Z INNYMI KOMPONENTAMI

Scanbot SDK vs IronBarcode: Porównanie bibliotek kodów kreskowych C#

Syncfusion BarCode kontra IronBarcode: Architektura, Licencjonowanie i Zakres Odczytu

Ekosystem kodów kreskowych firmy Syncfusion generuje kody kreskowe za pomocą elementów interfejsu użytkownika i sprzedaje oddzielny produkt o nazwie Barcode Reader OPX do ich odczytu. Ten produkt odczytu wykorzystuje ZXing.Net (Apache 2.0) jako dekoder. Zespoły potrzebujące zarówno generowania, jak i odczytu, korzystają z dwóch produktów Syncfusion w ramach subskrypcji zestawu, a ten podział kształtuje kompromisy architektoniczne i kosztowe opisane poniżej.

Zrozumienie Syncfusion BarCode

Syncfusion BARCODE nie jest samodzielną biblioteką; to komponent w ramach Suite Syncfusion Essential Studio. Strona generacji jest dostarczana jako kontrolka UI: SfBarcode dla WinForms i WPF oraz SfBarcodeGenerator dla Blazor i MAUI. Te kontrolki renderują BarCode na formularzu w czasie wykonywania i są zaprojektowane do użycia w ramach szerszego ekosystemu komponentów interfejsu użytkownika firmy Syncfusion.

Strona do czytania jest całkowicie odrębnym produktem komercyjnym. Barcode Reader OPX to odrębna oferta firmy Syncfusion, posiadająca własną licencję, własny pakiet NuGet oraz własne API. Zespoły, które potrzebują zarówno generowania, jak i odczytu, muszą kupić, utrzymywać i konfigurować dwa produkty zamiast jednego.

Licencja społecznościowa Syncfusion zapewnia bezpłatny poziom dla kwalifikujących się organizacji, ale aby się do niego zakwalifikować, muszą być spełnione jednocześnie i w sposób ciągły wszystkie cztery poniższe warunki:

  • Próg przychodów: roczne przychody brutto firmy poniżej 1 000 000 USD (wszystkie źródła przychodów, nie tylko oprogramowanie)
  • Próg programistów: Pięciu lub mniej programistów w zespole
  • Próg zatrudnienia: Łącznie dziesięciu lub mniej pracowników
  • Próg kapitałowy: Łączna kwota pozyskanego kapitału zewnętrznego poniżej 3 000 000 USD we wszystkich rundach finansowania

Organizacje rządowe finansowane z podatków nie kwalifikują się niezależnie od wielkości; agencje rządowe niefinansowane podatkowo mogą kwalifikować się tylko po podpisaniu umowy o licencję główną bezpośrednio z Syncfusion. Warunki są samo potwierdzane i muszą być stale spełniane - przekroczenie dowolnego pojedynczego progu uruchamia zobowiązanie do komercyjnego licencjonowania.

Dodatkowe cechy ekosystemu BarCode Syncfusion obejmują:

  • Architektura kontrolki tylko do generowania: SfBarcode i SfBarcodeGenerator nie posiadają API do odczytu. Na powierzchni kontrolki nie ma metody .Read() ani .Scan().
  • Klucze licencyjne dla konkretnych wersji: Klucze licencyjne Syncfusion są powiązane z konkretnymi zakresami wersji Essential Studio. Aktualizacja z wersji 24.x do wersji 25.x wymaga nowego klucza, aktualizacji sekretów w każdym środowisku oraz ponownego wdrożenia, aby uniknąć pojawiania się znaków wodnych wersji próbnej w środowisku produkcyjnym.
  • Wieloetapowa rejestracja platformy: Każda platforma docelowa (Blazor, MAUI) wymaga, oprócz podstawowego wywołania licencji, wywołań rejestracji usług specyficznych dla danej platformy.
  • Brak generowania bezgłowego dla Blazor: SfBarcodeGenerator to komponent Razor, który renderuje się w przeglądarce. Nie posiada API do generowania plików po stronie serwera.
  • Brak wyjścia PDF: Ani kontrolka WinForms, ani Blazor nie mogą zapisywać BarCode bezpośrednio do pliku PDF.
  • Licencjonowanie zestawu: kod kreskowy Syncfusion jest licencjonowany jako część Essential Studio, a nie jako samodzielny produkt tylko do kodów kreskowych.
  • OPX reader bazowany na ZXing.Net: Barcode Reader OPX korzysta z ZXing.Net (Apache 2.0) jako dekodera. ZXing.Net jest również bezpośrednio dostępny przez NuGet pod tą samą licencją Apache 2.0.

Architektura sterowania wyłącznie generacyjnego

SfBarcode to kontrolka WinForms z API opartym na właściwościach: Text, Symbology, BarHeight, NarrowBarWidth, ShowText. Renderowanie BarCode na formularzu działa zgodnie z oczekiwaniami w projektancie WinForms. Generowanie pliku z kodem kreskowym programowo wymaga wzorca DrawToBitmap, co wiąże się z wstępnym przydzieleniem Bitmap o odpowiednich wymiarach przed renderowaniem:

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

// Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "12345678";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;

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

// Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "12345678";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;

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

' Version-specific key required — changes with every major Essential Studio release
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "12345678"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.BarHeight = 100
barcode.NarrowBarWidth = 1
barcode.ShowText = True

barcode.Width = 400
barcode.Height = 150
Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("barcode.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

Ten wzorzec zakłada ładowanie środowiska uruchomieniowego Windows Forms w każdym projekcie, który je wywołuje, w tym w aplikacjach konsolowych, usługach .NET Core i Azure Functions. Wariant Blazor, SfBarcodeGenerator, to komponent Razor i nie ma w ogóle ścieżki wyjściowej pliku po stronie serwera.

Zrozumienie IronBarcode

Biblioteka IronBarcode to biblioteka kodów kreskowych .NET stworzona do programowego generowania i odczytu we wszystkich modelach aplikacji .NET. Jest dostarczany jako pojedynczy pakiet NuGet, który obejmuje zarówno generowanie, jak i odczyt w tym samym interfejsie API, bez konieczności stosowania dodatkowego produktu.

Biblioteka jest zaprojektowana wokół modelu API statycznego: osoby wywołujące wywołują metody statyczne (BarcodeWriter.CreateBarcode, BarcodeReader.Read, QRCodeWriter.CreateQrCode) i łączą metody wyjściowe bezpośrednio na wyniku. Ten wzorzec działa identycznie w aplikacjach desktopowych WinForms, usługach internetowych .NET Core, Azure Functions, aplikacjach konsolowych oraz kontenerach Docker w systemie Linux.

Kluczowe cechy obejmują:

  • Ujednolicone generowanie i odczyt: Obie funkcje znajdują się w tym samym pakiecie NuGet, na tej samej licencji, korzystając z tego samego interfejsu API.
  • Statyczne API: Brak instancjacji kontrolki, brak zależności od środowiska UI, brak pośrednictwa DrawToBitmap.
  • Niezależność od platformy: ten sam kod i ten sam klucz licencyjny działają w WinForms, Blazor, MAUI, ASP.NET Core, konsoli, Azure Functions oraz Dockerze na systemie Linux.
  • Bezpośrednie wyjście plikowe: Kody kreskowe mogą być zapisywane bezpośrednio do formatów PNG, JPEG, SVG, HTML, PDF i innych bez pośredniego przydzielania Bitmap.
  • Wbudowana obsługa PDF: SaveAsPdf() to metoda wyjścia głównego; Biblioteka może również natywnie odczytywać BarCodes z dokumentów PDF.
  • Automatyczne wykrywanie formatu przy odczycie: BarcodeReader.Read automatycznie identyfikuje format kodu kreskowego bez konieczności określania typu przez użytkownika.
  • Klucz stabilny dla jednej wersji: Klucz licencyjny nie zmienia się w przypadku pomniejszych aktualizacji lub poprawek NuGet w ramach głównej wersji.
  • Funkcje kodów QR: Obsługuje osadzanie logo marek i dostosowywanie kolorów bezpośrednio w API generowania.

Porównanie funkcji

Poniższa tabela podsumowuje ogólne różnice między Syncfusion BarCode a IronBarcode:

Funkcja Syncfusion BarCode IronBarcode
Generowanie BarCode'ów Tak — kontrolki interfejsu użytkownika (WinForms, WPF, Blazor, MAUI) Tak — statyczny programowy interfejs API, wszystkie środowiska
Odczytywanie BarCode Nie — wymaga oddzielnego produktu BarCode Reader OPX Tak — ten sam pakiet co generacja
Wyjście w formacie PDF z kodem kreskowym BarCode Nie — wymaga oddzielnego zainstalowania Syncfusion.PDF Tak — wbudowane SaveAsPdf()
Odczytywanie BarCodes z plików PDF Nie Tak — native
Generowanie bezinterfejsowe / po stronie serwera Kontrola interfejsu użytkownika z zależnościami runtime WinForms Natywny — statyczny interfejs API, brak zależności od interfejsu użytkownika
Wersja bezpłatna Licencja społecznościowa (cztery warunki równoczesne) 30-dniowy okres próbny (tylko znak wodny)
Model licencji Roczna subskrypcja (Suite Essential Studio) Licencja wieczysta od 749 USD

Szczegółowe porównanie funkcji

Funkcja Syncfusion BarCode IronBarcode
Generacja
Generowanie WinForms Tak (SfBarcode) Tak
Generowanie WPF Tak (SfBarcode) Tak
Generowanie Blazor Tak (SfBarcodeGenerator, renderowane w przeglądarce) Tak (API po stronie serwera)
Generowanie MAUI Tak (SfBarcodeGenerator) Tak
Konsola / Azure Functions Wymaga środowiska uruchomieniowego WinForms Język ojczysty
Docker / Linux Ograniczone Pełne wsparcie
Bezpośredni zapis pliku Poprzez DrawToBitmap + Bitmap.Save .SaveAsPng(), .SaveAsPdf(), .SaveAsSvg(), itd.
QR z wbudowanym logo Nie Tak — .AddBrandLogo()
Czytanie
Odczyt API w pakiecie BarCode Nie Tak — BarcodeReader.Read()
Oddzielny produkt do czytania Tak — BarCode Reader OPX (płatny) Nie jest potrzebne
OPX wykorzystuje bibliotekę ZXing.Net (Apache 2.0) Tak — ZXing.Net jest bezpłatny Nie dotyczy
Odczytywanie BarCodes z plików PDF Nie Tak
Automatyczne wykrywanie formatu Nie dotyczy Tak
Wykrywanie wielu kodów BarCode Nie dotyczy Tak
Platforma
Minimalny interfejs API .NET Core Nieobsługiwane w sposób poprawny Pełne wsparcie
Wielopłatformowe (Linux) Ograniczone Pełne wsparcie
Licencjonowanie
Wersja bezpłatna Licencja społecznościowa (cztery warunki równoczesne) 30-dniowy okres próbny
Model licencji komercyjnej Roczna subskrypcja (Essential Studio) Wieczysta
Cena rynkowa na poziomie podstawowym Indywidualna wycena (subskrypcja roczna) Od 749 USD (licencja wieczysta)
Zakres klucza licencyjnego Specyficzne dla wersji (zmiany w głównych wersjach) Wersja stabilna w ramach głównej wersji
Koszty rejestracji platformy Wielostopniowy (RegisterLicense + AddSyncfusionBlazor + ConfigureSyncfusionCore) Pojedyncza linia
Obsługa plików PDF
Wynik w formacie PDF Nie — wymaga Syncfusion.PDF jako dodatkowego pakietu Tak — wbudowane
Odczytywanie plików PDF Nie Tak — wbudowane
Formaty
Formaty 1D Code 128, Code 39, EAN-8/13, UPC-A/E, Codabar i inne Wszystkie formaty Syncfusion Plus PDF417, Aztec, MaxiCode, GS1, USPS IMb i ponad 50 innych
Formaty 2D Kod QR, DataMatrix QR Code, DataMatrix, PDF417, Micro PDF417, Aztec, MaxiCode

Architektura generacji

Podstawową różnicą architektoniczną między Syncfusion BarCode a IronBarcode jest rozróżnienie między kontrolką renderującą interfejs użytkownika a biblioteką do programowego generowania plików.

Podejście firmy Syncfusion

SfBarcode to kontrolka WinForms. Jego rolą jest renderowanie BARCODE jako części układu wizualnego formularza. Aby wygenerować z niej plik, programista musi wstępnie przydzielić Bitmap odpowiadające zamierzonemu rozmiarowi wyjścia, wywołać DrawToBitmap, a następnie wywołać Bitmap.Save. Każdy krok wymaga środowiska uruchomieniowego Windows Forms.

SfBarcodeGenerator dla Blazor to komponent Razor, który renderuje się w przeglądarce przez warstwę JavaScript Syncfusion Blazor. Brak API po stronie serwera dla SfBarcodeGenerator. Wygenerowanie kodu kreskowego do pobrania z aplikacji Blazor wymaga współpracy z JavaScriptem i wyzwałączy pobierania w przeglądarce, a nie wywołania API serwera.

Dla aplikacji MAUI, SfBarcodeGenerator renderuje kody kreskowe w ramach systemu układu MAUI. Generowanie BarCODE jako pliku do przesłania lub wydruku wymaga dodatkowych czynności, których sam kontrolka nie zapewnia.

Podejście IronBarcode

IronBarcode wykorzystuje statyczny, łańcuchowy interfejs API, który bezpośrednio generuje pliki wyjściowe. Ten sam wzorzec wywołania działa w każdym modelu aplikacji .NET bez modyfikacji:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("barcode.png");
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("barcode.png");
Imports IronBarCode

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

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

Dokumentacja dotycząca generowania BarCodes 1D obejmuje wszystkie obsługiwane symbole i opcje wyjściowe. Brak instancjacji kontrolki, brak wstępnie przydzielonej Bitmap i brak zależności od środowiska runtime Windows Forms.

Odczytywanie BarCode

Podejście firmy Syncfusion

SfBarcode i SfBarcodeGenerator z natury nie mają zdolności do odczytu. Ekosystem Syncfusion wypełnia tę lukę dzięki Barcode Reader OPX, oddzielnemu produktowi komercyjnemu z własną licencją i ścieżką zakupu.

Czytnik kodów kreskowych OPX wykorzystuje wewnętrznie bibliotekę ZXing.Net. ZXing.Net to biblioteka open source do odczytu BarCodes, opublikowana na licencji Apache 2.0. Apache 2.0 to liberalna licencja, która zezwala na nieograniczone wykorzystanie komercyjne. Każdy programista może zainstalować ZXing.Net bezpośrednio:

dotnet add package ZXing.Net
dotnet add package ZXing.Net
SHELL

Czytnik Kodu Kreskowego OPX jest licencjonowany oddzielnie od elementów sterujących kod kreskowy Syncfusion. Kompletny workflow kodu kreskowego Syncfusion obejmujący generację i odczyt wymaga zatem dwóch produktów Syncfusion, dwóch umów licencyjnych oraz dwóch odrębnych powierzchni API — z produktem do odczytu opartym na swobodnie dostępnym open-source'owym dekoderze.

Podejście IronBarcode

Odczyt BarCode jest zawarty w tym samym pakiecie NuGet, co generowanie. Nie są wymagane żadne dodatkowe produkty ani licencje:

using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
using IronBarCode;

var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
}
Imports IronBarCode

Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

Dokumentacja dotycząca odczytu kodów kreskowych obejmuje wykrywanie wielu kodów kreskowych, ocenę pewności, odczyt z tablic bajtów oraz dostosowanie szybkości do dokładności. Odczytywanie dokumentów PDF jest również natywne i nie wymaga oddzielnej biblioteki PDF.

Architektura licencji

Podejście firmy Syncfusion

Licencja społecznościowa Syncfusion zapewnia bezpłatny dostęp, ale nakłada cztery warunki kwalifikacyjne, które muszą być spełnione jednocześnie: roczny przychód brutto poniżej 1 000 000 USD, pięciu lub mniej programistów, dziesięciu lub mniej pracowników oraz całkowity kapitał zewnętrzny poniżej 3 000 000 USD. Wszystkie cztery warunki muszą być spełnione w sposób ciągły. Organizacje rządowe finansowane z podatków są niekwalifikowane. Przekroczenie jakiegokolwiek warunku powoduje natychmiastowy obowiązek licencyjny komercyjny, a przejście z Licencji Community na licencję komercyjną oznacza przejście z $0 na roczną subskrypcję Essential Studio na jednego programistę, której wysokość jest podawana przez sprzedaż Syncfusion na żądanie.

Oprócz spełnienia warunków kwalifikacyjnych klucze licencyjne Syncfusion są przypisane do konkretnych wersji. Klucz wydany dla Essential Studio 24.x nie jest weryfikowany po aktualizacji do wersji 25.x. Każda większa aktualizacja wersji NuGet wymaga uzyskania nowego klucza z portalu konta, aktualizacji sekretów środowiska oraz ponownego wdrożenia, aby zapobiec pojawianiu się znaków wodnych wersji próbnej w wynikach produkcyjnych.

Rejestracja platformy wymaga wykonania dodatkowych kroków. Aplikacja Blazor wymaga trzech oddzielnych wpisów konfiguracyjnych:

// Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

// Step 2: Service registration in Program.cs
builder.Services.AddSyncfusionBlazor();

// Step 3: Namespace imports in _Imports.razor
// @using Syncfusion.Blazor
// @using Syncfusion.Blazor.BarcodeGenerator
// Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

// Step 2: Service registration in Program.cs
builder.Services.AddSyncfusionBlazor();

// Step 3: Namespace imports in _Imports.razor
// @using Syncfusion.Blazor
// @using Syncfusion.Blazor.BarcodeGenerator
' Step 1: License registration
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

' Step 2: Service registration in Program.vb
builder.Services.AddSyncfusionBlazor()

' Step 3: Namespace imports in _Imports.razor
' @Imports Syncfusion.Blazor
' @Imports Syncfusion.Blazor.BarcodeGenerator
$vbLabelText   $csharpLabel

Aplikacje MAUI wymagają czwartego kroku: builder.ConfigureSyncfusionCore().

Podejście IronBarcode

Aktywacja licencji IronBarcode jest jednorazowa i identyczna na wszystkich platformach oraz w modelach aplikacji:

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

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

Strona licencyjna IronBarcode opisuje model licencji wieczystej. Przewodnik po konfiguracji klucza licencyjnego obejmuje wzorce zmiennych środowiskowych dla wdrożeń CI/CD i Docker. Klucz nie zmienia się między wydaniami pomniejszymi i poprawkami w ramach głównej wersji, a rejestracja usługi specyficznej dla platformy nie jest wymagana.

Wynik w formacie PDF

Podejście firmy Syncfusion

Kontrolki kodów kreskowych Syncfusion nie umożliwiają generowania plików PDF. Osadzanie kodu kreskowego w dokumencie PDF przy użyciu narzędzi Syncfusion wymaga połączenia pakietu kontrolki kodu kreskowego z Syncfusion.Pdf, wygenerowania kodu kreskowego jako Bitmap przez DrawToBitmap, a następnie wstawienia tego bitmapy jako elementu obrazu w modelu obiektu dokumentu PDF. Ten proces obejmuje dwa oddzielne produkty Syncfusion, dwa pakiety NuGet oraz wieloetapowy proces renderowania.

Odczytywanie kodów kreskowych z istniejących dokumentów PDF nie jest obsługiwane ani przez kontrolkę kodów kreskowych, ani przez Barcode Reader OPX.

Podejście IronBarcode

PDF jest formatem wyjściowym pierwszej klasy w IronBarcode. Nie jest wymagana żadna biblioteka dodatkowa:

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("barcode.pdf");
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("barcode.pdf");
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPdf("barcode.pdf")
$vbLabelText   $csharpLabel

Biblioteka odczytuje również BarCodes bezpośrednio z dokumentów PDF:

var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Przewodnik po generowaniu plików PDF z BarCode obejmuje wielostronicowe wydruki oraz osadzanie BarCode obok innych treści w pliku PDF.

Przewodnik po mapowaniu API

Syncfusion BarCode Odpowiednik IronBarcode
SyncfusionLicenseProvider.RegisterLicense("KEY") IronBarCode.License.LicenseKey = "key"
builder.Services.AddSyncfusionBlazor() Nie jest wymagane
builder.ConfigureSyncfusionCore() Nie jest wymagane
new SfBarcode() BarcodeWriter.CreateBarcode() (statyczne)
barcode.Text = "value" Pierwszy parametr CreateBarcode()
barcode.Symbology = BarcodeSymbolType.Code128A BarcodeEncoding.Code128
barcode.Symbology = BarcodeSymbolType.QRBarcode QRCodeWriter.CreateQrCode()
barcode.BarHeight = 100 .ResizeTo(width, 100)
barcode.ShowText = true Tekst zrozumiały dla człowieka renderowany domyślnie; przełączany przez opcje pisarza
barcode.DrawToBitmap(bitmap, rect) .SaveAsPng(path)
Ręczne BitmapMemoryStream .ToPngBinaryData()
<SfBarcodeGenerator Type="BarcodeType.Code128" Value="..."> BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) po stronie serwera
<SfQRCodeGenerator Value="..."> QRCodeWriter.CreateQrCode(value, size) po stronie serwera
BarcodeType.Code128 (enum Blazor) BarcodeEncoding.Code128
BarCode Reader OPX (oparty na ZXing.Net) BarcodeReader.Read(path) — natywny, brak wrapppera
Brak odczytu API w kontrolkach BarCode BarcodeReader.Read(path)
Brak pliku PDF BarcodeWriter.CreateBarcode(...).SaveAsPdf(path)

Kiedy zespoły rozważają przejście z Syncfusion BarCode na IronBarcode

Wymagania dotyczące odczytu BarCode

Zespół pracujący wyłącznie w WinForms lub Blazor może zacząć od SfBarcode lub SfBarcodeGenerator w celach wyświetlania, a później otrzymać wymaganie dotyczące skanowania przychodzących kodów kreskowych z załadowanych obrazów, załączników e-mailowych lub zdjęć z kamer. W tym momencie interfejs kontrolny Syncfusion nie oferuje żadnego rozwiązania. Dokumentacja Syncfusion kieruje zespoły do Barcode Reader OPX, który jest oddzielnym produktem komercyjnym wykorzystującym ZXing.Net — bibliotekę dostępną bezpłatnie na licencji Apache 2.0. Zespoły, które dotarły do tego punktu, często zastanawiają się, czy dodać drugi produkt komercyjny, czy zintegrować generację i odczyt w jednej bibliotece.

Generowanie po stronie serwera i backend

Aplikacje, które początkowo są narzędziami desktopowymi typu WinForms lub WPF, czasami ewoluują i obejmują warstwę API sieci Web, usługę przetwarzania w tle lub funkcję w chmurze, która wymaga generowania plików BARCODE. SfBarcode zawiera zależność od środowiska runtime Windows Forms, która nie przekłada się bezpośrednio na usługi ASP.NET Core, funkcje Azure, ani kontenery Docker Linux. Wzorzec DrawToBitmap wymaga powierzchni renderującej WinForms, która może nie istnieć w środowisku bezgłowym. Zespoły, które osiągają ten punkt, zazwyczaj potrzebują biblioteki, której model generowania jest od samego początku oddzielony od stosu renderowania interfejsu użytkownika.

Zmiany w zakresie kwalifikowalności do licencji społecznościowej

Licencja społecznościowa Syncfusion jest atrakcyjna dla zespołów na wczesnym etapie rozwoju, właśnie wtedy, gdy rozwijają się one najszybciej. Cztery równoczesne warunki kwalifikacyjne — przychody, liczba pracowników i pozyskany kapitał — tworzą barierę licencyjną, która może pojawić się nagle. Runda finansowania serii A zazwyczaj pozwala startupowi przekroczyć próg kapitałowy 3 000 000 USD w dniu zamknięcia rundy, co powoduje obowiązek uzyskania licencji komercyjnej niezależnie od liczby deweloperow lub przychodów. Zespoły, które zbudowały procesy produkcyjne w oparciu o licencję Community, muszą uwzględnić koszty i czas trwania tego przejścia, zwłaszcza gdy licencja komercyjna obejmuje pełną Suite Essential Studio, a nie tylko komponent BarCode.

Zmniejszenie obciążenia związanego z konfiguracją specyficzną dla danej wersji

Zespoły operacyjne zajmujące się utrzymaniem aplikacji Syncfusion w potokach CI/CD napotykają na rotację kluczy licencyjnych jako powtarzające się zadanie związane z aktualizacjami wersji NuGet. Klucz ważny dla Essential Studio 24.x przestaje działać po aktualizacji do wersji 25.x, co oznacza konieczność aktualizacji tajnych danych w każdym środowisku wdrożeniowym oraz sprawdzenia, czy w wynikach produkcyjnych nie pojawiły się znaki wodne wersji próbnej. Zespoły, które często wydają nowe wersje lub mają wiele miejsc wdrożenia, uważają, że ten dodatkowy wysiłek jest nieproporcjonalny do korzyści, zwłaszcza gdy głównym celem jest wygenerowanie obrazu BARCODE, a nie korzystanie z pełnej Suite komponentów interfejsu użytkownika.

Typowe kwestie związane z migracją

Usunięcie rejestracji SyncfusionLicenseProvider

Wywołanie licencji Syncfusion — SyncfusionLicenseProvider.RegisterLicense("KEY") — zazwyczaj pojawia się w Program.cs, App.xaml.cs, lub w metodzie uruchamiania aplikacji. Musi być usunięte i zastąpione IronBarCode.License.LicenseKey = "KEY" w tym samym punkcie w sekwencji uruchamiania. Powiązane wywołania rejestracji usług (AddSyncfusionBlazor, ConfigureSyncfusionCore) i importy przestrzeni nazw w _Imports.razor muszą również zostać usunięte, jeśli nie pozostają inne komponenty Syncfusion w projekcie.

Wzorzec SfBarcode do BarcodeWriter

Przepływ pracy SfBarcode obejmuje instancję kontrolki, przypisanie właściwości, specyfikację wymiarów i renderowanie DrawToBitmap. Odpowiednik IronBarcode to pojedyncze połączone wywołanie: BarcodeWriter.CreateBarcode(value, encoding).ResizeTo(w, h).SaveAsPng(path). Wartości enum BarcodeSymbolType bezpośrednio pasują do wartości BarcodeEncodingCode128A pasuje do Code128, QRBarcode pasuje do QRCodeWriter.CreateQrCode.

Wzorzec komponentu Blazor do punktu końcowego API

SfBarcodeGenerator to komponent Razor; Zastąpienie go terminem IronBarcode jest zmianą strukturalną, a nie zamianą znak po znaku. Wzorzec IronBarcode dla Blazor jest minimalnym punktem końcowym API, który zwraca obraz kodu kreskowego jako bajty, odwoływany z komponentu Razor za pomocą standardowego znacznika <img src="...">. Takie podejście pozwala uzyskać punkt końcowy po stronie serwera, który można testować niezależnie i ponownie wykorzystywać w różnych klientach, zamiast komponentu renderowanego przez przeglądarkę, powiązanego z warstwą JavaScript Syncfusion Blazor.

Dodatkowe możliwości IronBarcode

Następujące funkcje IronBarcode nie zostały omówione w powyższych sekcjach i mogą być istotne w zależności od wymagań projektu:

  • Kod QR z osadzonym logiem firmy: .AddBrandLogo("logo.png") osadza logo firmy w centrum kodu QR przy jednoczesnym zachowaniu niezawodności skanowania dzięki korekcji błędów.
  • Wyjście SVG: BarCodes można eksportować jako pliki wektorowe SVG, które nadają się do druku i wyświetlania na ekranach o wysokiej rozdzielczości.
  • Wynik w formacie HTML: BarCodes można eksportować jako samodzielne pliki HTML.
  • Wykrywanie wielu kodów kreskowych: BarcodeReader.Read wykrywa i zwraca wszystkie kody kreskowe obecne w jednym obrazie.
  • Ocena pewności dla odczytów: Każdy wynik odczytu zawiera ocenę pewności, która pomaga odfiltrować wykrycia o niskiej jakości.
  • Adnotacje i stylizacja: Generowane BARCODES umożliwiają dostosowanie marginesów, kolorów, czcionek i adnotacji bez konieczności edycji obrazu w zewnętrznym programie.
  • Formaty GS1 i USPS IMb:IronBarcode obsługuje specjalistyczne formaty, których nie ma w kontrolce Syncfusion, w tym GS1-128, USPS Intelligent Mail BarCode, MaxiCode i Aztec.

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

IronBarcode jest kompatybilny z .NET Standard 2.0 i nowszymi, oferując zgodność z .NET Framework 4.6.2 i nowszymi, .NET Core 3.1 oraz wszystkimi aktualnymi wydaniami .NET, w tym .NET 8 i .NET 9. Biblioteka otrzymuje regularne aktualizacje zgodne z harmonogramem wydań .NET firmy Microsoft. PonieważIronBarcode to statyczna biblioteka programistyczna, a nie kontrolka interfejsu użytkownika, nie jest ona dotknięta różnicami ewolucyjnymi platform pomiędzy WinForms, WPF, Blazor i MAUI — ten sam pakiet NuGet i to samo API działają we wszystkich aktualnych i przyszłych modelach aplikacji .NET bez przerw platformowych.

Wnioski

Syncfusion BarCode i IronBarcode różnią się na poziomie architektury, który wykracza poza liczbę funkcji. Syncfusion barcode to kontrolka renderująca interfejs użytkownika zintegrowana z dużą Suite komponentów; jej celem projektowym jest wyświetlanie kodu kreskowego w układzie formularza i dobrze spełnia ten cel.IronBarcode to biblioteka programowa do generowania i odczytu plików, której celem projektowym jest przetwarzanie kodów kreskowych jako danych — generowanie plików, odczytywanie obrazów i działanie w dowolnym środowisku wdrożeniowym. Są to różne narzędzia zaprojektowane do różnych głównych zastosowań, a wybór między nimi zależy w dużej mierze od tego, które z nich ma zastosowanie w danym projekcie.

Syncfusion BarCode to odpowiedni wybór, gdy zespół korzysta już z Syncfusion Essential Studio do innych komponentów interfejsu użytkownika — siatek, wykresów, harmonogramów — a wymaganiem dotyczącym kodów kreskowych jest wyświetlenie kodu kreskowego w formularzu lub na stronie Blazor. W tym kontekście kontrolka BarCode jest już zawarta w istniejącej licencji, a dodanie jej do formularza polega po prostu na upuszczeniu kontrolki w projektancie. Dla zespołów spełniających te konkretne warunki zakup IronBarcode nie wnosi żadnej wartości dodanej, której nie zapewnia już istniejąca licencja.

IronBarcode to właściwy wybór, gdy wymagania wykraczają poza wyświetlanie formularzy: odczyt kodów kreskowych z przesłanych obrazów, generowanie plików kodów kreskowych w usłudze backendowej, odczyt kodów kreskowych z dokumentów PDF, wdrażanie w kontenerze Docker na systemie Linux lub tworzenie punktu końcowego API sieci Web, który zwraca obrazy kodów kreskowych. Jest to również odpowiedni wybór dla zespołów, których sytuacja licencyjna nie spełnia na stałe wszystkich czterech warunków licencji Syncfusion Community License, lub dla zespołów, które chcą uniknąć rotacji kluczy związanych z konkretną wersją w ramach procesu aktualizacji NuGet. Licencja wieczysta IronBarcode oraz ujednolicony pakiet do generowania i odczytu bezpośrednio rozwiązują te problemy operacyjne.

Główne ograniczenie ekosystemu kodu kreskowego Syncfusion polega na tym, że generacja i odczyt są oddzielone na dwa produkty, przy czym produkt do odczytu zbudowany jest na open-source'owym dekoderze ZXing.Net. Dla zespołów potrzebujących obu funkcji taka aranżacja wytwarza dwie sfery licencyjne, dwie powierzchnie API i dodatkową warstwę między aplikacją a biblioteką ZXing.Net. Model pojedynczego pakietu IronBarcode eliminuje tę pośredniość. Właściwym wyborem jest ta architektura, która odpowiada rzeczywistym wymaganiom: jeśli wyświetlanie kodów kreskowych w istniejącym interfejsie użytkownika Syncfusion stanowi pełny zakres, to Syncfusion jest naturalnym wyborem; Jeśli przetwarzanie kodów kreskowych jest kwestią dotyczącą zaplecza, bardziej odpowiednią podstawą jest IronBarcode.

Często Zadawane Pytania

Czym jest Syncfusion BarCode?

Syncfusion BarCode to biblioteka kodów kreskowych .NET służąca do generowania i odczytywania kodów kreskowych w aplikacjach C#. Jest to jedna z kilku alternatyw rozważanych przez programistów przy wyborze rozwiązania do obsługi kodów kreskowych w projektach .NET.

Jakie są główne różnice między Syncfusion BarCode a IronBarcode?

IronBarcode wykorzystuje statyczne, bezstanowe API, które nie wymaga zarządzania instancjami, podczas gdy Syncfusion BarCode zazwyczaj wymaga utworzenia i konfiguracji instancji przed użyciem. IronBarcode zapewnia również natywną obsługę plików PDF, automatyczne wykrywanie formatów oraz licencjonowanie za pomocą jednego klucza we wszystkich środowiskach.

Czy licencja na IronBarcode jest łatwiejsza do uzyskania niż licencja na Syncfusion BarCode?

IronBarcode wykorzystuje pojedynczy klucz licencyjny obejmujący zarówno wdrożenia deweloperskie, jak i produkcyjne. Upraszcza to procesy CI/CD oraz konfiguracje Docker w porównaniu z systemami licencyjnymi, które oddzielają klucze SDK od kluczy środowiska uruchomieniowego.

Czy IronBarcode obsługuje wszystkie formaty kodów kreskowych obsługiwane przez Syncfusion BarCode?

IronBarcode obsługuje ponad 30 symboli kodów kreskowych, w tym QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 i wiele innych. Automatyczne wykrywanie formatu oznacza, że nie jest wymagane jawne wyliczanie formatów.

Czy IronBarcode obsługuje natywne odczytywanie kodów kreskowych z plików PDF?

Tak. IronBarcode odczytuje kody kreskowe bezpośrednio z plików PDF za pomocą BarcodeReader.Read("document.pdf") bez konieczności korzystania z oddzielnej biblioteki do renderowania plików PDF. Wyniki dla każdej strony obejmują numer strony, format kodu kreskowego, wartość oraz wskaźnik pewności.

Jak IronBarcode radzi sobie z przetwarzaniem wsadowym w porównaniu do Syncfusion Barcode?

Metody statyczne IronBarcode są bezstanowe i z natury bezpieczne dla wątków, co umożliwia bezpośrednie użycie Parallel.ForEach bez zarządzania instancjami dla poszczególnych wątków. Nie ma ograniczeń przepustowości w żadnym przedziale cenowym.

Jakie wersje .NET obsługuje IronBarcode?

IronBarcode obsługuje .NET Framework 4.6.2+, .NET Core 3.1 oraz .NET 5, 6, 7, 8 i 9 w jednym pakiecie NuGet. Obsługiwane platformy to Windows x64/x86, Linux x64 oraz macOS x64/ARM.

Jak zainstalować IronBarcode w projekcie .NET?

Zainstaluj IronBarcode za pomocą NuGet: uruchom polecenie „Install-Package IronBarCode” w konsoli menedżera pakietów lub „dotnet add package IronBarCode” w interfejsie CLI. Nie są wymagane żadne dodatkowe instalatory SDK ani pliki uruchomieniowe.

Czy mogę ocenić IronBarcode przed zakupem, w przeciwieństwie do Syncfusion?

Tak. Tryb próbny IronBarcode zwraca pełne, zdekodowane wartości BarCode — tylko wygenerowane obrazy wyjściowe są opatrzone znakiem wodnym. Przed podjęciem decyzji o zakupie można sprawdzić dokładność odczytu na własnych dokumentach.

Jaka jest różnica cenowa między Syncfusion Barcode a IronBarcode?

Cena IronBarcode zaczyna się od 749 USD za Licencję wieczystą dla jednego programisty, obejmującą etapy rozwoju i produkcji. Szczegóły dotyczące cen i opcji zakupu hurtowego są dostępne na stronie licencyjnej IronBarcode. Nie ma wymogu posiadania oddzielnej licencji na środowisko uruchomieniowe.

Czy łatwo jest przejść z Syncfusion Barcode na IronBarcode?

Migracja z Syncfusion Barcode do IronBarcode polega głównie na zastąpieniu wywołań API na instancje metodami statycznymi IronBarcode, usunięciu boilerplate licencyjnego i aktualizacji nazw właściwości wyników. Większość migracji polega na redukcji kodu, a nie na jego dodawaniu.

Czy IronBarcode generuje kody QR z logo?

Tak. Funkcja QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") osadza obraz marki w kodzie QR w sposób natywny z konfigurowalną korekcją błędów. Kolorowe kody QR są również obsługiwane za pomocą funkcji ChangeBarCodeColor().

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

Czytaj więcej

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie