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

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

Kontrolka BarCode ComponentOne generuje kody kreskowe w aplikacji Windows Forms. 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. Nie może działać poza środowiskiem Windows. Nie jest to produkt samodzielny — jest dostarczany jako część ComponentOne Studio Enterprise, subskrypcji w cenie około 1473 USD rocznie na programistę, która obejmuje ponad 100 elementów interfejsu użytkownika dla WinForms, WPF, Blazor i ASP.NET. 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 kontrolka wizualna WinForms. Proces generowania tworzy instancję, ustawia właściwości i wywołuje GetImage() w celu pobrania System.Drawing.Image:

// ComponentOne C1BarCode
using C1.Win.C1BarCode;
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.C1BarCode;
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.C1BarCode
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 właściwości widoczne dla projektanta, które działają identycznie w kodzie.

C1BarCode obsługuje popularne formaty 1D i 2D: między innymi Code 39, Code 128, EAN-8, EAN-13, UPC-A, UPC-E, ITF, QR Code i PDF417. W przypadku generowania WinForms obejmuje to typowe przypadki użycia.

Brak API do odczytu

Nie jest to luka, którą wypełnia opcja konfiguracyjna. Nie ma klasy C1BarCodeReader. W C1BarCode nie ma metody Decode(). 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, dłączego 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

C1BarCode wymaga konfiguracji środowiska docelowego specyficznej dla systemu Windows:


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

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

Nazwy frameworków docelowych net8.0-windows i UseWindowsForms nie są opcjonalnymi preferencjami. C1.Win.C1BarCode zależy od typów System.Windows.FormsUserControl, PaintEventArgs, Graphics — które istnieją tylko w systemie Windows. Usunięcie net8.0-windows powoduje przerwanie kompilacji.

Natomiast IronBarcode obsługuje net8.0 (lub dowolny obsługiwany format 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żna go przetłumaczyć.
  • 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 BARCODE-y z celem net8.0-windows nie może zostać wdrożona w planie Consumption.
  • Tworzenie oprogramowania na macOS: Programiści korzystający z systemu macOS nie mogą uruchamiać projektu net8.0-windows lokalnie, nawet w celu przetestowania 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

C1BarCode nie jest dostępne jako samodzielny pakiet NuGet. Jest to część ComponentOne Studio Enterprise, które zawiera pełną Suite kontrolek ComponentOne dla WinForms, WPF, Blazor i ASP.NET. Cena za ComponentOne Studio Enterprise wynosi około 1473 USD rocznie na programistę (subskrypcja).

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 tworzysz aplikację WinForms przetwarzającą duże ilości danych i potrzebujesz wielu z tych elementów sterujących, cena Suite może okazać się opłacalna. Jeśli potrzebujesz generowania kodów kreskowych i trafiłeś do ComponentOne, ponieważ pojawiło się to w wynikach wyszukiwania, kupujesz dużą Suite interfejsów użytkownika dla przedsiębiorstw głównie z powodu jednej kontrolki.

Nie ma samodzielnego pakietu C1BarCode. dotnet add package C1.Win.C1BarCode nie istnieje — pakiet to C1.Win.C1BarCode w ramach licencji GrapeCity.Documents lub instalatora ComponentOne Studio. Dla programistów, którzy chcą korzystać z funkcji BARCODE bez pełnej Suite, nie ma opcji częściowego zakupu.

Struktura cenowa IronBarcode jest inna: jest to samodzielna biblioteka IronBarcode z Licencją wieczystą, której cena zaczyna się od 749 USD dla jednego programisty. 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.C1BarCode;
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.C1BarCode;
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.C1BarCode
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 utworzenia instancji obiektu C1BarCode i ustawienia wielu właściwości przed wywołaniem GetImage(). Funkcja QRCodeWriter w IronBarcode wykorzystuje płynny łańcuch — każda operacja zwraca obiekt kodu kreskowego, a na końcu wywołuje się .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ę go z NuGet (dotnet add package IronBarcode), obsługuje dowolny obsługiwany .NET TFM bez ograniczeń platformowych i działa na systemach 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

W scenariuszach wymagających dużej przepustowości BarcodeReaderOptions kontroluje kompromis między szybkością a dokładnością oraz wykrywanie wielu BarCode'ów:

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

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true,
    ExpectedBarcodeTypes = 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,
    ExpectedBarcodeTypes = 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,
    .ExpectedBarcodeTypes = 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: od .NET 4.6.2 do .NET 9.

Porównanie funkcji

Funkcja GrapeCity 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)
Platforma .NET net8.0-windows tylko Wszelkie TFM (net8.0 itp.)
Wymagane jest użycie WindowsForms Tak Nie
Wdrożenie w systemie Linux / Docker Nie Tak
Wdrożenie na systemie macOS Nie Tak
Azure Functions (Linux) Nie Tak
ASP.NET Core po stronie serwera Ograniczone (tylko Windows) Tak
Samodzielny pakiet NuGet Nie (tylko Suite) Tak
Ceny produktów samodzielnych Nie dotyczy Od 749 USD (licencja wieczysta)
Ceny Suite ~1473 USD/programista/rok (subskrypcja) 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) Od .NET 4.6.2 do .NET 9
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 = "key"
new C1BarCode() Statyczne — nie wymaga instancji
barcode.CodeType = CodeType.Code128 BarcodeEncoding.Code128 (przekazane jako parametr)
barcode.Text = "data" Pierwszy argument BarcodeWriter.CreateBarcode()
barcode.BarHeight = 100 .ResizeTo(width, 100) na drukarce BarCode
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 wymagańe net8.0 (lub dowolny plik TFM)
UseWindowsForms = true wymagańe Nie jest wymagańe

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. Framework docelowy net8.0-windows natychmiast 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ć na własność oprogramowanie, które dostarczają — szczególnie ze względu na zgodność z przepisami lub długoterminową konserwację — Licencja wieczysta IronBarcode, której cena zaczyna się od 749 USD, ma zupełnie inną strukturę.

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 rozwiazania kodu kreskowego dla projektow .NET.

Jakie sa glowne roznice miedzy GrapeCity Barcode a IronBarcode?

IronBarcode uzywa statycznego, bezstanowego API, ktore nie wymaga zarzadzania instancjami, podczas gdy GrapeCity Barcode zazwyczaj wymaga utworzenia i konfiguracji instancji przed uzyciem. IronBarcode zapewnia rowniez natywna obsluge PDF, automatyczne wykrywanie formatu oraz jednouchwytowe licencjonowanie we wszystkich srodowiskach.

Czy IronBarcode jest latwiejszy 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 obsluguje wszystkie formaty kodow kreskowych, ktore obsluguje 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 moge 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 latwo jest przeprowadzic migracje z GrapeCity Barcode do IronBarcode?

Migracja z GrapeCity Barcode do IronBarcode glownie polega na zamianie wywolan API opartych na instancji na statyczne metody IronBarcode, usunieciu szablonow licencyjnych i aktualizacji nazw wlasciwosci 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().

Jordi Bardia
Inżynier oprogramowania
Jordi jest najbardziej biegły w Pythonie, C# i C++. Kiedy nie wykorzystuje swoich umiejętności w Iron Software, programuje gry. Dzieląc odpowiedzialność za testowanie produktów, rozwój produktów i badania, Jordi wnosi ogromną wartość do ciągłej poprawy produktów. Różnorodne doświadczenia ...
Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie