Spire.Barcode vs IronBarcode: C# Barkod Kütüphanesi Karşılaştırması
Spire.Barcode, okuma sırasında barkod türünü gerektirir: scanner.Scan(path, BarCodeType.Code128). Eger gelen barkodlarin her formatta olabilecegi dokümanlari isliyorsaniz, bir değer cikartabilmek icin once bir format-tespit dongusu yazmalisiniz. Verilen tek bir API karari, Spire.Barcode kullanarak barkod tarama is akislari kurma sekilleri uzerinde her seyi sekillendirir ve buna baglanmadan once anlamaya değer.
Spire.Barcode'u Anlamak
Spire.Barcode, Cinli yazilim şirketi E-iceblue tarafindan geliştirilen ticari bir .NET barkod kutuphanesidir; ayni zamanda Spire.Doc, Spire.XLS ve Spire.PDF ürün serilerini de uretir. Kutuphanesi, 1D ve 2D sembolojiler genelinde barkod oluşturma ve okuma destegi sunar ve genis E-iceblue doküman işleme ekosistemine entegre olacak sekilde tasarlanmistir.
E-iceblue iki paket yayınlar: FreeSpire.Barcode ücretsiz ve Spire.Barcode ticari bir ürün olarak. Ücretsiz paket, sure sinirli bir deneme yerine, kasitli kisitlamalar ile kalici olarak sinirlanmis bir urundur. Ticari paket, tam semboloji setini acar ve ücretsiz katmanda mevcut kisitlamalari kaldirir ancak kullanilan diğer herhangi bir Spire urununden ayri bir lisans satin alim gerektirir.
Spire.Barcode'un kilit mimari özellikleri sunlardir:
- Zorunlu BarCodeType parametresi:
BarcodeScanner.Scan()için yapılan her çağrıBarCodeTypeenum değeri gerektirir. Sadece bir dosya yolu kabul eden ve otomatik format tespiti yapan overload yok. - Ayar nesnesi oluşturma modeli: Barkod oluşturma, bir
BarcodeSettingsnesnesi üzerinde odaklanır ve bu nesne birBarCodeGeneratorörneğine aktarılır, herhangi bir çıktı üretilmeden önce birden fazla özellik atanması gerektirir. - Yerli PDF destegi yok: Spire.Barcode, PDF dosyalarindan direkt olarak barkod okuyamaz. PDF tabanlı iş akışları, ayrı bir
Spire.PDFpaketi, ayrı bir lisans ve geliştirici tarafından yazılmış manuel sayfa ve resim çıkarma kodu gerektirir. - FreeSpire.Barcode ücretsiz katman kisitlamalari: Ücretsiz sürüm, oluşturulan barkodlara buyuk degerlendirme filigranlari uygular, tarama performansini kasitli olarak dusurur, mevcut semboloji setini sinirlar ve uyari diyaloglari bastirilmazdan once E-iceblue'dan alinmis bir kayıt anahti gerektirir.
- E-iceblue ekosistemine entegrasyon: Zaten Spire.Doc ya da Spire.XLS kullanan takimlar, API asinaligi ve potansiyel paket fiyatlandirma avantajindan yararlanabilirler. Spire.Barcode'u tecrit edilmis olarak kullanan takimlar, ekosistem avantaji olmadan ürün basina tam lisans maliyeti tasir.
- Dönüş türü:
BarcodeScanner.Scan(), format meta verisi taşımayanstring[]döndürür. Tespit edilen tur sonuca dahil edilmemistir.
Tur Özellik Specifikasyonu Gerekliligi
Spire.Barcode'un BarcodeScanner.Scan(), yalnızca dosya yolunu kabul eden bir aşırı yüklemeye sahip değildir. Her okuma operasyonu cagri kodunun barkod formatini onceden belirtmesini gerektirir. Tek-format is akislari icin bu islevseldir ancak karisik-format doküman işleme icin aday bir yineleme dongusu oluşturur:
// Spire.Barcode: multi-format detection requires a guessing loop
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
// Spire.Barcode: multi-format detection requires a guessing loop
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}
Dim foundValue As String = Nothing
For Each type In candidates
Dim found As String() = scanner.Scan("barcode.png", type)
If found.Length > 0 Then
foundValue = found(0)
Exit For
End If
Next
Aday diziye eklenen her tur, ek bir tarama gecisi olur. Listeye dahil olmayan herhangi bir format sessizce atlanir. Geliştirici, yeni bir format is akisi icine girdiginde, ayrintili bir tur inventarini surdurmek ve yeniden test etmekten sorumludur.
IronBarcode'u Anlamak
IronBarcode, Iron Software tarafindan geliştirilen ticari bir .NET barkod kutuphanesidir. Bir statik API modeli araciligiyla barkod okuma ve oluşturma saglar, örnek yonetimi ihtiyaçini ortadan kaldirir. Kutuphanesi, ilave bagimliliklar gerektirmeyen yerli PDF ve görüntü işleme destegine sahip tek bir NuGet paketi olarak dağıtilir.
IronBarcode'un okuma motoru, tek bir tarama gecisinde50+semboloji uzerinde otomatik format tespiti gerceklestirir. BarcodeReader.Read() tarafından döndürülen sonuç nesneleri, tespit edilen barkod türü, çözümlenen değer ve PDF kaynakları için sayfa numarası ve kaynak görüntü içindeki sınır koordinatları gibi bağlamsal meta veriler içerir.
IronBarcode'un temel özellikleri şunlardır:
- Otomatik format algılama:
BarcodeReader.Read()hiçbir tür parametresi gerektirmez. Kutuphanesi, tarama sirasinda sembolojiyi belirler ve bunu sonuc nesnesine dahil eder. - Tek paket PDF desteği: PDF dosyaları
BarcodeReader.Read()tarafından doğrudan kabul edilir, ek bir NuGet paketi, lisans veya manuel sayfa çıkarma kodu gerektirmez. - Akıcı oluşturma API'si:
BarcodeWriter.CreateBarcode(), boyutlandırma, stil ve tek bir ifade içinde kaydetme için zincirlenebilir bir nesne döndüren statik bir fabrika metodudur. - Full özellikli deneme modu:IronBarcodedenemesi lisansli ürün ile ayni paket uzerinden calisir, tam okuma hizi, tam semboloji destegi ve tam özellik seti sunar. Deneme modunda uretilen cikti, küçük bir kenar filigrani tasir; okuma davranisi etkilenmez.
- Ayarlama için
BarcodeReaderOptions: Okuma hızı, çoklu barkod tespiti, görüntü ön işleme ve beklenen sembolojileri filtreleme, kütüphane ürünlerini değiştirmeden yapılandırılabilir. - Meta veri içeren sonuç nesneleri:
BarcodeResultskoleksiyonundaki her sonuçValue,BarcodeType,PageNumberve görüntü bölge verilerini ortaya koyar.
Özellik Karşılaştırması
Asagidaki tablo, Spire.Barcode ileIronBarcodearasindaki yuksek seviye farklari ozetler:
| Özellik | Spire.Barcode | IronBarcode |
|---|---|---|
| Barkod okuma | Evet (BarCodeType gerekli) | Evet (otomatik tespit) |
| Barkod üretimi | Evet | Evet |
| Otomatik format algılama | Hayır | Evet |
| Yerli PDF destegi | Hayir (Spire.PDF gerektigi) | Evet |
| Ücretsiz katman | FreeSpire.Barcode (sinirli) | Deneme modu (tüm özellikler) |
| Sembol sayisi | 39+ (ticari) | 50+ |
| Lisans modeli | Koltuk bazinda katmanlar ve abonelik | Süresiz, opsiyonel destek ile |
Detayli Özellik Karsilastirmasi
| Özellik | Spire.Barcode | IronBarcode |
|---|---|---|
| Okuma | ||
| Otomatik format algılama | Hayır | Evet |
| BarCodeType gerekli | Evet | Hayır |
| Format meta verisi dondurur | Hayır | Evet |
| Görüntü basına coklu barkod | Evet | Evet |
| Okuma hız kontrolü | Hayır | Evet (BarcodeReaderOptions) |
| ML destekli hata düzeltme | Hayır | Evet |
| Uretim | ||
| API modeli | Ayarlar nesnesi + jeneratör | Akici zincir ile statik fabrika |
| Ozel logo ile QR kodu | Sadece ticari katman | Tüm katmanlar |
| Cikti formatlari | Görüntü (PNG, JPEG, BMP) | PNG, JPEG, BMP, SVG, HTML, stream |
| Akici zincirleme | Hayır | Evet |
| PDF Desteği | ||
| PDF'den barkod okumak | Spire.PDF gerektirir | Yerli, ekstra paket yok |
| Sonucta sayfa numarasi | Manuel takip | Evet |
| Ek lisans gerekli | Evet (Spire.PDF) | Hayır |
| Platform | ||
| .NET Framework | Evet | Evet |
| .NET Core / .NET 5+ | Evet | Evet |
| Docker / Linux | Evet | Evet |
| Sembolojiler | ||
| 1D (Code128, Code39, EAN, UPC) | Evet | Evet |
| 2D (QR, DataMatrix, PDF417) | Evet | Evet |
| Toplam semboloji sayisi | 39+ (ticari) | 50+ |
| Lisanslama | ||
| Ücretsiz katman | FreeSpire.Barcode (filigranli, dusurulmus) | Deneme modu (tam hiz, küçük filigran) |
| Ücretsiz katman icin kayıt gerekli | Evet | Hayır |
| Lisans modeli | Koltuk bazinda süresiz + abonelik | Opsiyonel yenileme ile süresiz |
| Fiyat giris noktasi | $349 (tek geliştirici) | $749 (Lite) |
Barkod Okuma
Spire.Barcode Yaklasimi
Spire.Barcode'un BarcodeScanner.Scan(), her çağrıda bir BarCodeType parametresi gerektirir. Tek-tur cagrisi, format biliniyor ve garanti altinda ise uygundur:
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);
foreach (string value in results)
{
Console.WriteLine(value);
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim results As String() = scanner.Scan("barcode.png", BarCodeType.Code128)
For Each value As String In results
Console.WriteLine(value)
Next
Format onceden bilinmiyorsa, tek mevcut yaklasim, aday turlari yinelemek olur. Her yineleme tam bir tarama gecisi olur ve listede bulunmayan herhangi bir format sessizce atlanir. Sonuç, tür bilgisi taşımayan bir string[]'dir, bu nedenle formata dayalı aşağı yönlü yönlendirme, çağırıcı tarafından ek durum yönetimi gerektirir.
IronBarcode Yaklaşımı
IronBarcode'un BarcodeReader.Read(), hiçbir tür parametresi gerektirmez. Kutuphanesi, desteklenen tüm sembolojiler uzerinden format tespitini otomatik olarak tek bir geciste yapar. Görüntülerden barkod okuma, kaynak farkli formatlar icerebilir olsa da tek bir metod cagrisidir:
//IronBarcode— auto-detection built in
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.BarcodeType}: {result.Value}");
}
//IronBarcode— auto-detection built in
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.BarcodeType}: {result.Value}");
}
Imports IronBarcode
'IronBarcode— auto-detection built in
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.BarcodeType}: {result.Value}")
Next
Her sonuç nesnesi, BarcodeType, Value ve konum meta verilerini içerir. Format bazli asagi yonlendirme ek durum gerektirmez — tur, sonucun kendisinde mevcuttur.
Ücretsiz Katman Kisitlamalari
Spire.Barcode Ücretsiz Katman
FreeSpire.Barcode, uretilen barkod görüntülerine buyuk bir degerlendirme filigrani uygular. Filigran, barkodun üzerine yapıldığı için üretim kullanımı için uygun olmayacak hale getirir ve oluşturma kalitesinin anlamlı bir şekilde değerlendirilmesini engeller. Tarama performansı, ücretsiz sürümde kasten düşürülmüştür ki bu, değerlendirme sırasında yapılan işlem hızı ölçümlerinin ticari Spire.Barcode performansını temsil etmediği anlamına gelir. Ücretsiz paket aynı zamanda çalıştırma sırasında uyarı diyaloglarının bastırılmasından önce E-iceblue'den elde edilen bir kayıt anahtarı gerektirir. Ücretsiz katmandaki mevcut semboloji seti, ticari teklifin alt kümesidir. Bu kısıtlamalar toplu olarak, FreeSpire.Barcode üzerine inşa edilen bir değerlendirmede ticari ürünün sunduğunun doğru bir şekilde temsil edilmediği anlamına gelir.
IronBarcodeDeneme Modu
IronBarcode'un denemesi, lisans anahtarı olmadan kullanılan lisanslı pakettir. Okuma işlemi, tam semboloji desteği ve davranış kısıtlamaları olmadan tam hızda çalışır. Okuma hızı ve doğruluğu seçenekleri deneme ve lisanslı modda aynı şekilde çalışır. Deneme modunda oluşturulan barkod çıktısı, görüntünün kenarında küçük bir filigran taşır; barkodun kendisini gizlemez.IronBarcodedeğerlendirmesi sırasında ölçülen davranış, üretime gönderilen davranıştır.
| Bağlam | FreeSpire.Barcode | IronBarcode Denemesi |
|---|---|---|
| Oluşturulan çıktılardaki filigranlar | Büyük, barkodun üzerine oturur | Küçük, yalnızca görüntünün kenarındadır |
| Okuma performansı | Kasten düşürülmüş | Tam hız |
| Sembol destek | Sınırlı alt küme (~20 tip) | Tam set (50+ tip) |
| Kayıt gerekli | Evet (E-iceblue'den ücretsiz anahtar) | Hayır |
| Mevcut özellikler | Sınırlı alt küme | Tam özellik seti |
| Süre sınırı | None | 30 gün |
PDF Barkod Desteği
Spire.Barcode Yaklasimi
Spire.Barcode'un doğal bir PDF okuma yeteneği yoktur. Bir PDF dosyasından barkod çıkarmak için, geliştirici ayrı bir Spire.PDF paketi yüklemeli, ayrı bir Spire.PDF lisansı satın almalı ve barkod taramasına başlamadan önce manuel sayfa yinelemesi ve görüntü çıkarma kodu yazmalıdır:
// Spire.Barcode + Spire.PDF: two libraries, two licenses
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required even here
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
// Spire.Barcode + Spire.PDF: two libraries, two licenses
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required even here
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
Imports Spire.Pdf
Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")
Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
Dim images = page.ExtractImages()
For Each image In images
' BarCodeType is still required even here
Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
Next
Next
Bu desen iki NuGet paketi, iki lisans anlaşması ve geliştirici tarafından yazılmış sayfa yönetim kodu gerektirir. Eğer barkodlar raster görüntüler yerine PDF içindeki vektör içeriğine gömülüyse, görüntü çıkarma yaklaşımı onları tamamen kaçırabilir.
IronBarcode Yaklaşımı
IronBarcode, herhangi bir ek bağımlılık olmaksızın PDF dosyalarını doğal olarak işler. PDF belgelerinden barkod okuma aynı BarcodeReader.Read() API'sini kullanarak yapılan tek bir metod çağrısıdır. Sayfa numaraları her sonuç nesnesine dahil edilir:
// IronBarcode: native PDF support, no additional library
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.BarcodeType} = {barcode.Value}");
}
// IronBarcode: native PDF support, no additional library
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.BarcodeType} = {barcode.Value}");
}
Imports IronBarcode
Dim results = BarcodeReader.Read("document.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.BarcodeType} = {barcode.Value}")
Next
Manuel sayfa çıkarma, ikinci bir paket ve ek lisans satın alma gerektirmez.
Üretim API'si
Spire.Barcode Yaklasimi
Spire.Barcode'un oluşturma modeli, değiştirilebilir bir BarcodeSettings yapılandırma nesnesi üzerinde yoğunlaşır. Geliştirici, ayarları başlatır, özellikleri tek tek atar, ayarlar nesnesini bir BarCodeGenerator'ye iletir ve ardından GenerateImage()'yi çağırır:
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
// Spire.Barcode generation
using Spire.Barcode;
BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;
BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
Imports Spire.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging
Dim settings As New BarcodeSettings()
settings.Type = BarCodeType.Code128
settings.Data = "12345678"
settings.ShowText = True
settings.TextMargin = 5
settings.BarHeight = 60
settings.Unit = GraphicsUnit.Pixel
Dim generator As New BarCodeGenerator(settings)
Dim barcodeImage As Image = generator.GenerateImage()
barcodeImage.Save("barcode.png", ImageFormat.Png)
Değiştirilebilir ayarlar nesnesi, tek bir örnek birden fazla üretim işlemi arasında kullanıldığında yapılandırmaların yanlışlıkla paylaşıldığı anlamına gelir. Üretici sınıfı, kendi yapılandırma mantığı olmayan ek bir başlatma adımı ekler.
IronBarcode Yaklaşımı
IronBarcode, opsiyonel akıcı zincirleme ile statik bir fabrika yöntemi kullanır. Yönetilecek ayarlar nesnesi ve üretici örneği yoktur:
//IronBarcodegeneration
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
//IronBarcodegeneration
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
Imports IronBarCode
' IronBarcode generation
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("barcode.png")
' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.SaveAsPng("barcode.png")
Özel logolara sahip QR kodları, tümIronBarcodelisans katmanları arasında mevcuttur:
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-with-logo.png")
Fiyatlandırma
Spire.Barcode'un fiyatlandırma yapısı dört katman içerir:
| Lisans | Fiyat |
|---|---|
| Tek Geliştirici | $349 |
| Site Lisansı | $1,398 |
| OEM | $6,990 |
| Abonelik | $999/yıl |
Sürekli katmanlar belirli bir sürümü kapsar. Sürekli lisansa ek olarak devam eden güncellemeler ve destek için aktif bir abonelik gerektirir. Bir geliştiriciden iki geliştiricili hale gelen bir ekip, 349 dolarlık tek geliştirici katmanından doğrudan 1.398 dolarlık site lisansına geçer. Spire.PDF de PDF barkod çıkarma için gereklidir, bu lisans ek bir maliyettir.
IronBarcode lisanslama üç sürekli katman kullanır:
| Lisans | Fiyat | Geliştiriciler |
|---|---|---|
| Lite | $749 | 1 |
| Professional | $1,499 | 10 |
| Sınırsız | $2,999 | Sınırsız |
Tüm katmanlar, yıllık destek ve güncelleme aboneliği ekleme seçeneğiyle süresizdir. Spire.Barcode'un Site lisansında olan beş geliştiricili bir ekip ($1,398) artı bir yıllık abonelik ($999), ilk yılda toplamda $2,397 yapar, ikinci yıl için zorunlu bir maliyet olmadan tek seferlik satın alma olarak $1,499'a IronBarcodeProfessionalile karşılaştırılabilir.
API Eslestirme Referansi
| Spire.Barcode | IronBarcode |
|---|---|
new BarcodeScanner() |
Statik BarcodeReader.Read() |
scanner.Scan(path, BarCodeType.X) |
BarcodeReader.Read(path) |
BarCodeType.Code128 (gerekli parametre) |
Otomatik algılandı; no equivalent needed |
string[] results |
BarcodeResults koleksiyonu |
results[0] (dize) |
results[0].Value (dize) |
new BarcodeSettings() |
BarcodeWriter.CreateBarcode() için parametreler |
settings.Type = BarCodeType.Code128 |
BarcodeEncoding.Code128 ikinci parametre olarak |
settings.Data = "value" |
CreateBarcode()'nin ilk parametresi |
new BarCodeGenerator(settings) |
Gerekli değil; static factory replaces this |
generator.GenerateImage() + image.Save() |
.SaveAsPng(path) veya .SaveAsJpeg(path) |
Spire.PDF (PDF okuma için) |
Gerekli değil; dahili olarak yerleşik PDF desteği |
BarcodeSettings.ApplyKey("key") |
IronBarCode.License.LicenseKey = "key" |
Spire.License.LicenseProvider.SetLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
Takımların Spire.Barcode'dan IronBarcode'a Geçişi Düşündükleri Zamanda
Karışık Formatlı Belge İşleme
Genellikle tek bir bilinen barkod formatıyla başlayan ekipler, zamanla format çeşitliliklerinin arttığını fark ederler. Code128 etiketleriyle başlayan bir depo uygulaması, DataMatrix, GS1-128, veya QR kodları kullanan tedarikçilerden teslimatlar alabilir. Akış sürecine giren her yeni format, aday dizi içinde güncellemeyi, algılama mantığını yeniden test etmeyi ve yinelemelerin sırası tarafından mevcut hiçbir formatın yerinden olmadığını doğrulamayı gerektirir. Format çeşitliliği, bu döngünün bakım yükünün tekrarlayan bir geliştirme maliyeti haline geldiği bir noktaya ulaştığında, ekipler otomatik algılamanın bu yükü tamamen ortadan kaldırıp kaldırmayacağını değerlendirirler.
PDF Entegrasyonu
Belge ağırlıklı uygulamalar, çoğu zaman barkodların bağımsız görüntüler yerine PDF dosyalarından çıkarılması gerektiği bir anda karşılaşırlar. Bir Spire.Barcode iş akışında, bu geçiş Spire.PDF lisansı almayı, ikinci bir paketi entegre etmeyi ve barkod okuma başlamadan önce sayfa yineleme ve görüntü çıkarma altyapısını yazmayı gerektirir. Bu gereksinimi ilk satın alma sırasında öngörmeyen ekipler, konsept olarak barkod okuma ile ilgili olan bir görev için iki ürün lisansı ve iki API yüzeyini yönetirken bulurlar. PDF desteğinin ayrı bir satın alma gerektirdiğini keşfetmek, ürün seçimini yeniden değerlendirmek için yaygın bir tetikleyicidir.
Ücretsiz Katman Değerlendirme Sınırlamaları
FreeSpire.Barcode'u değerlendiren ve ardından ticari lisansı satın alan ekipler, bazen ticari ürünün, değerlendirmelerinin önerdiğinden farklı davrandığını bildirirler. Bu tasarım gereğidir: ücretsiz katman, okuma performansını kasten düşürür ve semboloji setini sınırlar ki bu, değerlendirme sırasında yürütülen kıyaslamalar ve format kapsamı testlerinin ticari dağıtıma aktarılmadığı anlamına gelir. Bir ekip bu farkı satın alma sonrasında keşfettiğinde, deneme davranışının üretim davranışını temsil ettiği alternatifleri ararlar.
Ürün Sayısını Azaltma
Teknoloji yığını standart hale getirilmiş kuruluşlar, bazen Spire.Barcode'u, her biri kendi lisans maliyeti ve yenileme döngüsü taşıyan büyüyen bir E-iceblue ürün envanteri içinde bir bileşen olarak tanımlarlar. Eğer Spire.Barcode'un birincil yönlendiricisi, Spire.Doc veya Spire.XLS ile derin entegrasyon yerine bir belge işleme hattında barkod okuma ise, ekipler, kendi kendine yeterli tek bir barkod kütüphanesinin hem lisans karmaşıklığını hem de destek yüzey alanını azaltıp azaltamayacağını değerlendirir.
Genel Geçiş Dusunceleri
BarCodeType Parametresini Kaldırma
Spire.Barcode kod tabanındaki her scanner.Scan() çağrısı bir BarCodeType argümanı taşır. Bu çağrıları BarcodeReader.Read() ile değiştirmek tür parametresini tamamen kaldırır. Tür tahmini döngüleri — aday BarCodeType değerleri boyunca yineleyen foreach blokları — tamamen silinebilir; tek bir BarcodeReader.Read() çağrısı tüm döngüyü değiştirir.
Dönüş Türünü Güncelleme
Spire.Barcode'un Scan() string[] döndürür. IronBarcode, bir BarcodeResults koleksiyonu döndürür. string[] atayan veya bu türü bekleyen metodlara sonuçları ileten çağrı yerleri güncellenmelidir. Bir dizi olarak değerleri çıkarmak .Select(r => r.Value).ToArray() kullanır; İlk sonuca erişim .First()?.Value kullanır.
Spire.PDF Paketinin Kaldırılması
Eğer Spire.PDF sadece PDF dosyalarından barkod çıkarmayı desteklemek için kurulduysa, IronBarcode'a geçişten sonra kaldırılabilir. Tüm using Spire.Pdf; ithalatları ve manuel sayfa yineleme blokları tek bir BarcodeReader.Read("file.pdf") çağrısıyla değiştirilir. Spire.PDF barkod çıkarımının ötesinde diğer belge işlemleri için kullanılıyorsa, korunmalı ve yalnızca barkod ile ilgili kod yolları değiştirilmelidir.
Namespace Değişiklikleri
using Spire.Barcode;, using IronBarCode; ile değiştirilmelidir. BarCodeType enumu BarcodeEncoding ile değiştirilir ve okuma için eşdeğeri gerektirmez. Lisans başlatma BarcodeSettings.ApplyKey() veya Spire.License.LicenseProvider.SetLicenseKey()'den uygulama başlatıldığında tek bir IronBarCode.License.LicenseKey özellik atamasına değişir.
EkIronBarcodeIlkeler
AşağıdakiIronBarcodeözellikleri yukarıdaki karşılaştırmalarda ele alınmadı:
- Toplu resim okuma:
BarcodeReader.Read()dosya yolları dizilerini,Streamnesnelerini veBitmapörneklerini kabul eder, giriş koleksiyonu üzerinde manuel döngü olmadan toplu işlem yapılmasını mümkün kılar. - BarcodeReaderOptions: Okuma hızı, çoklu barkod tespiti, maksimum adaylar ve görüntü geliştirme ön işleme,
Read()'ye iletilen tek bir seçenekler nesnesi aracılığıyla yapılandırılabilir. - SVG ve HTML çıktısı:
BarcodeWriter.CreateBarcode(), web'e gömülebilir barkod çıktısı sağlamak için, raster görüntü formatlarına ek olarak.SaveAsSvg()ve.SaveAsHtmlFile()'yi destekler. - Logo ile QR kodu:
QRCodeWriter.CreateQrCode(), tüm lisans kademelerindeAddBrandLogo()'yi destekler, özelleştirilmiş bir görüntünün çekirdeğine uygun hata düzeltme seviyelerinde tarama güvenilirliğini etkilemeden eklenmesine izin verir. - Akış ve bayt dizisi çıktısı: Oluşturulan barkodlar doğrudan depolama veya ara dosya olmadan HTTP yanıtı yazma için
Streamveyabyte[]olarak dışa aktarılabilir. - GS1-128 ve yapılandırılmış sembolojiler: IronBarcode, Spire.Barcode ticari katmanında mevcut olanın ötesinde yapılandırılmış GS1 sembolojileri desteği içerir.
.NET Uyumlulugu ve Gelecek Hazirikligi
IronBarcode,.NET Framework4.6.2 ve sonrası, .NET Core 3.1 ve .NET 5'ten .NET 9'a kadar tüm sürümleri destekler, .NET 10 için uyumluluk güncellemeleri, serbest bırakma zaman çizelgesi 2026 boyunca olgunlaştıkça bekleniyor. Kütüphane Windows, Linux ve macOS'ta test edilmiştir ve ek yerel bağımlılık yapılandırmasına gereksinim olmadan Docker konteynerlerinde çalışır. Spire.Barcode da çapraz platform .NET dağıtımını destekler, ancak Linux ve Docker yapılandırmaları, kullanılan sürüme bağlı olarak ek yerel kütüphanelerin kurulumu gerektirebilir. IronBarcode'un düzenli sürüm temposu, yeni C# dil özelliklerinin ve .NET çalışma zamanı iyileştirmelerinin platform uyumluluk güncellemeleriyle birleştirilmesini sağlar.
Sonuç
Spire.Barcode ve IronBarcode, barkod okuma problemini temelde farklı pozisyonlardan ele alır. Spire.Barcode, format bilgisini çağırana yerleştirir - her bir tarama işlemi geliştiricinin semboloji önceden beyan etmesini gerektirir, bu kapanış formatı iş akışlarında çalışılabilir bir kısıtlamadır ve açık formatlı olanlarda bir bakım yüküdür.IronBarcodeformat tespitini kütüphane içine yerleştirir, herhangi bir tür parametresi gerektirmez ve tespit edilen formatı sonuç parçası olarak döndürür.
Spire.Barcode, tek bir garanti edilmiş barkod formatını işleyen uygulamalar ve özellikle E-iceblue ürün ekosistemine zaten yatırım yapmış olan ekipler için makul bir seçimdir. Ayarlar-nesne üretim modeli, açık yapılandırmayı tercih eden geliştiriciler için tanıdıktır ve ticari lisans, tek-geliştirici projeler için rekabetçidir. Her çağrıda BarCodeType.Code128 garanti edebilen ekipler, zorunlu tür parametresi için pratik bir maliyet ödemezler.
IronBarcode, format çeşitliliğinin öngörülemez veya büyüyen olduğu, PDF barkod çıkarımının birinci sınıf bir gereklilik olduğu ve değerlendirme doğruluğunun önemli olduğu uygulamalarda daha uygundur. Deneme, tam üretim hızında ve tam semboloji setinde çalışır, performans kıyaslamalarını ve değerlendirme sırasında yürütülen format kapsamı testlerini doğrudan üretim dağıtımına uygulanabilir hale getirir. Yerel PDF desteği, ikincil bir kütüphaneye ve ilgili lisans gözden geçirme yüküne olan ihtiyaçı ortadan kaldırır. IronBarcode'u Spire.Barcode'a alternatif olarak düşünen ekipler için, Spire.Barcode alternatif genel bakış karşılaştırma hakkında ek bağlam sağlar.
Karar nihayetinde format öngörülebilirliğine ve iş akışı kapsamına dayanır. Sabit bir Code128 etiket standardına sahip ve PDF kaynak belgeleri olmayan bir depo sistemi, IronBarcode'un otomatik tespitini tercih etmesi için pratik bir neden yoktur. Dış tedarikçilerden barkodları alıp işleyen, karışık sembolojileri ele alan ve PDF eklerinden okuma yapan bir belge işleme hattı, zorunlu tür parametresi ve iki kütüphaneli PDF gerekliliğini IronBarcode'un ortadan kaldırdığı süregelen bakım maliyetleri olarak bulacaktır.
Sıkça Sorulan Sorular
Spire.Barcode nedir?
Spire.Barcode, C# uygulamalarında barkod üretme ve okuma için kullanılan bir .NET barkod kütüphanesidir. .NET projeleri için bir barkod çözümü seçerken geliştiricilerin değerlendirdiği birkaç alternatiften biridir.
Spire.Barcode ve IronBarcode arasındaki temel farklar nelerdir?
IronBarcode, örnek yönetimi gerektirmeyen statik, durumsuz bir API kullanırken, Spire.Barcode genellikle kullanım öncesinde örnek oluşturma ve yapılandırma gerektirir. IronBarcode ayrıca yerel PDF desteği, otomatik format algılama ve tüm ortamlar için tek anahtarlı lisanslama sağlar.
IronBarcode, Spire.Barcode'den daha kolay mı lisanslanır?
IronBarcode, hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu durum, CI/CD hatları ve Docker yapılandırmalarını, SDK anahtarlarını çalıştırma anahtarlarından ayıran lisanslama sistemleriyle karşılaştırıldığında basitleştirir.
IronBarcode, Spire.Barcode'un desteklediği tüm barkod formatlarını destekliyor mu?
IronBarcode, QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 ve daha fazlası dahil 30'dan fazla barkod sembolojisini destekler. Format otomatik algılama, açık format sayımı gerektirmez.
IronBarcode yerel PDF barkod okuma desteği veriyor mu?
Evet. IronBarcode, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından barkodları doğrudan okur, ayrı bir PDF işleme kütüphanesi gerektirmez. Sayfa başına sonuçlar, sayfa numarası, barkod formatı, değeri ve güven skoru içerir.
IronBarcode, Spire.Barcode'e kıyasla toplu işlemeyi nasıl ele alır?
IronBarcode'un statik yöntemleri durumsuz ve doğal olarak iş parçacığı güvenlidir, Parallel.ForEach'in doğrudan kullanımını sağlar ve iş parçacığı başı örnek yönetimi gerektirmez. Hiçbir fiyatlandırma seviyesi için bant genişliği sınırı yoktur.
IronBarcode hangi .NET sürümlerini destekliyor?
IronBarcode, .NET Framework 4.6.2+, .NET Core 3.1 ve .NET 5, 6, 7, 8 ve 9'u tek bir NuGet paketi içinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunuyor.
.NET projesine IronBarcode'u nasıl kurarım?
NuGet aracılığıyla IronBarcode'u kurun: 'Install-Package IronBarCode' komutunu Paket Yöneticisi Konsolunda veya CLI'de 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyici veya çalışma zamanı dosyaları gerekli değildir.
Spire.Barcode'un aksine, satın almadan önce IronBarcode'yi değerlendirebilir miyim?
Evet. IronBarcode'ın deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek tam çözümlenmiş barkod değerlerini verir. Satın almadan önce kendi belgelerinizde okuma doğruluğunu test edebilirsiniz.
Spire.Barcode ve IronBarcode arasındaki fiyat farkı nedir?
IronBarcode, geliştirme ve üretimi kapsayan tek bir geliştirici lisansı için $749'dan başlar. Fiyatlandırma detayları ve hacim seçenekleri, IronBarcode lisanslama sayfasında mevcuttur. Ayrı bir çalışma zamanı lisansı gereksinimi yoktur.
Spire.Barcode'dan IronBarcode'ye geçiş yapmak kolay mı?
Spire.Barcode'dan IronBarcode'ye geçiş, esas olarak instance tabanlı API çağrılarını IronBarcode'un statik metodlarıyla değiştirmeyi, lisans şablonunu kaldırmayı ve sonuç özelliği adlarını güncellemeyi içerir. Çoğu geçiş, kodu eklemekten ziyade azaltmayı içerir.
IronBarcode, logolu QR kodları üretiyor mu?
Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png') kullanarak bir QR koduna yerel logolu bir marka resmi ekleyin, yapılandırılabilir hata düzeltme ile. ChangeBarCodeColor() üzerinden renkli QR kodları da desteklenir.

