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
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>
Nazwy frameworków docelowych net8.0-windows i UseWindowsForms nie są opcjonalnymi preferencjami. C1.Win.C1BarCode zależy od typów System.Windows.Forms — UserControl, 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>
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-windowsnie 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-windowsnie 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-windowslokalnie, 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
Ł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")
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")
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
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)
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()
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().

