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 vs IronBarcode: Tür Belirleme, PDF Desteği ve Fiyatlandırma Karşılaştırması

Spire.Barcode, okuma sırasında scanner.Scan(path, BarCodeType.Code128) için barkod türünü gerektirir. Gelen barkodların herhangi bir formatta olabileceği belgeleri işliyorsanız, bir değer almadan önce format algılama döngüsü yazmanız gerekir. Bu tek API kararı, Spire.Barcode ile barkod tarama iş akışlarını nasıl oluşturacağınızı şekillendirir ve ona bağlı kalmadan önce anlamaya değer.

Spire.Barcode'u Anlamak

Spire.Barcode, Çinli bir yazılım şirketi olan E-iceblue tarafından geliştirilen ticari bir .NET barkod kütüphanesidir. Spire.Doc, Spire.XLS ve Spire.PDF ürün hatlarını da üretmektedir. Kütüphane, geniş bir 1D ve 2D semboloji yelpazesiyle barkod üretimi ve okuma desteği sunar ve daha geniş E-iceblue belge işleme ekosistemine entegre olacak şekilde tasarlanmıştır.

E-iceblue iki paket yayınlar: FreeSpire.Barcode ücretsiz olarak ve Spire.Barcode ticari bir ürün olarak. Ücretsiz paket, kasıtlı olarak sınırlamalar içeren kalıcı bir ürün olarak kalır, zaman sınırlı bir deneme değil. Ticari paket, tam semboloji setini açar ve ücretsiz seviyede mevcut kısıtlamaları kaldırır, ancak diğer kullanılan Spire ürünlerinden ayrı bir lisans satın alımı gerektirir.

Spire.Barcode'un önemli mimari özellikleri şunlardır:

  • Zorunlu BarCodeType parametresi: BarcodeScanner.Scan() için yapılan her çağrı bir BarCodeType enum değeri gerektirir. Sadece bir dosya yolunu kabul eden ve otomatik format algılama gerçekleştiren bir yükleme yoktur.
  • Ayar nesnesi oluşturma modeli: Barkod oluşturma bir BarcodeSettings nesnesini ve bir BarCodeGenerator örneğini merkez alır, çıktı üretilmeden önce birden çok özellik ataması gerektirir.
  • Yerel PDF desteği yok: Spire.Barcode doğrudan PDF dosyalarından barkod okuyamaz. PDF tabanlı iş akışları, geliştirici tarafından yazılmış ayrı bir Spire.PDF paketi, ayrı bir lisans ve manuel sayfa ve resim çıkarma kodu gerektirir.
  • FreeSpire.Barcode ücretsiz seviye sınırlamaları: Ücretsiz sürüm, üretilen barkodlara büyük değerlendirme su oylumları uygular ve tarama performansını kasıtlı olarak düşürür, mevcut semboloji setini sınırlar ve E-iceblue'dan elde edilen bir kayıt anahtarı gerektirir, böylece uyarı iletişim kutuları bastırılırken çalıştırma sırasında.
  • E-iceblue ekosistem entegrasyonu: Spire.Doc veya Spire.XLS halihazırda kullanan ekipler, API aşinalığı ve potansiyel paket fiyatlandırmasını faydalı bulabilir. Spire.Barcode'u izole olarak kullanan ekipler, ekosistem avantajı olmadan tam başına ürün lisans maliyetine katlanır.
  • Geri dönüş türü: BarcodeScanner.Scan(), format meta verisi içermeyen string[] döner. Tespit edilen tür sonuçta yer almaz.

Tür Belirtimi Gereksinimi

Spire.Barcode'un BarcodeScanner.Scan() yalnızca bir dosya yolunu kabul eden bir aşırı yüklemeye sahip değildir. Her okuma işlemi, çağrılan kodun barkod formatını önceden beyan etmesini gerektirir. Tek formatlı iş akışları için bu çalışabilir, ancak karışık formatlı belge işleme için bir aday yineleme döngüsü üretir:

// Spire.Barcode: multi-format detection iterates through candidate types
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 iterates through candidate types
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 dizisine eklenen her tür, ek bir tarama geçişidir. Listede bulunmayan herhangi bir format sessizce atlanır. Geliştirici, kapsamlı bir tür envanteri tutmaktan ve iş akışına yeni bir format girdiğinde yeniden test yapmaktan sorumludur.

IronBarcode Anlama

IronBarcode, Iron Software tarafından geliştirilen ticari bir .NET barkod kütüphanesidir. Hem barkod okuma hem de üretimi, örnek yönetimine ihtiyaç duymayan statik bir API modeli aracılığıyla sağlar. Kütüphane, ek bağımlılıklar olmadan yerel PDF ve görüntü işleme desteği içeren tek bir NuGet paketi olarak gönderilir.

IronBarcode'un okuma motoru, tek bir tarama geçişinde50+semboloji üzerinde otomatik format tespiti yapar. BarcodeReader.Read() tarafından döndürülen sonuç nesneleri, algılanan formatı, çözümlenen değeri ve PDF kaynaklar için sayfa numarası ve kaynak görüntü içindeki sınırlayıcı koordinatlar gibi bağlamsal meta verileri içerir.

IronBarcode'un ana özellikleri şunlardır:

  • Otomatik format algılama: BarcodeReader.Read() tür parametresi gerektirmez. Kütüphane, tarama sırasında sembolojiyi tespit eder ve sonuç nesnesine dahil eder.
  • Tek paket PDF desteği: PDF dosyaları ek bir NuGet paketi, lisans veya manuel sayfa çıkarma kodu olmadan doğrudan BarcodeReader.Read() tarafından kabul edilir.
  • Akıcı üretim API'si: BarcodeWriter.CreateBarcode(), tek bir ifadede boyutlandırma, stil verme ve kaydetme için zincirlenebilir bir nesne döndüren statik bir fabrika yöntemidir.
  • Tam kapasitede deneme modu:IronBarcode denemesi, lisanslı ürünle aynı paketten çalıştırılır ve tam okuma hızını, tam semboloji desteğini ve eksiksiz özellik setini sunar. Deneme modunda üretilen çıktılar, kenarında küçük bir su oylumu taşır; okuma davranışı etkilenmez.
  • İnce ayar için BarcodeReaderOptions: Okuma hızı, çoklu barkod tespiti, görüntü ön işleme ve beklenen semboloji filtreleri, kütüphane ürünleri değiştirilmeden yapılandırılabilir.
  • Meta verili sonuç nesneleri: BarcodeResults koleksiyonundaki her sonuç, Value, Format, PageNumber ve görüntü bölgesi verilerini açığa çıkarır.

Özellik Karşılaştırması

Aşağıdaki tablo, Spire.Barcode ve IronBarcode arasındaki üst düzey farklılıkları özetler:

Özellik Spire.Barcode IronBarcode
Barkod okuma Evet (BarCodeType gereklidir) Evet (otomatik tespit)
Barkod oluşturma Evet Evet
Otomatik format algılama Hayır Evet
Yerel PDF desteği Hayır (Spire.PDF gerektirir) Evet
Ücretsiz seviye FreeSpire.Barcode (kısıtlı) Deneme modu (tam özellikler)
Semboloji sayısı ~38 (ticari) 50+
Lisans modeli Koltuk başına kademeler ve abonelik Destek opsiyonuyla süresiz

Ayrıntılı Özellik Karşılaştırması

Özellik Spire.Barcode IronBarcode
Okuma
Otomatik format algılama Hayır Evet
BarCodeType gereklidir Evet Hayır
Format meta verilerini döner Hayır Evet
Görüntü başına çoklu barkod Evet Evet
Okuma hız kontrolü Hayır Evet (BarcodeReaderOptions)
ML destekli hata düzeltme Hayır Evet
Üretim
API modeli Ayar nesnesi + üretici Akıcı zincir ile statik fabrika
Özel logolu QR kodu Yalnızca ticari seviye Tüm seviyeler
Çıkış formatları Görüntü (PNG, JPEG, BMP) PNG, JPEG, BMP, SVG, HTML, akış
Akıcı zincirleme Hayır Evet
PDF Desteği
PDF'den barkod okuyun Spire.PDF gerektirir Yerel, ek paket yok
Sonuçta sayfa numarası Manuel izleme Evet
Ek lisans gereklidir 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 sayısı ~38 (ticari) 50+
Lisanslama
Ücretsiz seviye FreeSpire.Barcode (filigranlı, düşürülen) Deneme modu (tam hız, küçük filigran)
Ücretsiz seviye için kayıt gereklidir Evet Hayır
Lisans modeli Koltuk başına süresiz + abonelik Opsiyonel yenilemeyle süresiz
Fiyatlandırma giriş noktası $999/yıl (Site Aboneliği) $749 (Lite, süresiz)

Barkod Okuma

Spire.Barcode Yaklaşımı

Spire.Barcode'un BarcodeScanner.Scan() her çağrıda bir BarCodeType parametresini gerektirir. Tek tür çağrısı, formatın bilinmesi ve garanti edilmesi durumunda 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 önceden bilinmediğinde, mevcut tek yaklaşım aday türleri arasından yinelemektir. Her yineleme tam bir tarama geçişidir ve listede olmayan herhangi bir format sessizce atlanır. Sonuç, format bilgisi içermeyen bir string[], bu nedenle formata dayalı alt yörüngelendirme, arayan tarafından ek durum yönetimi gerektirir.

IronBarcode Yaklaşımı

IronBarcode'un BarcodeReader.Read() tür parametresi gerektirmez. Kütüphane, desteklenen tüm sembolojiler arasında otomatik olarak formatı belirler. Görüntülerden barkod okuma, kaynakta kaç farklı format olursa olsun tek bir metot çağrısıdır:

// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");

foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");

foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
Imports IronBarCode

' IronBarcode: automatic format detection
Dim results = BarcodeReader.Read("barcode.png")

For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

Her sonuç nesnesi Format, Value ve konumsal meta verileri içerir. Format bazlı yönlendirme, sonuçta tip mevcutken ek bir durum gerektirmez.

Ücretsiz Seviye Sınırlamaları

Spire.Barcode Ücretsiz Seviyesi

FreeSpire.Barcode üretilen barkod imajlarına büyük bir değerlendirme su oylumu uygular. Filigran, barkodu üretim kullanımı için uygun olmaktan çıkaracak şekilde kaplar ve üretim kalitesinin anlamlı bir değerlendirmesini gizler. Ücretsiz sürümde tarama performansı kasıtlı olarak düşürülür, bu da değerlendirme sırasında yapılan verim ölçümlerinin ticari Spire.Barcode performansını temsil etmediği anlamına gelir. Ücretsiz paket ayrıca çalıştırma sırasında uyarı iletişim kutuları bastırılmadan önce E-iceblue'dan elde edilen bir kayıt anahtarı gerektirir. Ücretsiz seviyedeki mevcut semboloji seti, ticari teklifin bir alt kümesidir. Bu kısıtlamalar topluca, FreeSpire.Barcode üzerine kurulmuş bir değerlendirmenin, ticari ürünün sunduğunu doğru bir şekilde temsil etmediğini ifade eder.

IronBarcode Deneme Modu

IronBarcode'un denemesi, bir lisans anahtarı kullanılmadan kullanılan lisanslı pakettir. Okuma, tam hızda çalışır, tam semboloji desteği sağlar ve davranışsal kısıtlamalar içermez. Okuma hızı ve doğruluk seçenekleri deneme ve lisanslı modda aynı şekilde davranır. Deneme modunda üretilen barkod çıktısı, görüntünün kenarında küçük bir filigran taşır; barkodun kendisini gizlemez.IronBarcode değerlendirmesi sırasında ölçülen davranış, üretime gönderilen davranıştır.

Aspekt FreeSpire.Barcode IronBarcode Deneme
Üretilen çıktıda filigranlar Büyük, barkodu kaplar Küçük, yalnızca görüntü kenarı
Okuma performansı Kasıtlı olarak düşürülmüş Tam hız
Semboloji desteği Ücretli sürümün sınırlı alt kümesi Tam set (50+ tür)
Kayıt Gereklidir Evet (E-iceblue'dan ücretsiz anahtar) Hayır
Mevcut özellikler Sınırlı alt küme Tam özellik seti
Zaman sınırı None 30 gün

PDF Barkod Desteği

Spire.Barcode Yaklaşımı

Spire.Barcode'un yerel bir PDF okuma özelliğ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 taramaya başlamadan önce manuel sayfa yineleme ve resim çıkarma kodu yazmalıdır:

// Spire.Barcode + Spire.PDF: separate package and license required
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 for each scan call
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}
// Spire.Barcode + Spire.PDF: separate package and license required
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 for each scan call
        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 for each scan call
        Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
    Next
Next
$vbLabelText   $csharpLabel

Bu model, iki NuGet paketi, iki lisans anlaşması ve geliştirici yazılı sayfa yönetim kodu gerektirir. Eğer barkodlar PDF içinde raster görüntüler yerine vektör içeriğe gömülüyorsa, resim çıkarma yaklaşımı onları tamamen kaçırabilir.

IronBarcode Yaklaşımı

IronBarcode, PDF dosyalarını herhangi bir ek bağımlılık olmadan yerel olarak işler. PDF belgelerinden barkod okuma, resim dosyaları için kullanılan BarcodeReader.Read() API'siyle aynı olan tek bir yöntem çağrısıdır. Sayfa numaraları her sonuç nesnesine dahildir:

// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
Imports IronBarcode

' IronBarcode: native PDF reading from the same Read() method
Dim results = BarcodeReader.Read("document.pdf")

For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}")
Next
$vbLabelText   $csharpLabel

Manuel sayfa çıkarmaya, ikincil pakete ve ek lisans satın almaya gerek yoktur.

Oluşturma API'si

Spire.Barcode Yaklaşımı

Spire.Barcode'un üretim modeli, ayarlanabilir bir BarcodeSettings yapılandırma nesnesine odaklanır. Bir geliştirici ayarları başlatır, özellikleri tek tek atar, ayar nesnesini bir BarCodeGenerator'e geçirir ve ardından GenerateImage() ç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, birden fazla üretim işlemi boyunca tek bir örnek yeniden kullanıldığında yapılandırmaların yanlışlıkla paylaşıldığı anlamına gelir. Üretici sınıfı, kendi başına hiçbir yapılandırma mantığı taşımayan ek bir başlatma adımı ekler.

IronBarcode Yaklaşımı

IronBarcode, isteğe bağlı akıcı zincirleme ile statik bir fabrika yöntemi kullanır. Yönetilecek bir ayarlar nesnesi veya üretici örneği yoktur:

//IronBarcode generation
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
//IronBarcode generation
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üm IronBarcode lisans seviyelerinde 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 yayınlanan fiyatlandırması, iç kullanım sitesinin lisanslaması ve OEM dağıtım seviyelerini kapsar:

Lisans Fiyat Dağıtım
Site Lisansı (sadece dahili kullanım) $1,398 Tek konum
Site Aboneliği (1 yıllık güncellemeler/destek) $999/yıl Tek konum
Geliştirici OEM Aboneliği $3.395/yıl Halka açık / bulut / Docker
Site OEM Aboneliği $10.187/yıl Halka açık / bulut / Docker (en fazla 10 geliştirici)

Sadece OEM seviyeleri, halka açık web siteleri, Docker veya bulut uygulamaları için dağıtıma izin verir. Site (non-OEM) seviyesi, yalnızca bir coğrafi konumdaki dahili kullanım ile sınırlıdır. PDF barkod çıkarmak için Spire.PDF de gerekiyorsa, bu lisans ek bir maliyettir.

IronBarcode lisanslama dört süresiz seviyeyi kullanır:

Lisans Fiyat Geliştiriciler
Lite $749 1
Plus $1,499 3
Profesyonel $2,999 10
Unlimited $5,999 Unlimited

Tüm seviyeler sürdürülçü süresiz olup yıllık destek ve güncelleme aboneliği ekleme seçeneğine sahiptir. Spire.Barcode'un Site Aboneliğinde beş geliştirici ekibi, güncellemeler ve destek için her yıl $999 öder; eşdeğer IronBarcode Profesyonelseviyesi, yenileme gerektirmeden tek seferlik $2.999 ile on geliştirmeye kadar kapsam sağlar.

API Eşleme Başvurusu

Spire.Barcode IronBarcode
new BarcodeScanner() Statik BarcodeReader.Read()
scanner.Scan(path, BarCodeType.X) BarcodeReader.Read(path)
BarCodeType.Code128 (gerekli parametre) Otomatik algılanan; eşdeğeri gerekmez
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() ilk parametresi
new BarCodeGenerator(settings) Gerekli değil; statik fabrika bunu değiştirir
generator.GenerateImage() + image.Save() .SaveAsPng(path) veya .SaveAsJpeg(path)
Spire.PDF (PDF okuma için) Gerekli değil; Yerleşik yerel PDF desteği
Spire.License.LicenseProvider.SetLicenseKey("key") IronBarCode.License.LicenseKey = "key"

Takımların Spire.Barcode'dan IronBarcode'a Geçmeyi Düşünmeleri Durumu

Karışık Formatlı Belge İşleme

Tek bir bilinen barkod formatı ile başlayıp zamanla format çeşitliliği büyüyen ekipler. Code128 etiketleriyle başlayan bir depolama uygulaması, DataMatrix, GS1-128 veya QR kodları kullanan tedarikçilerden sevkiyat alabilir. İş akışına giren her yeni format, aday dizisini tür tahmin döngüsünde güncellemeyi, algılama mantığını yeniden test etmeyi ve hiçbir mevcut formatın yineleme sırasından etkilenmediğini 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 bu yükün tamamen ortadan kaldırılıp kaldırılmayacağını değerlendirilir.

PDF Entegrasyonu

Belge ağırlıklı uygulamalar genellikle barkodların bağımsız görüntüler yerine PDF dosyalarından çıkarılması gereken bir anla karşılaşır. Bir Spire.Barcode iş akışında, bu geçiş bir Spire.PDF lisansı edinmeyi gerektirir, ikinci bir paketi entegre etmeyi ve herhangi bir barkod okuma işlemi gerçekleşmeden önce sayfa yineleme ve görüntü çıkarma altyapısı yazmayı gerektirir. İlk satın alımda bu gereksinimi öngörmeyen ekipler, barkod okuma işlemine kavramsal olarak ait olan bir görev için iki ürün lisansını ve iki API yüzeyini yönetirken kendilerini bulurlar. PDF desteğinin ayrı bir satın alma gerektirdiğinin öğrenilmesi, ürün seçimini yeniden değerlendirmek için yaygın bir tetikleyici olur.

Ücretsiz Seviye 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ğerlendirmede önerilenden farklı davrandığını rapor eder. Bu, tasarıma göredir: Ücretsiz seviye, okuma performansını kasıtlı olarak düşürür ve semoloji setini kısıtlar, bu da değerlendirme sırasında yapılan kıyaslamaların ve format kapsamı testlerinin ticari dağıtıma aktarılmadığı anlamına gelir. Bir ekip bu tutarsızlığı satın aldıktan sonra keşfettiğinde, deneme davranışının üretim davranışını temsil eden alternatifler ararlar.

Ürün Sayısını Azaltma

Teknoloji yığınını standartlaştıran kuruluşlar bazen Spire.Barcode'u, her biri kendi lisans maliyeti ve yenileme döngüsüne sahip olan E-iceblue ürünlerinin büyüyen bir envanterinde yalnızca bir bileşen olarak tanımlar. Spire.Barcode'un birincil itici gücü, bir belge işleme hattı içinde barkod okuma ise — Spire.Doc veya Spire.XLS ile derin entegrasyon yerine — ekipler, tek bir bağımsız barkod kütüphanesinin lisans karmaşıklığını ve destek yüzeyini azaltıp azalmayacağını değerlendirir.

Genel Geçiş Dikkat Edilmesi Gereken Hususlar

Barkod Türü Parametresini Kaldırma

Bir 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 tahmin döngüleri — aday BarCodeType değerleri üzerinden yineleme yapan 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öner.IronBarcode bir BarcodeResults koleksiyonu döner. string[] atama veya bu türü bekleyen yöntemlere sonuçları geçiren çağrı noktaları güncellenmelidir. Bir dizi olarak değerleri çıkarmak .Select(r => r.Value).ToArray() kullanır; ilk sonucu elde etmek .First()?.Value kullanır.

Spire.PDF Paketini Kaldırma

Spire.PDF yalnızca PDF dosyalarından barkod çıkarmayı desteklemek amacıyla yüklendiyse, IronBarcode'a geçiş yapıldıktan sonra kaldırılabilir. Tüm using Spire.Pdf; içe aktarımları ve manuel sayfa yineleme blokları, tek bir BarcodeReader.Read("file.pdf") çağrısıyla değiştirilir. Spire.PDF barkod çıkarma dışında diğer belge işlemleri için kullanılıyorsa, tutulmalıdır ve yalnızca barkodla ilgili kod yolları değiştirilmelidir.

Ad Alanı Değişiklikleri

using Spire.Barcode;, using IronBarCode; ile değiştirin. BarCodeType enumu, oluşturma için BarcodeEncoding ile değiştirilir ve okuma için eşdeğeri gerekmez. Lisans başlatma, uygulama başlatmada tek bir IronBarCode.License.LicenseKey özellik atamasına dönüşür.

Ek IronBarcode Yetenekleri

Yukarıdaki karşılaştırmalarda kapsam dışı bırakılan IronBarcode özellikleri şunlardır:

  • Toplu görüntü okuma: BarcodeReader.Read(), dosya yolu dizilerini, Stream nesnelerini ve Bitmap örneklerini kabul eder, girdi koleksiyonu üzerinde manuel döngü olmadan toplu işlem yapmayı sağlar.
  • BarcodeReaderOptions: Okuma hızı, çoklu barkod algılama, maksimum adaylar ve görüntü iyileştirme ön işleme, Read()'e geçirilen tek bir seçenek nesnesi aracılığıyla yapılandırılabilir.
  • SVG ve HTML çıktısı: BarcodeWriter.CreateBarcode(), web'de gömülebilir barkod çıktısı sağlayarak, raster görüntü formatlarına ek olarak .SaveAsSvg() ve .SaveAsHtmlFile() destekler.
  • Logo ile QR kodu: QRCodeWriter.CreateQrCode(), tüm lisans aşamalarında AddBrandLogo() desteğine sahiptir, özel bir resmin QR kodu merkezine birleştirilmesine olanak tanır ve uygun hata düzeltme seviyelerinde tarama güvenilirliğini etkilemez.
  • Akış ve bayt dizisi çıktısı: Üretilen barkodlar doğrudan depolama veya ara dosya olmadan HTTP yanıt yazımı için Stream veya byte[] olarak ihraç edilebilir.
  • GS1-128 ve yapılandırılmış sembolojiler: IronBarcode, Spire.Barcode ticari seviyede mevcut olandan öteye yapılandırılmış GS1 sembolojileri için destek içerir.

.NET Uyumluluğu ve Geleceğe Hazırlık

IronBarcode,.NET Framework4.6.2 ve sonrasını, .NET Core 3.1 ve mevcut .NET sürümlerini destekler. Kütüphane, Windows, Linux ve macOS üzerinde test edilmiştir ve ek doğal bağımlılık yapılandırması gerektirmeden Docker konteynerlerinde çalışır. Spire.Barcode, çapraz platform .NET dağıtımını da destekler, ancak kullanımda olan sürüme bağlı olarak Linux ve Docker yapılandırmaları ek yerel kütüphane kurulumu gerektirebilir. IronBarcode'un düzenli yayın temposu, yeni C# dil özelliklerinin ve .NET çalışma zamanı iyileştirmelerinin yanı sıra platform uyumluluk güncellemeleriyle birleştirilmesini sağlar.

Sonuç

Spire.Barcode ve IronBarcode, barkod okuma sorununu temelden farklı pozisyonlardan ele alır. Spire.Barcode, format bilgisini arayan üzerinde konumlandırır — her tarama işlemi, geliştiricinin önceden semoloji belirtmesini gerektirir; bu, kapalı formatlı iş akışlarında kullanılabilir bir kısıtlama ve açık formatlı olanlarda bakım yüküdür. IronBarcode, format algılamayı kütüphanede yapar, tür parametresi gerektirmez ve sonuç içinde algılanan formatı döndürür.

Spire.Barcode, özellikle ekip zaten E-iceblue ürün ekosistemine yatırım yapmışsa, tek bir garanti edilmiş barkod formatı işleyici uygulamalar için makul bir seçimdir. Ayar nesne oluşturma modeli, açık yapılandırmayı tercih eden geliştiriciler için aşina, ve ticari lisans tek geliştirici projeleri 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 tahmin edilemez veya büyümekte olduğu, PDF barkod çıkarmanın birinci sınıf bir gereksinim olduğu ve değerlendirme doğruluğunun önemli olduğu uygulamalar için daha uygundur. Deneme, tam üretim hızında ve tüm semoloji setiyle çalışır, bu da değerlendirme sırasında yapılan performans kıyaslamalarını ve format kapsam testlerini doğrudan üretim dağıtımı için geçerli kılar. Yerel PDF desteği, ikincil kütüphane ve ilgili lisans yükünü ortadan kaldırır. Takımlar, Spire.Barcode'a alternatıf olarak IronBarcode'u değerlendirdiğinde, Spire.Barcode alternatif genel bakış, karşılaştırma hakkında ek bağlam sağlar.

Karar nihayetinde formatın öngörülebilirliği ve iş akışı kapsamına dayanmaktadır. Sabit bir Code128 etiket standardına sahip ve PDF kaynak belgeleri olmayan bir depo sistemi, IronBarcode'un otomatik algılamayı tercih etmesi için pratik bir neden yoktur. Dış tedarikçilerden barkodları içe alan, karışık simboyolojilerle çalışan ve PDF eklerinden okuyan bir belge işleme hattı, zorunlu tür parametresi ve iki kütüphaneli PDF gereksinimi, IronBarcode'un ortadan kaldırdığı devam eden bakım maliyetleri bulur.

Sıkça Sorulan Sorular

Spire.Barcode nedir?

Spire.Barcode, C# uygulamalarında barkod oluşturma ve okuma için kullanılan bir .NET barkod kütüphanesidir. Geliştiricilerin .NET projeleri için barkod çözümü seçerken değerlendirdikleri birkaç alternatiften biridir.

Spire.Barcode ile IronBarcode arasındaki ana farklar nelerdir?

IronBarcode, hiçbir örnek yönetimi gerektirmeyen statik, durumdan bağımsız bir API kullanır, oysa Spire.Barcode genellikle kullanım öncesinde örnek oluşturma ve yapılandırmayı gerektirir. IronBarcode ayrıca yerel PDF desteği, otomatik format algılama ve tüm ortamlar arasında tek anahtarla lisanslama sağlar.

IronBarcode lisanslamak Spire.Barcode'dan daha mı kolay?

IronBarcode hem geliştirme hem de üretim dağıtımlarını kapsayan tek bir lisans anahtarı kullanır. Bu, SDK anahtarlarını çalışma zamanı anahtarlarından ayıran lisanslama sistemlerine kıyasla CI/CD hatlarını ve Docker yapılandırmalarını basitleştirir.

IronBarcode, Spire.Barcode'un desteklediği tüm barkod formatlarını destekliyor mu?

IronBarcode, QR Code, Code 128, Code 39, DataMatrix, PDF417, Aztek, EAN-13, UPC-A, GS1 ve daha birçokları dahil olmak üzere 30'dan fazla barkod sembolojisini destekler. Format otomatik algılama, açıkça format sayımını gerektirmez.

IronBarcode doğal PDF barkod okuma desteği sunuyor mu?

Evet. IronBarcode, ayrı bir PDF render kütüphanesi gerektirmeden, BarcodeReader.Read('document.pdf') kullanarak PDF dosyalarından doğrudan barkod okur. Sayfa bazında sonuçlar sayfa numarası, barkod formatı, değeri ve güven puanını içerir.

IronBarcode, Spire.Barcode'a kıyasla toplu işlemi nasıl ele alıyor?

IronBarcode'un statik yöntemleri durum terkibesizdir ve doğal olarak thread-safe'dir, bu da thread başına örnek yönetimi olmadan Parallel.ForEach'in doğrudan kullanımına olanak tanır. Herhangi bir fiyatlandırma seviyesinde bir throughput tavanı 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 paketinde destekler. Platform hedefleri arasında Windows x64/x86, Linux x64 ve macOS x64/ARM bulunur.

Bir .NET projesine IronBarcode'u nasıl kurarım?

IronBarcode'u NuGet üzerinden kurun: Paket Yöneticisi Konsolunda 'Install-Package IronBarCode' komutunu veya CLI'da 'dotnet add package IronBarCode' komutunu çalıştırın. Ek bir SDK yükleyicisi veya çalışma zamanı dosyası gerekmez.

IronBarcode'u, Spire.Barcode'dan farklı olarak, satın almadan önce değerlendirebilir miyim?

Evet. IronBarcode'un deneme modu, yalnızca oluşturulan çıktı görüntülerine bir filigran ekleyerek, barkod değerlerini tam olarak döndürür. Satın almadan önce, kendi belgelerinizde okuma doğruluğunu kıyaslayabilirsiniz.

Spire.Barcode ile IronBarcode arasındaki fiyatlandırma farkı nedir?

IronBarcode, geliştirme ve üretimi kapsayan, sürekli bir tek geliştirici lisansı için $749'dan başlar. Fiyat detayları ve hacim seçenekleri IronBarcode lisanslama sayfasında mevcuttur. Ayrı bir çalışma zamanı lisansı gerekliliği yoktur.

Spire.Barcode'den IronBarcode'a geçmek kolay mı?

Spire.Barcode'den IronBarcode'a geçiş, öncelikle örnek tabanlı API çağrılarının IronBarcode'un statik yöntemleriyle değiştirilmesini, lisans şablonlarının kaldırılmasını ve sonuç özelliği adlarının güncellenmesini içerir. Çoğu geçiş, kod eklemekten ziyade kodu azaltmayı içerir.

IronBarcode, logolu QR kodları üretebiliyor mu?

Evet. QRCodeWriter.CreateQrCode().AddBrandLogo('logo.png'), konfigüre edilebilir hata düzeltme ile QR koduna yerel olarak bir marka görüntüsü yerleştirir. Renkli QR kodları, ChangeBarCodeColor() ile de desteklenir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

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