Syncfusion Barcode vs IronBarcode: Porównanie bibliotek kodów kreskowych C#
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 do czytania korzysta wewnętrznie z ZXing.Net — biblioteki udostępnionej na licencji Apache 2.0, którą każdy programista może zainstalować bezpośrednio za darmo. Zespoły, które potrzebują zarówno generowania, jak i odczytu, płacą abonament za korzystanie z bezpłatnej biblioteki za pośrednictwem płatnego opakowania, a to rozwiązanie kształtuje każdą kolejną decyzję dotyczącą architektury i kosztów w historii BarCode'a Syncfusion.
Zrozumienie Syncfusion BarCode
Syncfusion BARCODE nie jest samodzielną biblioteką; Jest to komponent w ramach Suite Syncfusion Essential Studio. Strona generująca jest dostarczana jako kontrolka interfejsu użytkownika: 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 są kategorycznie wykluczone, niezależnie od wielkości. Warunki są samocertyfikowane i muszą być spełniane w sposób ciągły — przekroczenie dowolnego progu powoduje obowiązek uzyskania licencji komercyjnej.
Dodatkowe cechy ekosystemu BarCode Syncfusion obejmują:
- Architektura sterowania wyłącznie generacyjna:
SfBarcodeiSfBarcodeGeneratornie posiadają API odczytu. W interfejsie użytkownika nie ma nigdzie metod.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 ścieżki generacji bezinterfejsowej dla Blazor:
SfBarcodeGeneratorto 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.
- Licencja wyłącznie w ramach Suite: BarCode Syncfusion jest dołączony do Suite Essential Studio. Nie ma możliwości zakupu samodzielnego pakietu do obsługi BarCode.
- Czytnik OPX wykorzystuje oprogramowanie open source: BarCode Reader OPX korzysta wewnętrznie z biblioteki ZXing.Net (Apache 2.0). ZXing.Net jest dostępny bezpośrednio przez NuGet bez żadnych kosztów.
Architektura sterowania wyłącznie generacyjnego
SfBarcode to kontrolka WinForms z interfejsem 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 BarCode 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
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, jest komponentem 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 została zaprojektowana w oparciu o model statycznego API: wywołujący wywołują metody statyczne (BarcodeWriter.CreateBarcode, BarcodeReader.Read, QRCodeWriter.CreateQrCode) i łańcuchują 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 instancjonowania kontrolki, brak zależności od środowiska uruchomieniowego interfejsu użytkownika, 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średni zapis plików: BarCodes można zapisywać bezpośrednio w formatach PNG, JPEG, SVG, HTML, PDF i innych bez pośredniego przypisywania
Bitmap. - Wbudowana obsługa plików PDF:
SaveAsPdf()jest metodą wyjściową najwyższej klasy; Biblioteka może również natywnie odczytywać BarCodes z dokumentów PDF. - Automatyczne wykrywanie formatu podczas odczytu:
BarcodeReader.Readautomatycznie identyfikuje format BARCODE bez konieczności określania typu przez wywołującego. - 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 — SaveAsPdf() wbudowane |
| Odczytywanie BarCodes z plików PDF | Nie | Tak — native |
| Generowanie bezinterfejsowe / po stronie serwera | Niewłaściwe — kontrolka interfejsu użytkownika wymaga środowiska uruchomieniowego 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 przez przeglądarkę) |
Tak (API po stronie serwera) |
| Generowanie MAUI | Tak (SfBarcodeGenerator) |
Tak |
| Konsola / Funkcje Azure | Wymaga środowiska uruchomieniowego WinForms | Język ojczysty |
| Docker / Linux | Ograniczone | Pełne wsparcie |
| Bezpośredni zapis pliku | Via DrawToBitmap + Bitmap.Save |
.SaveAsPng(), .SaveAsPdf(), .SaveAsSvg() itp. |
| 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) | Perpetual |
| Cena rynkowa na poziomie podstawowym | ~995 USD/programista/rok (Standard) | 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 | QR Code, 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 utworzyć plik na jego podstawie, programista musi wstępnie przydzielić Bitmap odpowiadający zamierzonemu rozmiarowi wyjściowemu, 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 za pośrednictwem warstwy JavaScript Syncfusion Blazor. W SfBarcodeGenerator nie ma API po stronie serwera. 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.
W przypadku aplikacji MAUI SfBarcodeGenerator renderuje BARCODES w systemie 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-KEY";
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 150)
.SaveAsPng("barcode.png");
// NuGet: dotnet add package IronBarcode
using IronBarCode;
IronBarCode.License.LicenseKey = "YOUR-KEY";
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 150)
.SaveAsPng("barcode.png");
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-KEY"
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.ResizeTo(400, 150) _
.SaveAsPng("barcode.png")
Dokumentacja dotycząca generowania BarCodes 1D obejmuje wszystkie obsługiwane symbole i opcje wyjściowe. Brak instancjonowania kontroli, brak wstępnie przydzielonego Bitmap oraz brak zależności od środowiska uruchomieniowego Windows Forms.
Odczytywanie BarCode
Podejście firmy Syncfusion
SfBarcode i SfBarcodeGenerator z założenia nie mają możliwości odczytu. Ekosystem Syncfusion wypełnia tę lukę dzięki Barcode Reader OPX, oddzielnemu produktówi 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
Zakup czytnika kodów kreskowych OPX oznacza opłacenie subskrypcji Syncfusion za nakładkę na bibliotekę, która jest dostępna bezpłatnie. Kompletny proces obsługi kodów kreskowych Syncfusion, obejmujący zarówno generowanie, jak i odczyt, wymaga dwóch oddzielnych produktów Syncfusion, dwóch umów licencyjnych i dwóch odrębnych interfejsów API.
Podejście IronBarcode
Odczyt BarCode jest zawarty w tym samym pakiecie NuGet, co generowanie. Nie są wymagańe ż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
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 nie kwalifikują się do udziału w programie. Spełnienie któregokolwiek z warunków powoduje natychmiastowe zobowiązanie do uzyskania licencji komercyjnej, a przejście z licencji społecznościowej na licencję komercyjną wiąże się ze wzrostem kosztów z 0 USD do około 995 USD rocznie na programistę w ramach poziomu Standard.
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
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-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-KEY"
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 wymagańa.
Wynik w formacie PDF
Podejście firmy Syncfusion
Kontrolki kodów kreskowych Syncfusion nie umożliwiają generowania plików PDF. Osadzenie kodu kreskowego w dokumencie PDF przy użyciu narzędzi Syncfusion wymaga połączenia pakietu kontrolnego kodu kreskowego z Syncfusion.Pdf, wygenerowania kodu kreskowego jako Bitmap poprzez DrawToBitmap, a następnie wstawienia tej mapy bitowej jako elementu obrazu w modelu obiektowym 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 wymagańa ż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")
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
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 wymagańe |
builder.ConfigureSyncfusionCore() |
Nie jest wymagańe |
new SfBarcode() |
BarcodeWriter.CreateBarcode() (static) |
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 |
.AddBarcodeText() |
barcode.DrawToBitmap(bitmap, rect) |
.SaveAsPng(path) |
Podręcznik Bitmap → MemoryStream |
.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 (Blazor enum) |
BarcodeEncoding.Code128 |
| BarCode Reader OPX (oparty na ZXing.Net) | BarcodeReader.Read(path) — native, bez opakowania |
| 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 środowisku WinForms lub Blazor może rozpocząć pracę od SfBarcode lub SfBarcodeGenerator w celach prezentacyjnych, a później otrzymać wymaganie skanowania przychodzących BarCodes z przesłanych obrazów, załączników e-mailowych lub zdjęć zrobionych aparatem. 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 to odkrywają, często ponownie oceniają, czy utrzymywanie płatnej nakładki na darmowe oprogramowanie jest właściwą decyzją architektoniczną, zwłaszcza gdy ujednolicona biblioteka do generowania i odczytu całkowicie wyeliminowałaby pośrednictwo.
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 uruchomieniowego Windows Forms, która nie przekłada się bezpośrednio na usługi ASP.NET Core, Azure Functions ani kontenery Docker w systemie Linux. Wzorzec DrawToBitmap wymaga powierzchni renderowania WinForms, która może nie istnieć w środowisku bezinterfejsowym. 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. Należy go usunąć i zastąpić IronBarCode.License.LicenseKey = "KEY" w tym samym miejscu sekwencji startowej. Powiązane wywołania rejestracji usług (AddSyncfusionBlazor, ConfigureSyncfusionCore) oraz importy przestrzeni nazw w _Imports.razor również należy usunąć, jeśli w projekcie nie pozostały żadne inne komponenty Syncfusion.
Wzorzec SfBarcode do BarcodeWriter
Przepływ pracy SfBarcode obejmuje instancjonowanie kontrolki, przypisywanie właściwości, określanie wymiarów oraz DrawToBitmap renderowanie. Odpowiednikiem IronBarcode jest pojedyncze wywołanie łańcuchowe: BarcodeWriter.CreateBarcode(value, encoding).ResizeTo(w, h).SaveAsPng(path). Wartości wyliczeniowe BarcodeSymbolType odpowiadają bezpośrednio wartościom BarcodeEncoding — Code128A odpowiada Code128, QRBarcode odpowiada QRCodeWriter.CreateQrCode.
Wzorzec komponentu Blazor do punktu końcowego API
SfBarcodeGenerator jest komponentem Razor; Zastąpienie go terminem IronBarcode jest zmianą strukturalną, a nie zamianą znak po znaku. Wzorzec IronBarcode dla Blazor to minimalny punkt końcowy API, który zwraca obraz kodu kreskowego w postaci bajtów, odwołujący się do komponentu Razor za pomocą standardowego tagu <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 logo marki:
.AddBrandLogo("logo.png")osadza logo firmy w środku kodu QR, zachowując jednocześnie niezawodność 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.Readwykrywa i zwraca wszystkie kody kreskowe obecne na 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 przeznaczony dla .NET Standard 2.0 i nowszych wersji, zapewniając kompatybilność 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 IronBarcode jest regularnie aktualizowana zgodnie z harmonogramem wydawania .NET firmy Microsoft, co zapewnia kompatybilność z .NET 10 w miarę zbliżania się jego premiery pod koniec 2026 roku. Ponieważ IronBarcode jest statyczną biblioteką programistyczną, a nie kontrolką interfejsu użytkownika, nie ma na nią wpływu ewolucja platform WinForms, WPF, Blazor i MAUI — ten sam pakiet NuGet i ten sam interfejs API działają we wszystkich obecnych i przyszłych modelach aplikacji .NET bez konieczności stosowania nakładek specyficznych dla danej platformy.
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.
Cechą charakterystyczną ekosystemu BarCode firmy Syncfusion jest to, że generowanie i odczyt są rozdzielone na dwa produkty, a produkt do odczytu jest komercyjną nakładką na darmowe oprogramowanie. W przypadku zespołów, które potrzebują obu tych funkcji, takie rozwiązanie wiąże się z dwoma kosztami licencji, dwoma interfejsami API oraz zależnością od ZXing.Net, którą można było uzyskać bezpośrednio. 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().

