Altbilgi içeriğine atla
VIDEOLAR

C#'ta QR Kodlarını Özelleştirme ve Logolar Ekleme | IronBracode

Syncfusion Barcode'dan IronBarcode'ye Geçiş

Bu kılavuz, Syncfusion'un barcode kontrollerinden WinForms ve WPF için SfBarcode, Blazor ve MAUI için SfBarcodeGenerator 'den IronBarcode'a tam bir geçiş yolu sunar. Transformasyonun yapısal nedenlerini, NuGet paketlerinin değiştirilmesi ve lisans kurulumunu gösteren adım adım hızlı bir başlangıç, her yaygın senaryo için yapılmış tam önce-sonra kod örneklerini ve mevcut bir kod tabanını denetleme için bir geçiş kontrol listesini kapsar. Proje aynı zamanda başkaSyncfusionbileşenleri (tablolar, grafikler, zamanlayıcılar) kullanıyorsa, bu paketlere ve kayıtlarına dokunulmaz — yalnızca barkodla ilgili özel kod değişir.

NedenSyncfusionBarkoddan Geçiş Yapmalısınız

Okuma Boşluğu: SfBarcode ve SfBarcodeGenerator, okuma yeteneği olmayan oluşturma kontrolleridir. Her iki sınıfta da .Read() veya .Scan() yöntemi yoktur. Bir proje, yüklenmiş görsellerden, taranan belgelerden ya da PDF dosyalarından barkod okumayı gerektirdiğinde,Syncfusionbarkod kontrolü ileriye doğru bir yol sunmaz.Syncfusionbelgeleri, ekipleri çözüm olarak Barcode Reader OPX'e yönlendirir, bu bağımsız bir ticari üründür ve bağımsız olarak satın alınmalı, lisanslanmalı ve sürdürülmelidir.

Ücretsiz Yazılımın Üzerine Ücretli OPX: Barcode Reader OPX, içerisinde ZXing.Net kullanır — Apache 2.0 lisansı altında yayınlanan açık kaynak bir barkod okuma kütüphanesi. Apache 2.0, izinli bir lisanstır; Herhangi bir .NET geliştiricisi, dotnet add package ZXing.Net ile ZXing.Net'i doğrudan kurabilir ve ticari uygulamalarda ücretsiz olarak kullanabilir. Tam birSyncfusionokuma ve oluşturma iş akışı, iki ayrıSyncfusionürününe, iki lisans anlaşmasına ve iki API yüzeyine ihtiyaç duyar — oysa okuma yeteneği, OPX'in sardığı ücretsiz kütüphaneden doğrudan sağlanabilirdi.

Topluluk Lisans Uçurumu: Syncfusion'ın Topluluk Lisansı, aynı anda ve sürekli olarak dört koşulun doğru olmasını gerektirir: 1.000.000 doların altında yıllık brüt gelir, beş veya daha az geliştirici, toplamda on veya daha az çalışan, ve 3.000.000 dolardan az toplam dış finansman. Hükümet organizasyonları, boyutundan bağımsız olarak uygun değildir. Herhangi tek bir koşulun aşılması, hemen ticari lisans yükümlülüğü yaratır. A Serisinin bir finansman turu, tipik olarak kapandığı gün 3.000.000 doları aşar ve takım boyutu veya gelirine bakılmaksızın bir lisans ücreti tetikler. Ticari geçiş $0'dan geliştirici başına yıllık bir Essential Studio aboneliğine gider — ve bu abonelik yalnızca barkod bileşenini değil, tüm seti kapsar. Syncfusion'un yayınlanmış yolu satıştan özel bir teklif.

Sürüm Özelinde Anahtar Döngüsü:Syncfusionlisans anahtarları, belirli Essential Studio sürüm aralıklarına bağlıdır. 24.x sürümünden 25.x'e yükseltmek, hesap portalından yeni bir anahtar almayı, o anahtarı her dağıtım ortamının sır yöneticisinde güncellemeyi ve üretimde deneme filigranlarının görünmesini önlemek için yeniden dağıtım yapmayı gerektirir. Sık sürüm döngüleri veya birden fazla dağıtım hedefi olan ekiplerde, bu dönüşüm, altında yatan barkod görüntüsü oluşturmaktan orantısız olarak bir tekrarlayan operasyonel yük haline gelir.

Temel Sorun

Syncfusion'ın kontrol mimarisi, programatik dosya üretimini dolaylı hale getirir. SfBarcode ile bir barkod dosyası üretmek, bir Bitmap önceden tahsis etmeyi, DrawToBitmap çağırmayı ve ardından bitmap'i kaydetmeyi gerektirir - bu, Windows Forms çalışma zamanı bağımlılığı taşıyan bir WinForms render modelidir:

//SyncfusionSfBarcode: indirect file output through DrawToBitmap
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "SHIP-2024-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("shipping-label.png", ImageFormat.Png);
// Reading: not possible — requires separate OPX purchase
//SyncfusionSfBarcode: indirect file output through DrawToBitmap
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "SHIP-2024-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("shipping-label.png", ImageFormat.Png);
// Reading: not possible — requires separate OPX purchase
Imports Syncfusion.Licensing
Imports System.Drawing
Imports System.Drawing.Imaging

' SyncfusionSfBarcode: indirect file output through DrawToBitmap
SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "SHIP-2024-001"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.Width = 400
barcode.Height = 150

Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("shipping-label.png", ImageFormat.Png)
End Using
' Reading: not possible — requires separate OPX purchase
$vbLabelText   $csharpLabel

IronBarcode, dosyaları doğrudan üretir ve aynı paketle okur:

// IronBarcode: direct generation and reading in one package
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("shipping-label.png");

// Read — same package, no additional product required
var results = BarcodeReader.Read("shipping-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
// IronBarcode: direct generation and reading in one package
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

// Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPng("shipping-label.png");

// Read — same package, no additional product required
var results = BarcodeReader.Read("shipping-label.png");
foreach (var result in results)
    Console.WriteLine($"{result.Format}: {result.Value}");
Imports IronBarCode

' IronBarcode: direct generation and reading in one package
License.LicenseKey = "YOUR-LICENSE-KEY"

' Generate
BarcodeWriter.CreateBarcode("SHIP-2024-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPng("shipping-label.png")

' Read — same package, no additional product required
Dim results = BarcodeReader.Read("shipping-label.png")
For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

IronBarcode vsSyncfusionBarcode: Özellik Karşılaştırması

Özellik Syncfusion Barcode IronBarcode
Barkod oluşturma Evet — UI kontrolü (WinForms, WPF, Blazor, MAUI) Evet — statik API, tüm ortamlar
Barkod okuma Hayır — ayrı bir Barcode Reader OPX gereklidir Evet — aynı paket
OPX okuma ürünü, ZXing.Net (Apache 2.0) sarmalıyor Evet Yok
PDF barcode output Hayır — ek olarak Syncfusion.Pdf gereklidir Evet — SaveAsPdf() yerleşik
PDF barkod okuma Hayır Evet — yerel
Sunucu tarafı / arayüzsüz üretim WinForms çalışma zamanı gerektirir (DrawToBitmap) Yerel — hiçbir UI bağımlılığı yok
Docker / Linux dağıtımı Sınırlı Tam destek
ASP.NET Core minimal API Doğrudan desteklenmez Tam destek
Gömülü logo ile QR kod Hayır Evet — .AddBrandLogo()
Okumada otomatik format algılama Yok Evet
Topluluk / ücretsiz seviye Topluluk Lisansı (dört eş zamanlı koşul) 30 günlük deneme (yalnızca filigran)
Ticari lisans modeli Yıllık abonelik (Essential Studio) Sürekli (tek seferlik, ironsoftware.com/csharp/barcode/licensing adresine bakın)
Lisans anahtarı kapsamı Sürüm bazında, ana NuGet güncellemeleri ile döner Büyük sürüm içinde kararlı sürüm
Platform kayıt adımları 3–4 adım (RegisterLicense + AddSyncfusionBlazor + ConfigureSyncfusionCore + razor importları) Tek satır, tüm platformlar
1D format aralığı Code 128, Code 39, EAN, UPC, Codabar ve diğerleri TümSyncfusionformatları artı PDF417, Aztec, MaxiCode, GS1, USPS IMb ve 50+
2D format aralığı QR Code, DataMatrix QR Code, DataMatrix, PDF417, Micro PDF417, Aztec, MaxiCode

Hızlı Başlangıç

Adım 1: NuGet Paketlerini Değiştirin

Kullanılan platform içinSyncfusionbarkod paketini kaldırın. Proje birden çok platformu hedefliyorsa, her biri için kaldırma işlemini gerçekleştirin:

# Blazor
dotnet remove package Syncfusion.Blazor.BarcodeGenerator

# WinForms
dotnet remove package Syncfusion.SfBarcode.Windows

# WPF
dotnet remove package Syncfusion.SfBarcode.WPF

# MAUI
dotnet remove package Syncfusion.Maui.Barcode
# Blazor
dotnet remove package Syncfusion.Blazor.BarcodeGenerator

# WinForms
dotnet remove package Syncfusion.SfBarcode.Windows

# WPF
dotnet remove package Syncfusion.SfBarcode.WPF

# MAUI
dotnet remove package Syncfusion.Maui.Barcode
SHELL

Barkod paketini kaldırdıktan sonra projede başkaSyncfusionpaketi kalmazsa, lisans paketini de kaldırın:

dotnet remove package Syncfusion.Licensing
dotnet remove package Syncfusion.Licensing
SHELL

IronBarcode'u yükleyin — tüm platformlar için tek bir paket:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

Adım 2: Ad Alanlarını Güncelleyin

Syncfusion barkod ad alanlarını kaldırın ve IronBarcode ad alanını ekleyin:

// Remove these (barcode-specific; leave others if non-barcodeSyncfusioncontrols remain)
using Syncfusion.Windows.Forms.Barcode;
using Syncfusion.Licensing;
// @using Syncfusion.Blazor.BarcodeGenerator  (in _Imports.razor)

// Add this
using IronBarCode;
// Remove these (barcode-specific; leave others if non-barcodeSyncfusioncontrols remain)
using Syncfusion.Windows.Forms.Barcode;
using Syncfusion.Licensing;
// @using Syncfusion.Blazor.BarcodeGenerator  (in _Imports.razor)

// Add this
using IronBarCode;
Imports IronBarCode
$vbLabelText   $csharpLabel

Adım 3: Lisansa İzin Verin

Uygulama başlangıcındakiSyncfusionlisans kaydını ve platform yapılandırmasını kaldırın. Ardından aynı başlangıç konumunda tek bir IronBarcode lisans satırı ekleyin:

// Remove from Program.cs / App.xaml.cs / MauiProgram.cs:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");
builder.Services.AddSyncfusionBlazor();         // Blazor only — remove if no otherSyncfusioncontrols
builder.ConfigureSyncfusionCore();              // MAUI only — remove if no otherSyncfusioncontrols

// Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove from Program.cs / App.xaml.cs / MauiProgram.cs:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");
builder.Services.AddSyncfusionBlazor();         // Blazor only — remove if no otherSyncfusioncontrols
builder.ConfigureSyncfusionCore();              // MAUI only — remove if no otherSyncfusioncontrols

// Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove from Program.vb / App.xaml.vb / MauiProgram.vb:
Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")
builder.Services.AddSyncfusionBlazor()         ' Blazor only — remove if no other Syncfusion controls
builder.ConfigureSyncfusionCore()              ' MAUI only — remove if no other Syncfusion controls

' Add at the same startup point:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

CI/CD hatları ve Docker konteynerleri için anahtarı bir ortam değişkeninde saklayın:

IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
Imports System

IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
$vbLabelText   $csharpLabel

Kod Göç Örnekleri

WinForms SfBarcode to BarcodeWriter

WinForms geçişi, DrawToBitmap dolaylılığını ortadan kaldırır ve bunun yerine doğrudan dosya-çıkış zinciri ile değiştirir.Syncfusionmodeli, bilinen boyutlarda bir Bitmap önceden ayırmayı gerektirir; IronBarcode, boyutları üretim çağrısının bir parçası olarak hesaplar.

Syncfusion Yaklaşımı:

using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "ORD-20240315-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("order-label.png", ImageFormat.Png);
using Syncfusion.Windows.Forms.Barcode;
using System.Drawing;
using System.Drawing.Imaging;

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY");

var barcode = new SfBarcode();
barcode.Text = "ORD-20240315-001";
barcode.Symbology = BarcodeSymbolType.Code128A;
barcode.BarHeight = 100;
barcode.NarrowBarWidth = 1;
barcode.ShowText = true;
barcode.Width = 400;
barcode.Height = 150;

using var bitmap = new Bitmap(barcode.Width, barcode.Height);
barcode.DrawToBitmap(bitmap, barcode.ClientRectangle);
bitmap.Save("order-label.png", ImageFormat.Png);
Imports Syncfusion.Windows.Forms.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense("YOUR-VERSION-SPECIFIC-KEY")

Dim barcode As New SfBarcode()
barcode.Text = "ORD-20240315-001"
barcode.Symbology = BarcodeSymbolType.Code128A
barcode.BarHeight = 100
barcode.NarrowBarWidth = 1
barcode.ShowText = True
barcode.Width = 400
barcode.Height = 150

Using bitmap As New Bitmap(barcode.Width, barcode.Height)
    barcode.DrawToBitmap(bitmap, barcode.ClientRectangle)
    bitmap.Save("order-label.png", ImageFormat.Png)
End Using
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .AddBarcodeText()
    .SaveAsPng("order-label.png");
using IronBarCode;

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .AddBarcodeText()
    .SaveAsPng("order-label.png");
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"

BarcodeWriter.CreateBarcode("ORD-20240315-001", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .AddBarcodeText() _
    .SaveAsPng("order-label.png")
$vbLabelText   $csharpLabel

BarcodeSymbolType.Code128A, BarcodeEncoding.Code128 ile eşleşir. DrawToBitmap + Bitmap.Save dizisi .SaveAsPng() 'e çöker. Barkod diske kaydedilmek yerine bir WinForms PictureBox içinde gösterilmeliyse, görüntüyü kontrol içine yüklemek için .ToPngBinaryData() kullanın. IronBarcode'daki 1D barkod formatlarının tam aralığı,Syncfusionkontrolünün desteklediği listeyi çok daha fazla genişletir.

Blazor SfBarcodeGenerator'dan Minimal API Uç Noktasına

Blazor geçişi yapısal bir değişikliktir, satır-satır yerine geçmez. SfBarcodeGenerator, Syncfusion'un JavaScript katmanı aracılığıyla tarayıcıda render edilen bir Razor bileşenidir. IronBarcode'un bir Razor bileşeni yoktur; sunucu tarafı bir kütüphanedir. Yerine koyma deseni, sunucuda barkod baytlarını geri döndürüp bir görüntü kaynağı olarak Razor sayfasında referans alınan minimal bir API uç noktasıdır.

Syncfusion Yaklaşımı:

@page "/fulfillment"
@using Syncfusion.Blazor.BarcodeGenerator

<SfBarcodeGenerator
    Width="300px"
    Height="150px"
    Type="BarcodeType.Code128"
    Value="@orderNumber">
    <BarcodeGeneratorDisplayText Visibility="true"></BarcodeGeneratorDisplayText>
</SfBarcodeGenerator>

@code {
    private string orderNumber = "ORD-20240315-001";
}

IronBarcode Yaklaşımı:

Program.cs içinde bir oluşturma bitiş noktası ekleyin:

using IronBarCode;

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .AddBarcodeText()
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
using IronBarCode;

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .AddBarcodeText()
        .ToPngBinaryData();

    return Results.File(bytes, "image/png");
});
Imports IronBarCode

app.MapGet("/barcode/{value}", Function(value As String)
    Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
        .ResizeTo(300, 150) _
        .AddBarcodeText() _
        .ToPngBinaryData()

    Return Results.File(bytes, "image/png")
End Function)
$vbLabelText   $csharpLabel

Razor bileşeninde uç noktaya referans verin:

@page "/fulfillment"

<img src="/barcode/@orderNumber" alt="Order barcode: @orderNumber" />

@code {
    private string orderNumber = "ORD-20240315-001";
}

Bu uç nokta, bağımsız test edilebilir, herhangi bir HTTP istemcisinden tekrar kullanılabilir ve Blazor Server, Blazor WebAssembly'nin bir barındırılan API ile ve diğer tüm web ön yüzleriyle uyumludur.

QR Kod Oluşturma

Syncfusion QR bileşeni de hiç bir sunucu tarafı çıktı yolu olmayan tarayıcıda render edilir. IronBarcode, sunucu tarafında doğrudan dosya çıktısı ile QR kodlarını üretir.

Syncfusion Yaklaşımı:

@using Syncfusion.Blazor.BarcodeGenerator

<SfQRCodeGenerator
    Width="300px"
    Height="300px"
    Value="https://example.com/product/ABC-123">
    <QRCodeGeneratorDisplayText Visibility="false">
    </QRCodeGeneratorDisplayText>
</SfQRCodeGenerator>

IronBarcode Yaklaşımı:

using IronBarCode;

// Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300,
    QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("product-qr.png");

// QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("product-qr-branded.png");
using IronBarCode;

// Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300,
    QRCodeWriter.QrErrorCorrectionLevel.High)
    .SaveAsPng("product-qr.png");

// QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500,
    QRCodeWriter.QrErrorCorrectionLevel.Highest)
    .AddBrandLogo("company-logo.png")
    .SaveAsPng("product-qr-branded.png");
Imports IronBarCode

' Standard QR code
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 300, QRCodeWriter.QrErrorCorrectionLevel.High) _
    .SaveAsPng("product-qr.png")

' QR code with embedded brand logo — not available in Syncfusion
QRCodeWriter.CreateQrCode("https://example.com/product/ABC-123", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest) _
    .AddBrandLogo("company-logo.png") _
    .SaveAsPng("product-qr-branded.png")
$vbLabelText   $csharpLabel

OPX Okuma Değişimi

Proje Barcode Reader OPX kullanmışsa - veya bir okuma gereksinimini gelecekteki bir OPX satın alımına ertelemişse - IronBarcode, önceden yüklenmiş olan paketle o bağımlılığı değiştirir. İkincil ürün, ikinci lisans yok.

Syncfusion Yaklaşımı (Barcode Reader OPX):

// Requires separateSyncfusion BarcodeReader OPX purchase
// OPX wraps ZXing.Net internally (Apache 2.0 — free to use directly)
using Syncfusion.BarcodeReader;

var reader = new BarcodeReader();
var results = reader.ReadBarcodes("warehouse-scan.png");
foreach (var result in results)
    Console.WriteLine($"Value: {result.Value}");
// Requires separateSyncfusion BarcodeReader OPX purchase
// OPX wraps ZXing.Net internally (Apache 2.0 — free to use directly)
using Syncfusion.BarcodeReader;

var reader = new BarcodeReader();
var results = reader.ReadBarcodes("warehouse-scan.png");
foreach (var result in results)
    Console.WriteLine($"Value: {result.Value}");
Imports Syncfusion.BarcodeReader

Dim reader As New BarcodeReader()
Dim results = reader.ReadBarcodes("warehouse-scan.png")
For Each result In results
    Console.WriteLine($"Value: {result.Value}")
Next
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

// Included in the same NuGet package as generation — no second product required
var results = BarcodeReader.Read("warehouse-scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
}
using IronBarCode;

// Included in the same NuGet package as generation — no second product required
var results = BarcodeReader.Read("warehouse-scan.png");
foreach (var result in results)
{
    Console.WriteLine($"Format: {result.Format}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Confidence: {result.Confidence}%");
}
Imports IronBarCode

' Included in the same NuGet package as generation — no second product required
Dim results = BarcodeReader.Read("warehouse-scan.png")
For Each result In results
    Console.WriteLine($"Format: {result.Format}")
    Console.WriteLine($"Value: {result.Value}")
    Console.WriteLine($"Confidence: {result.Confidence}%")
Next
$vbLabelText   $csharpLabel

barkod okuma dokümantasyonu, yükleyici işleyiciler için bayt dizilerinden okuma, hız ile doğruluk ayarı ve çoklu barkod tespiti konularını kapsar.

PDF Barkod Üretimi

Syncfusion barkod kontrollerinin PDF çıkışı yoktur. IronBarcode, PDF'yi tam bir çıktı formatı olarak ele alır.

Syncfusion Yaklaşımı:

//Hayırdirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
// Step 1: Generate to Bitmap via DrawToBitmap
// Step 2: LoadSyncfusionPDF document
// Step 3: Insert bitmap as image element
// Two packages, two APIs, two license obligations
//Hayırdirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
// Step 1: Generate to Bitmap via DrawToBitmap
// Step 2: LoadSyncfusionPDF document
// Step 3: Insert bitmap as image element
// Two packages, two APIs, two license obligations
'Hayırdirect path — requires combining Syncfusion.Barcode.WinForms and Syncfusion.Pdf
' Step 1: Generate to Bitmap via DrawToBitmap
' Step 2: LoadSyncfusionPDF document
' Step 3: Insert bitmap as image element
' Two packages, two APIs, two license obligations
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

// Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("pallet-label.pdf");

// Read barcodes from an existing PDF
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
using IronBarCode;

// Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .SaveAsPdf("pallet-label.pdf");

// Read barcodes from an existing PDF
var pdfResults = BarcodeReader.Read("shipping-manifest.pdf");
foreach (var result in pdfResults)
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
Imports IronBarCode

' Generate directly to PDF — no secondary library required
BarcodeWriter.CreateBarcode("PALLET-2024-0891", BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .SaveAsPdf("pallet-label.pdf")

' Read barcodes from an existing PDF
Dim pdfResults = BarcodeReader.Read("shipping-manifest.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next
$vbLabelText   $csharpLabel

barkod PDF üretim kılavuzu, çok sayfalı PDF çıktıları ve barkodları diğer belge içeriği yanında gömme işlemlerini kapsar.

Syncfusion Barkod API'sinden IronBarcode'a Eşleme Referansı

Syncfusion IronBarcode
SyncfusionLicenseProvider.RegisterLicense("KEY") IronBarCode.License.LicenseKey = "key"
builder.Services.AddSyncfusionBlazor() Gerekli değil
builder.ConfigureSyncfusionCore() Gerekli değil
new SfBarcode() BarcodeWriter.CreateBarcode() (statik)
barcode.Text = "value" CreateBarcode() 'ın ilk parametresi
barcode.Symbology = BarcodeSymbolType.Code128A BarcodeEncoding.Code128
barcode.Symbology = BarcodeSymbolType.QRBarcode QRCodeWriter.CreateQrCode()
barcode.BarHeight = 100 .ResizeTo(width, 100)
barcode.ShowText = true .AddBarcodeText()
barcode.DrawToBitmap(bitmap, rect) .SaveAsPng(path)
Manuel BitmapMemoryStream .ToPngBinaryData()
<SfBarcodeGenerator Type="BarcodeType.Code128" Value="..."> API bitiş noktasında BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
<SfQRCodeGenerator Value="..."> API bitiş noktasında QRCodeWriter.CreateQrCode(value, size)
BarcodeType.Code128 (Blazor enum) BarcodeEncoding.Code128
Barcode Reader OPX (ayrı ürün, ZXing.Net sarması) BarcodeReader.Read(path) — yerel, aynı paket
Kontrolde okuma API'si yok BarcodeReader.Read(path)
Kontrolde PDF çıktısı yok .SaveAsPdf(path)
PDF okuma yok BarcodeReader.Read("document.pdf")

Yaygın Göç Sorunları ve Çözümleri

Sorun 1: NuGet Güncellemesi Sonrası Deneme Filigranları

Syncfusion: Essential Studio 24.x'ten 25.x'e yükselmesi, mevcut lisans anahtarını geçersiz kılar. Gizli anahtarlar deposunu güncellemeden önce oluşturulan herhangi bir çıktı bir deneme filigranı görüntüleyecektir. Bu sessiz bir hatadır — uygulama çalışmaya devam eder ancak uyumsuz çıktı üretir.

Çözüm:IronBarcode NuGet paketini güncelledikten sonra, lisans anahtarı ana sürüm içinde değişmez. Küçük veya hata düzeltme sürümleri için gizli güncelleme veya yeniden dağıtım gerekmez. Yeni ana sürüme yükseltilirken, uygulama giriş noktasında anahtarı bir kez güncelleyin:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
Imports IronBarCode

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Sorun 2: İzole Ortamlarda DrawToBitmap Başarısız Olur

Syncfusion: SfBarcode.DrawToBitmap, Windows Forms renderleme hattına dayanır. Bir ASP.NET Core işleminde, Azure Fonksiyonu veya Linux Docker konteynerinde, DrawToBitmap çağrısı InvalidOperationException fırlatır veya boş bir bitmap üretir çünkü bir Windows Forms mesaj döngüsü mevcut değildir.

Çözüm: BarcodeWriter.CreateBarcode() ile değiştirin. IronBarcode, herhangi bir UI çalışma zamanı bağımlılığı olmadan yönetilen kodda üretim yapar:

// Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .ToPngBinaryData();
// Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
    .ResizeTo(400, 150)
    .ToPngBinaryData();
' Works in ASP.NET Core, Azure Functions, Docker on Linux, console apps
Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
    .ResizeTo(400, 150) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

Sorun 3: SfBarcodeGenerator'un Sunucu Tarafı Çıkışı Yok

Syncfusion: SfBarcodeGenerator, sunucu tarafı API yüzeyi olmayan bir Razor bileşenidir. Onu bir denetleyici eyleminde veya arka plan hizmetinde kullanma girişimleri, barkod baytları üretmek için uygun bir yöntem bulunamayacaktır.

Çözüm: Barkodu sunucu tarafında üreten ve bir HTTP yanıtı olarak geri döndüren bir minimal API uç noktası oluşturun. Razor bileşeninden bitiş noktasına bir <img src="..."> etiketi ile referans verin:

app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .ToPngBinaryData();
    return Results.File(bytes, "image/png");
});
app.MapGet("/barcode/{value}", (string value) =>
{
    var bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128)
        .ResizeTo(300, 150)
        .ToPngBinaryData();
    return Results.File(bytes, "image/png");
});
Imports Microsoft.AspNetCore.Builder
Imports Microsoft.AspNetCore.Http

app.MapGet("/barcode/{value}", Function(value As String)
                                   Dim bytes = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128) _
                                       .ResizeTo(300, 150) _
                                       .ToPngBinaryData()
                                   Return Results.File(bytes, "image/png")
                               End Function)
$vbLabelText   $csharpLabel

Sorun 4: Okuma Yeteneği Eksik (OPX Satın Alınmadı)

Syncfusion: OPX henüz satın alınmadığı için barkod okuma gerekliliğini erteleyen projeler, taşınacak okuma koduna sahip değildir. Baştan okuma yeteneği eklemek OPX temini, entegrasyonu ve yeni bir lisans sözleşmesi gerektirir.

Çözüm:IronBarcode okuma, aynı pakette dahildir. Hiçbir temin veya ikinci lisans gerekmez. Okuma gereken her yere BarcodeReader.Read(path) ekleyin:

var results = BarcodeReader.Read("incoming-scan.png");
var results = BarcodeReader.Read("incoming-scan.png");
Dim results = BarcodeReader.Read("incoming-scan.png")
$vbLabelText   $csharpLabel

Sorun 5: Geçiş Sırasında Topluluk Lisansı Süresinin Dolması

Syncfusion: Geçiş penceresi sırasında herhangi bir uygunluk eşiğini aşan (bir finansman turunu kapamak dahil olan) Topluluk Lisansını kullanan bir ekip,Syncfusionkontrollerinin geçiş tamamlanmadan önce geçerli çıktı üretmeyi bırakabileceğini görebilir.

Çözüm: IronBarcode'un 30 günlük denemesi herhangi bir gelir, personel sayısı, veya sermaye şartı olmaksızın tam değerlendirme sağlar. Deneme filigranı üretilmiş çıktıda görünür; satın alınmış bir lisans anahtarının etkinleştirilmesi bunu kaldırır.IronBarcode lisanslama modelinde kurumsal boyut eşikleri yoktur.

Syncfusion Barkod Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

Kod tabanını,Syncfusionbarkoduna referans veren her dosyayı bulmak için denetleyin:

grep -r "SyncfusionLicenseProvider.RegisterLicense\|AddSyncfusionBlazor\|ConfigureSyncfusionCore" --include="*.cs" .
grep -r "new SfBarcode\(\)\|SfBarcodeGenerator\|SfQRCodeGenerator" --include="*.cs" --include="*.razor" .
grep -r "BarcodeSymbolType\.\|BarcodeType\." --include="*.cs" --include="*.razor" .
grep -r "DrawToBitmap\|barcode\.Text\s*=" --include="*.cs" .
grep -r "Syncfusion\.Barcode\|Syncfusion\.Blazor\.BarcodeGenerator" --include="*.csproj" .
grep -r "SyncfusionLicenseProvider.RegisterLicense\|AddSyncfusionBlazor\|ConfigureSyncfusionCore" --include="*.cs" .
grep -r "new SfBarcode\(\)\|SfBarcodeGenerator\|SfQRCodeGenerator" --include="*.cs" --include="*.razor" .
grep -r "BarcodeSymbolType\.\|BarcodeType\." --include="*.cs" --include="*.razor" .
grep -r "DrawToBitmap\|barcode\.Text\s*=" --include="*.cs" .
grep -r "Syncfusion\.Barcode\|Syncfusion\.Blazor\.BarcodeGenerator" --include="*.csproj" .
SHELL

Herhangi bir geçiş kodu yazmadan önce aşağıdakini belgeleyin:

  • SyncfusionLicenseProvider.RegisterLicense çağrısı yapan her dosyayı listeleyin
  • Her SfBarcode örneklendirmesi ve mülk atamalarını listeleyin
  • Her <SfBarcodeGenerator> ve <SfQRCodeGenerator> Razor bileşeni kullanımlarını listeleyin
  • Her DrawToBitmap çağrısını ve aşağı akış kaydetme veya görüntüleme yolunu listeleyin Barcode Reader OPX'in kurulup kurulmadığını doğrulayın; kurulmuşsa, her okuma çağrısını listeleyin

Kod Güncelleme Görevleri

  1. Projedeki her platform içinSyncfusionbarkod NuGet paketi(lerini) kaldırın
  2. BaşkaSyncfusionkontrolü kalmadıysa Syncfusion.Licensing NuGet paketini kaldırın
  3. IronBarcode NuGet paketini yükleyin
  4. Uygulama giriş noktasında SyncfusionLicenseProvider.RegisterLicense("KEY") 'yi IronBarCode.License.LicenseKey = "KEY" ile değiştirin
  5. BaşkaSyncfusionkontrolü kalmadıysa builder.Services.AddSyncfusionBlazor() 'yi kaldırın
  6. BaşkaSyncfusionkontrolü kalmadıysa builder.ConfigureSyncfusionCore() 'yi kaldırın
  7. Geçerliyse @using Syncfusion.Blazor ve @using Syncfusion.Blazor.BarcodeGenerator 'yi _Imports.razor 'dan kaldırın
  8. using Syncfusion.Windows.Forms.Barcode ve using Syncfusion.Licensing 'yi using IronBarCode ile değiştirin
  9. Her new SfBarcode() + property atamaları + DrawToBitmap bloğunu BarcodeWriter.CreateBarcode(value, BarcodeEncoding.X).ResizeTo(w, h).SaveAsPng(path) ile değiştirin
  10. BarcodeSymbolType.Code128A (ve eşdeğerini) BarcodeEncoding.Code128 ile değiştirin 11.BarcodeType.Code128 (Blazor enum)'u BarcodeEncoding.Code128 ile değiştirin
  11. Her <SfBarcodeGenerator> Razor bileşenini minimal bir API bitiş noktası ve bileşende bir <img src="..."> referansı ile değiştirin
  12. Her <SfQRCodeGenerator> Razor bileşenini bir QRCodeWriter.CreateQrCode() bitiş noktası ve bir <img src="..."> referansı ile değiştirin
  13. Tüm Barcode Reader OPX okuma çağrılarını BarcodeReader.Read(path) ile değiştirin
  14. OPX'in satın alınmaması nedeniyle daha önce eksik olan okuma yeteneği her neredeyse oraya BarcodeReader.Read(path) ekleyin

Geçiş Sonrası Testler

Üretilen barkod görüntülerinin, bir donanım tarayıcı veya referans okuyucu uygulama kullanarak tarama için geçerli olduğunu doğrulayın Lisans anahtarı etkinleştirildikten sonra, üretilmiş çıktıda hiçbir deneme filigranı olmadığını doğrulayın

  • Her barkod türü için, BarcodeReader.Read() 'nin beklenen değeri ve formatı döndürdüğünü doğrulayın
  • Sayfa boyutlarının ve barkod boyutlarının tasarım gereksinimlerine uyduğunu doğrulamak için .SaveAsPdf() ile PDF çıktısını test edin
  • Razor bileşeni içinde test etmeden önce Blazor minimal API uç noktasını doğrudan (tarayıcı veya HTTP istemcisi aracılığıyla) test edin
  • Docker ve Linux dağıtımının Windows geliştirme makineleri ile aynı çıktıyı verdiğinden emin olun
  • Kalan hiçbir SfBarcode, SfBarcodeGenerator, DrawToBitmap, BarcodeSymbolType veya SyncfusionLicenseProvider referansı olmadığını doğrulamak için son bir grep denetimi yapın

IronBarcode'a Geçmenin Temel Faydaları

Birleştirilmiş Oluşturma ve Okuma: Geçişten sonra, hem oluşturma hem de okuma, tek bir NuGet paketi aracılığıyla tek bir lisans altında çalışır. Satın alınacak ikincil bir ürün yok, öğrenilecek ikinci bir API yüzeyi yok ve lisans bütçesinden pay alabilecek bir ZXing.Net sarmalayıcı bağımlılığı mevcut değil, bu kaynak doğrudan açık kaynak kütüphaneye aktarılabilir.

Sürüm-Özgü Anahtar Döndürme Eleme:IronBarcode lisans anahtarları, bir ana sürüm içinde küçük ve yama güncellemeleri boyunca geçerliliğini korur. Yeni bir anahtar elde etme, her dağıtım ortamında sırları güncelleme ve her büyük NuGet sürüm güncellemesinde deneme filigranlarını temizlemek için yeniden dağıtma operasyonel yükü tamamen ortadan kalkar.

Platform Bağımsız Dağıtım: AynıIronBarcode paketi ve aynı oluşturma API'si WinForms masaüstü, ASP.NET Core hizmetleri, Azure İşlevleri, konsol uygulamaları ve Linux Docker konteynerlerinde çalışır. DrawToBitmap tarafından tanıtılan Windows Forms çalışma zamanı bağımlılığı kaldırılır ve Blazor dağıtımları, bağımsız olarak test edilebilir ve istemciye karşı tarafsız olan sunucu tarafı API bitiş noktalarına kayar.

Yerel PDF Desteği: Hem oluşturma hem de okuma, PDF'ye yerel olarak genişler. Bir barkod PDF'si üretmek artık ikiSyncfusionürününü koordine etmeyi gerektirmez; PDF beyannamelerinden ve sevkiyat belgelerinden barkodları okumak artık ayrı bir PDF çıkarım adımı gerektirmez.

Öngörülebilir Lisans Ekonomisi: IronBarcode'un süresiz lisans modeli, gelir, çalışan sayısı veya sermaye eşiklerini dayatmaz.SyncfusionCommunity License uygunluk koşullarını aşmış veya aşmayı öngören takımlar, organizasyonel büyümeyi uyum olayına dönüştürmeyen bir lisanslama modeline geçer.

Lütfen dikkate alınSyncfusion ve ZXing.NET, ilgili sahiplerinin tescilli ticari markalarıdır. Bu site,Syncfusionveya ZXing.NET ile ilişkili değildir, onaylanmamış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.

Sıkça Sorulan Sorular

Neden Syncfusion Barcode'den IronBarcode'a göç etmeliyim?

Yaygın nedenler arasında lisanslamanın basitleştirilmesi (SDK + runtime anahtar karmaşıklığının kaldırılması), veri geçiş limitlerinin ortadan kaldırılması, yerel PDF desteği kazanılması, Docker/CI/CD dağıtımının iyileştirilmesi ve üretim kodunda API tekrarlama azalması yer alır.

Syncfusion API çağrılarını IronBarcode ile nasıl değiştirebilirim?

Örnek oluşturma ve lisanslama tekrarlamalarını IronBarCode.License.LicenseKey = "anahtar" ile değiştirin. Okuyucu çağrılarını BarcodeReader.Read(yol) ile ve yazıcı çağrılarını BarcodeWriter.CreateBarcode(veri, kodlama) ile değiştirin. Statik yöntemler örnek yönetimi gerektirmez.

Syncfusion Barcode'den IronBarcode'a geçerken kodda ne kadar değişiklik oluyor?

Çoğu geçiş daha az kod satırıyla sonuçlanır. Lisanslama tekrarlamaları, örnek oluşturucular ve açık format yapılandırması kaldırılır. Temel okuma/yazma işlemleri, daha temiz sonuç nesneleriyle daha kısa IronBarcode eşdeğerlerine dönüştürülür.

Geçiş sırasında Syncfusion Barcode ve IronBarcode'u bir arada tutmam gerekiyor mu?

Hayır. Çoğu geçiş doğrudan değişim yapılır, paralel bir işletim yerine geçer. Bir hizmet sınıfını bir seferde geçirin, NuGet referansını değiştirin ve sonraki sınıfa geçmeden önce başlatma ve API çağrı desenlerini güncelleyin.

IronBarcode için NuGet paketi adı nedir?

Paket 'IronBarCode' (büyük B ve C harfleriyle). 'Install-Package IronBarCode' veya 'dotnet add package IronBarCode' ile kurun. Kodda kullanılan yönerge 'using IronBarCode;' şeklindedir.

IronBarcode, Docker dağıtımını Syncfusion Barcode'ye kıyasla nasıl kolaylaştırır?

IronBarcode, harici SDK dosyaları veya montajlı lisans yapılandırması olmayan bir NuGet paketidir. Docker'da, IRONBARCODE_LICENSE_KEY ortam değişkenini ayarlayın ve paket lisans doğrulamasını başlangıçta kendi kendine yapar.

Syncfusion'dan geçiş yaptıktan sonra IronBarcode tüm barkod formatlarını otomatik olarak algılar mı?

Evet. IronBarcode, desteklenen tüm formatlardaki sembolojiyi otomatik olarak algılar. Açık BarcodeTypes sayımı gerekli değildir. Format zaten biliniyorsa ve performans önemliyse, BarcodeReaderOptions arama alanını optimize etmek için sınırlamayı sağlar.

IronBarcode, ayrı bir kütüphane olmadan PDF'lerden barkod okuyabiliyor mu?

Evet. BarcodeReader.Read("document.pdf") PDF dosyalarını yerel olarak işlemler. Sonuçlar her barkod için SayfaNumarası, Format, Değer ve Güven içerir. Harici bir PDF render adımı gerekmez.

IronBarcode, paralel barkod işlemeyi nasıl yönetiyor?

IronBarcode'un statik yöntemleri durumsuz ve thread-safe'dir. Dağıtılmış dosya listeleri üzerinde per-thread örnek yönetimi olmadan doğrudan Parallel.ForEach kullanın. BarcodeReaderOptions.MaxParallelThreads, iç thread bütçesini kontrol eder.

Syncfusion Barcode'den IronBarcode'a geçerken hangi sonuç özellikleri değişir?

Yaygın yeniden adlandırmalar: BarcodeValue, Value olur; BarcodeType, Format olur. IronBarcode sonuçları ayrıca Güven ve SayfaNumarası ekler. Çözüm çapında arama-değiştirme, mevcut sonuç işleme kodundaki yeniden adlandırmaları ele alır.

Bir CI/CD hattında IronBarcode lisanslamasını nasıl ayarlayabilirim?

IRONBARCODE_LICENSE_KEY'i bir boru hattı sırrı olarak saklayın ve uygulama başlangıç kodunda IronBarCode.License.LicenseKey olarak atayın. Bir sır, geliştirme, test, aşama ve üretim dahil olmak üzere tüm ortamları kapsar.

IronBarcode, özel biçimlendirmeye sahip QR kodu üretimini destekliyor mu?

Evet. QRCodeWriter.CreateQrCode() özelleştirilmiş renkler için ChangeBarCodeColor(), logo yerleştirme için AddBrandLogo(), yapılandırılabilir hata düzeltme seviyeleri ve PNG, JPG, PDF ve akış dahil birden çok çıktı formatını destekler.

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