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

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

MESCIUSComponentOne C1BarCodevs IronBarcode

Kontrola kodów kreskowych MESCIUS ComponentOne (dawniej GrapeCity, przemianowana w 2023) generuje kody kreskowe w aplikacjach Windows Forms, WPF, WinUI, Blazor i ASP.NET Core MVC. Radzi sobie z tym dobrze — API jest przejrzyste, jakość wyników jest solidna, a integracja z projektantem WinForms przebiega naturalnie. Jednak zakres jego działania jest wąski. Nie potrafi odczytywać barcode'ów. Edycje WinForms i WPF działają na docelowym frameworku tylko dla Windows. I nie jest to samodzielny produkt — jest dostarczany jako część ComponentOne Studio Enterprise, subskrypcji 1 299 USD/deweloper/rok, która obejmuje ponad 100 kontrolek UI. Jeśli rozważasz opcje BARCODE dla projektu .NET i znalazłeś ComponentOne na liście porównawczej, ten artykuł wyjaśnia, co ten zakres oznacza w praktyce.

Zrozumienie C1BarCode

C1BarCode to wizualna kontrola. Przepływ pracy generowania tworzy instancję, ustawia właściwości i wywołuje GetImage(), aby pobrać System.Drawing.Image:

// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;

using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne C1BarCode
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

// License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.Code128;
barcode.Text = "ITEM-12345";
barcode.BarHeight = 100;
barcode.ModuleSize = 2;
barcode.ShowText = true;
barcode.CaptionPosition = CaptionPosition.Below;

using var image = barcode.GetImage();
image.Save("barcode.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging

' License must be set before first use
C1.C1License.Key = "YOUR-COMPONENTONE-KEY"

Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.Code128
barcode.Text = "ITEM-12345"
barcode.BarHeight = 100
barcode.ModuleSize = 2
barcode.ShowText = True
barcode.CaptionPosition = CaptionPosition.Below

Using image As Image = barcode.GetImage()
    image.Save("barcode.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

Interfejs API ustawiający właściwości jest znany programistom WinForms — odpowiada on bezpośrednio powierzchni projektanta. CodeType, BarHeight, ModuleSize, ShowText oraz CaptionPosition to wszystkie właściwości widoczne dla projektanta, które działają identycznie w kodzie.

C1BarCode obsługuje 38 symbologii obejmujących mainstreamowe formaty 1D i 2D: Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code, PDF417 i DataMatrix między innymi. Do generacji kodów kreskowych obejmuje typowe przypadki użycia.

Brak API do odczytu

Nie jest to luka, którą wypełnia opcja konfiguracyjna. Nie istnieje klasa C1BarCodeReader. Nie ma metody Decode() na C1BarCode. Kontrolka BarCode ComponentOne jest z założenia przeznaczona wyłącznie do generowania.

Jeśli Twoja aplikacja musi skanować kody kreskowe z przesłanych obrazów, weryfikować wydrukowane etykiety, przetwarzać dokumenty z osadzonymi kodami lub wyodrębniać dane z kodów QR w interfejsie API — nic z tego nie jest możliwe przy użyciu C1BarCode. Potrzebna byłaby osobna biblioteka do odczytu, co rodzi pytanie, dlaczego miałbyś płacić za komponent służący wyłącznie do generowania kodów kreskowych w ramach Suite dla przedsiębiorstw zawierającej ponad 100 elementów sterujących, skoro samodzielne biblioteki kodów kreskowych obsługują obie operacje.

Brak API odczytu nie jest niczym niezwykłym w przypadku kontrolek BarCode WinForms przeznaczonych do wydruku. Decydującym czynnikiem jest rozszerzenie wymagań — a wymagania dotyczące BarCode prawie zawsze się rozszerzają.

Ograniczenie dotyczące wyłącznie systemu Windows

Edycje C1BarCode WinForms i WPF wymagają konfiguracji docelowego frameworku specyficznej dla Windows:


<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>

<TargetFramework>net8.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
XML

net8.0-windows oraz UseWindowsForms nie są opcjonalnymi preferencjami. C1.Win.BarCode zależy od rodzajów System.Windows.FormsUserControl, PaintEventArgs, Graphics — które istnieją tylko na Windows. Usunięcie net8.0-windows powoduje błąd budowania. ComponentOne dostarcza edycje Blazor i ASP.NET Core MVC kontroli kodów kreskowych, które celują w TFM-y cross-platformowe, ale pakiety WinForms i WPF są związane z Windows.

W przeciwieństwie do tego,IronBarcode celuje w net8.0 (lub w jakikolwiek obsługiwany TFM) bez ograniczeń platformowych:


<TargetFramework>net8.0</TargetFramework>

<TargetFramework>net8.0</TargetFramework>
XML

Ma to znaczenie w kilku praktycznych scenariuszach:

  • Azure App Service na systemie Linux: domyślny plan dla nowych wdrożeń usługi App Service. net8.0-windows nie może na niego celować.
  • Kontenery Docker: standardem są kontenery Linux. Kontejner Windows jest większy, kosztuje więcej i nie jest dostępny w wielu warstwach chmury.
  • ASP.NET Core Web API: Punkt końcowy do generowania kodów kreskowych, który można wdrożyć wyłącznie w systemie Windows, stanowi ograniczenie wdrożeniowe, które zespół będzie musiał ostatecznie usunąć.
  • Azure Functions: Plan konsumpcyjny działa w systemie Linux. Funkcja generująca kody kreskowe z celem net8.0-windows nie może być wdrożona w planie konsumpcyjnym.
  • Rozwój w macOS: Deweloperzy na macOS nie mogą uruchomić projektu net8.0-windows lokalnie, nawet do testowania logiki generowania.

Ograniczenia platformy nie stanowią problemu, jeśli aplikacja jest narzędziem desktopowym typu WinForms, które będzie działać wyłącznie w systemie Windows. Problem pojawia się w momencie, gdy wymagania dotyczące wdrożenia obejmują środowisko Linux lub chmurę.

Suite oprogramowania

Kontrola C1BarCode jest sprzedawana jako część ComponentOne Studio Enterprise, które obejmuje pełną suite kontrolera ComponentOne dla WinForms, WPF, Blazor i ASP.NET. Cena za ComponentOne Studio Enterprise to 1 299 USD na dewelopera na rok (subskrypcja); Pojedyncze edycje platformowe (WinForms lub WPF) kosztują 799 USD na dewelopera na rok.

Suite ta zawiera ponad 100 komponentów: siatki, wykresy, harmonogramy, kontrolki wprowadzania danych, projektanty raportów, kontrolki map, wskaźniki i wiele innych. Jeśli budujesz aplikację z dużą ilością danych i potrzebujesz wielu z tych kontrolek, ceniony zestaw może mieć sens. Jeśli potrzebujesz generacji kodów kreskowych i dotarłeś do ComponentOne, ponieważ pojawił się w wyszukiwaniu, kupujesz enterprise UI suite głównie dla jednej kontroli.

Pakiet NuGet jest C1.Win.BarCode dla WinForms (z C1.WPF.BarCode, C1.WinUI.BarCode, i C1.Blazor.BarCode dla innych platform) i jest licencjonowany poprzez subskrypcję ComponentOne Studio. Dla deweloperów, którzy chcą funkcjonalności kodów kreskowych bez pełnego zestawu, brakuje oddzielnej licencji tylko na kody kreskowe.

Struktura cenowa IronBarcode jest inna: to samodzielna biblioteka kodów kreskowych z licencjonowaniem wieczystym zaczynającym się od 749 USD dla pojedynczego dewelopera (Lite), 1 499 USD dla trzech (Plus), 2 999 USD dla dziesięciu (Professional), i 5 999 USD dla nieograniczonej liczby deweloperów. Nie ma kontrolki siatki, biblioteki wykresów ani projektanta raportów — tylko funkcja BARCODE, której szukasz.

Dostosowywanie kodów QR

Obie biblioteki obsługują generowanie kodów QR z opcjami dostosowywania. Styl API znacznie się różni.

Podejście ComponentOne oparte na ustawnikach właściwości:

// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;

using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
// ComponentOne — QR code with error correction and color
using C1.Win.Barcode;
using C1.BarCode;
using System.Drawing;

C1.C1License.Key = "YOUR-COMPONENTONE-KEY";

var barcode = new C1BarCode();
barcode.CodeType = CodeType.QRCode;
barcode.Text = "https://example.com/product/4821";
barcode.QRCodeVersion = QRCodeVersion.Version5;
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High;
barcode.QRCodeModel = QRCodeModel.Model2;
barcode.ForeColor = Color.DarkBlue;
barcode.BackColor = Color.White;
barcode.ModuleSize = 4;

using var image = barcode.GetImage();
image.Save("product-qr.png", System.Drawing.Imaging.ImageFormat.Png);
Imports C1.Win.Barcode
Imports C1.BarCode
Imports System.Drawing
Imports System.Drawing.Imaging

C1.C1License.Key = "YOUR-COMPONENTONE-KEY"

Dim barcode As New C1BarCode()
barcode.CodeType = CodeType.QRCode
barcode.Text = "https://example.com/product/4821"
barcode.QRCodeVersion = QRCodeVersion.Version5
barcode.QRCodeErrorCorrectionLevel = QRCodeErrorCorrectionLevel.High
barcode.QRCodeModel = QRCodeModel.Model2
barcode.ForeColor = Color.DarkBlue
barcode.BackColor = Color.White
barcode.ModuleSize = 4

Using image As Image = barcode.GetImage()
    image.Save("product-qr.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

Łańcuch płynny IronBarcode:

//IronBarcode— QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;

QRCodeWriter.CreateQrCode(
        "https://example.com/product/4821",
        300,
        QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("product-qr.png");
//IronBarcode— QR code with error correction and color
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using System.Drawing;

QRCodeWriter.CreateQrCode(
        "https://example.com/product/4821",
        300,
        QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("product-qr.png");
Imports IronBarCode
Imports System.Drawing

QRCodeWriter.CreateQrCode( _
        "https://example.com/product/4821", _
        300, _
        QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .ChangeBarCodeColor(Color.DarkBlue) _
    .SaveAsPng("product-qr.png")
$vbLabelText   $csharpLabel

Podejście ComponentOne wymaga zainicjowania obiektu C1BarCode i ustawienia wielu właściwości przed wywołaniem GetImage(). QRCodeWriter w IronBarcode używa płynnego łańcucha — każda operacja zwraca obiekt kodu kreskowego, a na końcu wywołujesz .SaveAsPng(). Nie ma żadnego instancji do zarządzania.

IronBarcode obsługuje również osadzanie logo w kodach QR, czego nie robi C1BarCode:

// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("branded-qr.png");
// QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500)
    .AddBrandLogo("company-logo.png")
    .ChangeBarCodeColor(Color.DarkBlue)
    .SaveAsPng("branded-qr.png");
' QR code with embedded brand logo
QRCodeWriter.CreateQrCode("https://example.com/track/8821", 500) _
    .AddBrandLogo("company-logo.png") _
    .ChangeBarCodeColor(Color.DarkBlue) _
    .SaveAsPng("branded-qr.png")
$vbLabelText   $csharpLabel

Zrozumienie IronBarcode

Biblioteka IronBarcode to samodzielna biblioteka kodów kreskowych .NET, obsługująca zarówno generowanie, jak i odczyt. Instaluje się z NuGet (dotnet add package IronBarcode), celuje w jakikolwiek obsługiwany .NET TFM bez ograniczeń platformowych i działa na Windows, Linux, macOS, Docker, Azure oraz AWS Lambda.

Strona do czytania obsługuje natywnie dokumenty PDF:

// Read barcodes from a PDF — no image extraction needed
using IronBarCode;

var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
// Read barcodes from a PDF — no image extraction needed
using IronBarCode;

var results = BarcodeReader.Read("invoice.pdf");
foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}");
}
Imports IronBarCode

' Read barcodes from a PDF — no image extraction needed
Dim results = BarcodeReader.Read("invoice.pdf")
For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} — {barcode.Value}")
Next
$vbLabelText   $csharpLabel

Dla scenariuszy o wysokiej przepustowości, BarcodeReaderOptions kontroluje kompromis między szybkością i dokładnością a wykrywaniem wielu kodów kreskowych:

// Multi-barcode read with performance options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};

var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
// Multi-barcode read with performance options
using IronBarCode;

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.QRCode
};

var results = BarcodeReader.Read("warehouse-manifest.jpg", options);
Imports IronBarCode

' Multi-barcode read with performance options
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True,
    .ExpectBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.QRCode
}

Dim results = BarcodeReader.Read("warehouse-manifest.jpg", options)
$vbLabelText   $csharpLabel

Generation obsługuje standardowe formaty za pomocą spójnego statycznego API:

// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

// Generowanie kodów QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();
// Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128)
    .SaveAsPng("shipping-label.png");

// Generowanie kodów QR to byte array (for HTTP response)
byte[] qrBytes = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400)
    .ToPngBinaryData();
' Code 128 generation to file
BarcodeWriter.CreateBarcode("SHIP-20240312-7834", BarcodeEncoding.Code128) _
    .SaveAsPng("shipping-label.png")

' Generowanie kodów QR to byte array (for HTTP response)
Dim qrBytes As Byte() = QRCodeWriter.CreateQrCode("https://example.com/order/7734", 400) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Obsługiwane platformy: Windows, Linux, macOS, Docker, Azure (App Service i Functions), AWS Lambda. Obsługiwane wersje .NET: .NET Framework 4.6.2+, .NET Core 3.1+ i .NET 5/6/7/8.

Porównanie funkcji

Funkcja MESCIUSComponentOne C1BarCode IronBarcode
Generowanie BarCode'ów Tak Tak
Odczytywanie BarCode Nie Tak
Generowanie kodów QR Tak Tak
Osadzanie logo QR Nie Tak
Plik PDF do odczytu Nie dotyczy (brak tekstu do przeczytania) Tak (język ojczysty)
.NET platform target (edycje WinForms/WPF) net8.0-windows Każdy TFM (net8.0, itd.)
Wymagane UseWindowsForms (edycja WinForms) Tak Nie
Wdrożenie w systemie Linux / Docker Tylko edycje Blazor/ASP.NET MVC Tak
Wdrożenie na systemie macOS Tylko edycje Blazor/ASP.NET MVC Tak
Azure Functions (Linux) Tylko edycje Blazor/ASP.NET MVC Tak
ASP.NET Core po stronie serwera edycja ASP.NET Core MVC Tak
Samodzielny pakiet NuGet Paczki licencjonowane w ramach suite Tak
Ceny produktów samodzielnych Nie dotyczy Od 749 USD – licencja wieczysta (Lite)
Ceny Suite 1 299 USD/dev/yr Enterprise; 799 USD/dev/yr edycje jednoplatfromowe Nie dotyczy
API generowania płynnego Nie (ustawianie właściwości) Tak
BarcodeReader.Read() Nie Tak
BarcodeWriter.CreateBarcode() Nie Tak
QRCodeWriter.CreateQrCode() Nie Tak
Obsługiwane wersje .NET .NET 6+ (Windows for WinForms/WPF) .NET Framework 4.6.2+, .NET Core 3.1+, .NET 5–8
Opcja licencji wieczystej Nie (subskrypcja) Tak

Przewodnik po mapowaniu API

W przypadku zespołów przechodzących z C1BarCode na IronBarcode obowiązują następujące bezpośrednie odpowiedniki:

ComponentOne C1BarCode IronBarcode
C1.C1License.Key = "..." IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
new C1BarCode() Statyczne — nie wymaga instancji
barcode.CodeType = CodeType.Code128 BarcodeEncoding.Code128 (przekazany jako parametr)
barcode.Text = "data" Pierwszy argument BarcodeWriter.CreateBarcode()
barcode.BarHeight = 100 .ResizeTo(width, 100) na pisarzu kodów kreskowych
barcode.ModuleSize = 2 .ResizeTo() kontroluje rozmiar w pikselach
barcode.ForeColor = Color.DarkBlue .ChangeBarCodeColor(Color.DarkBlue)
barcode.BackColor = Color.White .ChangeBackgroundColor(Color.White)
barcode.GetImage() .SaveAsPng() / .ToPngBinaryData()
barcode.QRCodeErrorCorrectionLevel QRCodeWriter.QrErrorCorrectionLevel enum
barcode.QRCodeVersion Automatyczne (lub parametr wersji)
Brak API do odczytu BarcodeReader.Read(path)
net8.0-windows wymagany net8.0 (lub jakikolwiek TFM)
UseWindowsForms = true wymagany Nie jest wymagane

Kiedy zespoły się zmieniają

Pojawia się potrzeba czytania. Jest to najczęstszy czynnik wyzwalający. Zespół tworzy generowanie etykiet z kodami BarCode za pomocą C1BarCode, a następnie otrzymuje wymaganie weryfikacji skanów, przetwarzania dokumentów przychodzących przesyłek lub dekodowania kodów QR z przesłanych obrazów. C1BarCode nie może w tym pomóc. Do wyboru są: dodanie drugiej biblioteki BARCODE do odczytu lub zastąpienie C1BarCode biblioteką, która obsługuje obie funkcje.

Wdrożenie w systemie Linux lub Docker. Aplikacja desktopowa WinForms przeznaczona na komputery z systemem Windows nie podlega tym ograniczeniom. API .NET Core generująca obrazy kodów kreskowych to robi — zwłaszcza jeśli musi działać w kontenerze Linux lub być wdrożone w usłudze Azure App Service na systemie Linux. net8.0-windows cel framework od razu blokuje te opcje wdrażania.

Architektura mikrousługowa lub bezserwerowa. Azure Functions, AWS Lambda i mikrousługi w kontenerach są zorientowane na system Linux. Usługa generowania kodów kreskowych, której nie można wdrożyć w systemie Linux, nie jest realną mikrousługą.

Koszt subskrypcji Suite a zakres wymagań. Zespoły, które płacą za ComponentOne Studio Enterprise i już korzystają z jego tabel, wykresów i innych elementów sterujących, uzasadniły już tę subskrypcję. Zespoły, które wykupiły subskrypcję głównie lub wyłącznie w celu generowania BARCODE-ów, płacą za ponad 100 elementów sterujących, z których nie korzystają. Koszt subskrypcji na programistę rośnie wraz z wielkością zespołu.

Preferowana jest Licencja wieczysta. ComponentOne Studio jest dostępne wyłącznie w ramach subskrypcji. Nie ma opcji licencji wieczystej. Dla zespołów, które wolą posiadać oprogramowanie, które wysyłają — szczególnie ze względu na zgodność lub długoterminową utrzymanie — wieczyste licencje IronBarcode(zaczynające się od 749 USD Lite) są strukturalnie inne.

Wnioski

C1BarCode generuje BarCodes w sposób przejrzysty w środowisku WinForms. To właśnie robi naprawdę dobrze, a dla aplikacji desktopowej WinForms, która wymaga jedynie generowania etykiet w systemie Windows, jest to funkcjonalny wybór w ramach Suite ComponentOne.

Na tym kończy się zakres zlecenia. Brak możliwości odczytu, wdrożenie wyłącznie w systemie Windows, brak pakietu samodzielnego, licencjonowanie w formie subskrypcji. Gdy wymagania projektu wykraczają poza generowanie WinForms w systemie Windows — wymagania dotyczące odczytu, wdrożenie w systemie Linux, interfejs API sieci Web, kontener Docker, funkcja w chmurze — C1BarCode nie jest w stanie ich spełnić.IronBarcode obsługuje generowanie i odczyt kodów kreskowych, działa na każdej platformie obsługiwanej przez .NET i jest dostępny jako samodzielny pakiet bez konieczności subskrypcji Suite Enterprise zawierającej 100 elementów sterujących.

Często Zadawane Pytania

Czym jest GrapeCity Barcode?

GrapeCity Barcode to biblioteka .NET do generowania i odczytywania kodow kreskowych w aplikacjach C#. Jest jedna z kilku alternatyw, jakie programisci rozwazaja przy wyborze rozwiązania kodu kreskowego dla projektow .NET.

Jakie sa główne roznice miedzy GrapeCity Barcode a IronBarcode?

IronBarcode używa statycznego, bezstanowego API, ktore nie wymaga zarządzania instancjami, podczas gdy GrapeCity Barcode zazwyczaj wymaga utworzenia i konfiguracji instancji przed użyciem. IronBarcode zapewnia również natywna obsługę PDF, automatyczne wykrywanie formatu oraz jednouchwytowe licencjonowanie we wszystkich środowiskach.

Czy IronBarcode jest łatwiejszy do licencjonowania niz GrapeCity 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 kodow kreskowych, ktore obsługuje GrapeCity 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 porownaniu do GrapeCity 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ę ocenic IronBarcode przed zakupem, w przeciwienstwie do GrapeCity?

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 roznica cenowa miedzy GrapeCity 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 przeprowadzic migracje z GrapeCity Barcode do IronBarcode?

Migracja z GrapeCity Barcode do IronBarcode głównie polega na zamianie wywolan API opartych na instancji na statyczne metody IronBarcode, usunieciu szablonow licencyjnych i aktualizacji nazw właściwości wynikowych. Wiekszosc migracji polega na redukcji kodu zamiast jego dodawania.

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