Altbilgi içeriğine atla
DIğER BILEşENLERLE KARşıLAşTıRıN

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ı BarCodeType enum 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 BarcodeSettings nesnesi üzerinde odaklanır ve bu nesne bir BarCodeGenerator ö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.PDF paketi, 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şımayan string[] 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
$vbLabelText   $csharpLabel

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: BarcodeResults koleksiyonundaki her sonuç Value, BarcodeType, PageNumber ve 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

Ö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")
$vbLabelText   $csharpLabel

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, Stream nesnelerini ve Bitmap ö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 kademelerinde AddBrandLogo()'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 Stream veya byte[] 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.

Jordi Bardia
Yazılım Mühendisi
Jordi Python, C# ve C++ konularında en yetkin, Iron Software'deki yeteneklerini kullanmadığı zamanlarda; oyun programlıyor. Ürün testi, ürün geliştirme ve araştırma sorumluluklarını paylaşan Jordi, sürekli ürün gelişimine büyük değer katıyor. Çeşitli deneyimleri onu ...
Daha Fazlasını Oku

Iron Destek Ekibi

Haftanın 5 günü, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara