Altbilgi içeriğine atla
VIDEOLAR

.NET MAUI Kullanarak C#'ta Barkod Nasıl Okunur & Taranır

BarcodeLib'ten IronBarcode'a Geçiş

Bu kılavuz, .NET geliştiricileri için BarcodeLib'den IronBarcode'a tam göç yolunu sunar. Takımların bu geçişi yapmasının nedenlerini, adım adım paket değişimini, her yaygınBarcodeLibdeseni için kod göçü örneklerini, tam API eşleme referansını ve bir kod tabanında göçü yönetmek için yapılandırılmış bir kontrol listesini kapsar.

BarcodeLib'den Neden Geçiş Yapılmalı

BarcodeLib'den IronBarcode'a geçen ekipler bu tetikleyicileri rapor eder:

Okuma API'si Yok: BarcodeLib, hiçbir zaman bir okuma veya kod çözme yeteneği içermemiştir. Barkod görüntüleri üreten bir projeye, yüklenen görüntülerden, depo tarayıcılarından veya tedarikçi belgelerinden barkod tarama gereksinimi geldiğinde,BarcodeLibbunu karşılayamaz. Tek seçenek,BarcodeLibile birlikte bakımını yapacak bir ikinci bağımlılık grafiği ve ikinci bir API yüzeyi tanıtan ZXing.Net gibi bir ikinci kütüphane eklemektir.

SkiaSharp Sürüm Çatışması:BarcodeLib3.x, System.Drawing.Common'yi değiştirmek için grafik arka ucu olarak SkiaSharp'ı tanıttı. Kütüphane, belirli bir SkiaSharp sürüm aralığına sabitlenmiş durumda. MAUI projelerinde, Blazor projelerinde ve başka bir bağımlılığın da SkiaSharp çektiği herhangi bir projede, çözülen versiyon genellikle BarcodeLib'in beklediği aralığın dışında olur. Bu, geri yükleme sırasında NU1608 uyarıları üretir ve en kötü durumlarda, cihazda çalışma zamanı montaj bağlama hatalarına yol açar.

PDF Desteği Yok: İçerisine gömülü barkodlar içeren PDF belgeleri üreten uygulamalar — faturalar, iş emirleri, gönderi listeleri — bazen bu barkodları aşağı akış işlem sırasında geri okumaya ihtiyaç duyar.BarcodeLibbarkod görüntüleri oluşturur ancak her iki taraf için PDF desteği yoktur.BarcodeLibile bir PDF'den barkod çıkarmak, PDF sayfalarını ayrı bir PDF kütüphanesi ile görüntülere dönüştürmeyi ve ardından bu görüntüleri ayrı bir okuma kütüphanesine iletmeyi gerektirir.

Bayt Dizisi Çıkışı için Akış Kodlama Adımı:BarcodeLib3.x, HTTP yanıtları, veritabanı BLOB sütunları ve en çok sonrası tüketicilerin aslında ihtiyaç duyduğu byte[] çıkışı üretmek için SkiaSharp ile MemoryStream'ye kodlama adımı gerektiren SKImage döndürür. IronBarcode, oluşturma zincirinde doğrudan .ToPngBinaryData() sağlar.

Temel Sorun

BarcodeLib'in sadece üretim mimarisi, herhangi bir tarama yeteneği eklemenin yığınına ikinci bir kütüphane eklemesini gerektirir:

// BarcodeLib: generation only — reading requires a completely separate library
using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
SKImage img = b.Encode(Type.Code128, "PRODUCT-12345", 300, 100);
using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

// To read it back, a separate scanning library such as ZXing.Net is required —
// separate API, separate dependency graph to maintain alongside BarcodeLib.
// BarcodeLib: generation only — reading requires a completely separate library
using BarcodeStandard;
using SkiaSharp;

var b = new Barcode();
SKImage img = b.Encode(Type.Code128, "PRODUCT-12345", 300, 100);
using var stream = File.OpenWrite("barcode.png");
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);

// To read it back, a separate scanning library such as ZXing.Net is required —
// separate API, separate dependency graph to maintain alongside BarcodeLib.
Imports BarcodeStandard
Imports SkiaSharp

Dim b = New Barcode()
Dim img As SKImage = b.Encode(Type.Code128, "PRODUCT-12345", 300, 100)
Using stream = File.OpenWrite("barcode.png")
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream)
End Using
$vbLabelText   $csharpLabel

IronBarcode her iki işlemi de aynı pakette aynı using ifadesiyle çalıştırır:

// IronBarcode: generation and reading — no second library needed
using IronBarCode;

// Generate
BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .SaveAsPng("barcode.png");

// Read back — same package, same namespace
var result = BarcodeReader.Read("barcode.png").First().Value;
Console.WriteLine(result);  // "PRODUCT-12345"
// IronBarcode: generation and reading — no second library needed
using IronBarCode;

// Generate
BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .SaveAsPng("barcode.png");

// Read back — same package, same namespace
var result = BarcodeReader.Read("barcode.png").First().Value;
Console.WriteLine(result);  // "PRODUCT-12345"
Imports IronBarCode

' Generate
BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128) _
    .ResizeTo(300, 100) _
    .SaveAsPng("barcode.png")

' Read back — same package, same namespace
Dim result = BarcodeReader.Read("barcode.png").First().Value
Console.WriteLine(result)  ' "PRODUCT-12345"
$vbLabelText   $csharpLabel

IronBarcode vs BarcodeLib: Özellik Karşılaştırması

Özellik BarcodeLib IronBarcode
Barkod oluşturma Evet Evet
Barkod okumak / taramak Hayır Evet (BarcodeReader.Read())
QR kod üretimi Hayır (yalnızca 1D) Evet (gelişmiş, logo yerleştirme ile)
PDF barkod okuma Hayır Evet (yerel, ek kütüphane yok)
PDF barkod üretim çıktısı Hayır Evet
SkiaSharp bağımlılığı Evet (sürüm çatışması riski) Hayır
MAUI proje uyumluluğu Çakışma riski (NU1608) Çakışma yok
Akışkan zincirlenebilir API Hayır Evet
byte[] doğrudan çıkış Manuel (MemoryStream ile) .ToPngBinaryData()
Çoklu barkod algılama Hayır Evet (ExpectMultipleBarcodes)
Okuma hızı ayarlaması Yok Evet (ReadingSpeed enum)
Linux / macOS desteği Kısmi (SkiaSharp bağımlı) Tam
Docker / konteyner desteği Yapılandırma gerekli Evet
Aktif bakım Evet (topluluk) Evet (ticari)
Ticari destek / SLA Hayır Evet
Lisans Apache 2.0 (ücretsiz) $999–$5,999 süresiz

Hızlı Başlangıç: BarcodeLib'den IronBarcode'a Geçiş

Geçiş bu öncü adımlarla hemen başlayabilir.

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

BarcodeLib paketini önce kaldırın:

dotnet remove package BarcodeLib
dotnet remove package BarcodeLib
SHELL

Nasıl referans verildiğinden emin değilseniz, .csproj dosyasını kontrol edin:

grep -n "BarcodeLib" YourProject.csproj
grep -n "BarcodeLib" YourProject.csproj
SHELL

TümBarcodeLibile ilgili <PackageReference> girişlerini kaldırın. BarcodeLib'den gelen NU1608 uyarılarını aşmak için açık <PackageReference Include="SkiaSharp"> varsa, bunları da kaldırın — IronBarcode'u yükledikten sonra, SkiaSharp'ın başka sebeplerle gerekip gerekmediğini değerlendirin. Daha sonra IronBarcode'u yükleyin:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

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

Her dosyada referans verilenBarcodeLibusing yönergelerini değiştirin:

// Before
using BarcodeStandard;
using SkiaSharp;

// After
using IronBarCode;
// Before
using BarcodeStandard;
using SkiaSharp;

// After
using IronBarCode;
Imports IronBarCode
Imports SkiaSharp
$vbLabelText   $csharpLabel

Adım 3: Lisansa İzin Verin

Uygulama başlangıcında lisans başlatmayı ekleyin:

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

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

ASP.NET Core uygulamaları için, bunu Program.cs içine builder.Build()'den önce yerleştirin. Konsol uygulamaları için, Main()'nin en üstüne yerleştirin. Diğer uygulamalardan çağrılan sınıf kütüphaneleri için, sunucu uygulaması nerede başlatılırsa orada başlatın.

Kod Göç Örnekleri

Temel Code128 Üretimi

En yaygınBarcodeLibdeseni: bir örnek oluşturun, özellikleri ayarlayın, Encode() çağırın.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(Type.Code128, trackingNumber, 400, 120);
    using var stream = File.OpenWrite(outputPath);
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
}
using BarcodeStandard;
using SkiaSharp;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    var b = new Barcode();
    b.IncludeLabel = true;
    SKImage img = b.Encode(Type.Code128, trackingNumber, 400, 120);
    using var stream = File.OpenWrite(outputPath);
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
}
Imports BarcodeStandard
Imports SkiaSharp

Public Sub GenerateShippingLabel(trackingNumber As String, outputPath As String)
    Dim b As New Barcode()
    b.IncludeLabel = True
    Dim img As SKImage = b.Encode(Type.Code128, trackingNumber, 400, 120)
    Using stream = File.OpenWrite(outputPath)
        img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream)
    End Using
End Sub
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    BarcodeWriter.CreateBarcode(trackingNumber, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .AddAnnotationTextBelowBarcode(trackingNumber)
        .SaveAsPng(outputPath);
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public void GenerateShippingLabel(string trackingNumber, string outputPath)
{
    BarcodeWriter.CreateBarcode(trackingNumber, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .AddAnnotationTextBelowBarcode(trackingNumber)
        .SaveAsPng(outputPath);
}
Imports IronBarCode

Public Sub GenerateShippingLabel(trackingNumber As String, outputPath As String)
    BarcodeWriter.CreateBarcode(trackingNumber, BarcodeEncoding.Code128) _
        .ResizeTo(400, 120) _
        .AddAnnotationTextBelowBarcode(trackingNumber) _
        .SaveAsPng(outputPath)
End Sub
$vbLabelText   $csharpLabel

Özellik-ayarlayıcı bloğu, akıcı bir zincire çöker. .AddAnnotationTextBelowBarcode(), b.IncludeLabel = true'yi değiştirir — çubukların altında hangi metnin görüneceğini kontrol etmeniz için etiket dizesini açıkça kabul eder. .ResizeTo() genişlik/yükseklik argümanlarını değiştirir. Gelişmiş üretim seçenekleri için, IronBarcode barkod üretim dokümantasyonu bölümüne bakın.

byte[] Döndürme — yaygın Web API Deseni

BarcodeLib 3.x, bir SKImage döndürür. Bundan bayt almak için SkiaSharp aracılığıyla bir MemoryStream içine kodlanması gerekir. IronBarcode, doğrudan .ToPngBinaryData() sağlar.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;
using System.IO;

public byte[] GetBarcodeBytes(string data)
{
    var b = new Barcode();
    SKImage img = b.Encode(Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}
using BarcodeStandard;
using SkiaSharp;
using System.IO;

public byte[] GetBarcodeBytes(string data)
{
    var b = new Barcode();
    SKImage img = b.Encode(Type.Code128, data, 300, 100);

    using var ms = new MemoryStream();
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
    return ms.ToArray();
}
Imports BarcodeStandard
Imports SkiaSharp
Imports System.IO

Public Function GetBarcodeBytes(data As String) As Byte()
    Dim b As New Barcode()
    Dim img As SKImage = b.Encode(Type.Code128, data, 300, 100)

    Using ms As New MemoryStream()
        img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms)
        Return ms.ToArray()
    End Using
End Function
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

public byte[] GetBarcodeBytes(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .ToPngBinaryData();
}
using IronBarCode;

public byte[] GetBarcodeBytes(string data)
{
    return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
        .ResizeTo(300, 100)
        .ToPngBinaryData();
}
Imports IronBarCode

Public Function GetBarcodeBytes(data As String) As Byte()
    Return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
        .ResizeTo(300, 100) _
        .ToPngBinaryData()
End Function
$vbLabelText   $csharpLabel

MemoryStream ara adımı yok edildi. .ToPngBinaryData(), HTTP yanıt gövdelerinin, veritabanı BLOB sütunlarının ve dosya yazarlarının aslında istediği byte[]'yi doğrudan döndürür.

Web API Denetleyici Eylemi

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;
using Microsoft.AspNetCore.Mvc;
using System.IO;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        var b = new Barcode();
        SKImage img = b.Encode(Type.Code128, sku, 400, 120);

        using var ms = new MemoryStream();
        img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
        return File(ms.ToArray(), "image/png");
    }
}
using BarcodeStandard;
using SkiaSharp;
using Microsoft.AspNetCore.Mvc;
using System.IO;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        var b = new Barcode();
        SKImage img = b.Encode(Type.Code128, sku, 400, 120);

        using var ms = new MemoryStream();
        img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
        return File(ms.ToArray(), "image/png");
    }
}
Imports BarcodeStandard
Imports SkiaSharp
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

<ApiController>
<Route("api/labels")>
Public Class LabelsController
    Inherits ControllerBase

    <HttpGet("{sku}")>
    Public Function GetLabel(sku As String) As IActionResult
        Dim b As New Barcode()
        Dim img As SKImage = b.Encode(Type.Code128, sku, 400, 120)

        Using ms As New MemoryStream()
            img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms)
            Return File(ms.ToArray(), "image/png")
        End Using
    End Function
End Class
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        byte[] pngBytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
            .ResizeTo(400, 120)
            .ToPngBinaryData();

        return File(pngBytes, "image/png");
    }
}
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/labels")]
public class LabelsController : ControllerBase
{
    [HttpGet("{sku}")]
    public IActionResult GetLabel(string sku)
    {
        byte[] pngBytes = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128)
            .ResizeTo(400, 120)
            .ToPngBinaryData();

        return File(pngBytes, "image/png");
    }
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/labels")>
Public Class LabelsController
    Inherits ControllerBase

    <HttpGet("{sku}")>
    Public Function GetLabel(sku As String) As IActionResult
        Dim pngBytes As Byte() = BarcodeWriter.CreateBarcode(sku, BarcodeEncoding.Code128) _
            .ResizeTo(400, 120) _
            .ToPngBinaryData()

        Return File(pngBytes, "image/png")
    End Function
End Class
$vbLabelText   $csharpLabel

Denetleyici eylemi, MemoryStream bloğunu ve SkiaSharp kodlama adımını kaldırarak küçülür. Bayt dizisi, .ToPngBinaryData()'dan doğrudan File()'e akar.

QR Kod Oluşturma

BarcodeLib 3.x QR kodları oluşturmaz — BarcodeStandard.Type enumu 2D girişler içermez. QR'ninBarcodeLibile birlikte gerektiği projeler genellikle QRCoder gibi ikinci bir kütüphane ekledi. IronBarcode, logo gömme ve stil ayarı için ek seçeneklerle özel bir QRCodeWriter sınıfı kullanır.

BarcodeLib Yaklaşımı:

//BarcodeLibhas no QR Code (or any 2D) support.
// Generating a QR code from aBarcodeLibproject required adding a
// second library such as QRCoder:
//
// using QRCoder;
// var qrGen = new QRCodeGenerator();
// var data = qrGen.CreateQrCode("https://example.com/product/42", QRCodeGenerator.ECCLevel.Q);
// // ... separate API, separate dependency to maintain.
//BarcodeLibhas no QR Code (or any 2D) support.
// Generating a QR code from aBarcodeLibproject required adding a
// second library such as QRCoder:
//
// using QRCoder;
// var qrGen = new QRCodeGenerator();
// var data = qrGen.CreateQrCode("https://example.com/product/42", QRCodeGenerator.ECCLevel.Q);
// // ... separate API, separate dependency to maintain.
' BarcodeLib has no QR Code (or any 2D) support.
' Generating a QR code from a BarcodeLib project required adding a
' second library such as QRCoder:
'
' Imports QRCoder
' Dim qrGen As New QRCodeGenerator()
' Dim data = qrGen.CreateQrCode("https://example.com/product/42", QRCodeGenerator.ECCLevel.Q)
' ' ... separate API, separate dependency to maintain.
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

// Basic QR code
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .SaveAsPng("qr.png");

// QR code with embedded brand logo (not possible with BarcodeLib)
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");
using IronBarCode;

// Basic QR code
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .SaveAsPng("qr.png");

// QR code with embedded brand logo (not possible with BarcodeLib)
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");
Imports IronBarCode

' Basic QR code
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300) _
    .SaveAsPng("qr.png")

' QR code with embedded brand logo (not possible with BarcodeLib)
QRCodeWriter.CreateQrCode("https://example.com/product/42", 300) _
    .AddBrandLogo("logo.png") _
    .SaveAsPng("qr-branded.png")
$vbLabelText   $csharpLabel

QRCodeWriter.CreateQrCode() veri dizesini ve piksel boyutunu parametre olarak alır. Logo gömme, renk özelleştirme ve hata düzeltme düzeyi, zincirleme yöntemlerle kullanılabilir. QR kod stil seçenekleri için, IronBarcode QR kod dokümantasyonu bölümüne bakın.

EAN-13 ve UPC-A

Bunlar perakende envanter sistemlerinde yaygındır. Enum isimleri değişir ancak değerler doğrudan eşdeğerdir.

BarcodeLib Yaklaşımı:

using BarcodeStandard;
using SkiaSharp;

// EAN-13 product barcode
var b = new Barcode();
SKImage ean = b.Encode(Type.Ean13, "5901234123457", 250, 100);
using (var s = File.OpenWrite("product-ean.png"))
    ean.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);

// UPC-A for US retail
SKImage upc = b.Encode(Type.UpcA, "012345678905", 250, 100);
using (var s = File.OpenWrite("product-upc.png"))
    upc.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);
using BarcodeStandard;
using SkiaSharp;

// EAN-13 product barcode
var b = new Barcode();
SKImage ean = b.Encode(Type.Ean13, "5901234123457", 250, 100);
using (var s = File.OpenWrite("product-ean.png"))
    ean.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);

// UPC-A for US retail
SKImage upc = b.Encode(Type.UpcA, "012345678905", 250, 100);
using (var s = File.OpenWrite("product-upc.png"))
    upc.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s);
Imports BarcodeStandard
Imports SkiaSharp
Imports System.IO

' EAN-13 product barcode
Dim b As New Barcode()
Dim ean As SKImage = b.Encode(Type.Ean13, "5901234123457", 250, 100)
Using s = File.OpenWrite("product-ean.png")
    ean.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s)
End Using

' UPC-A for US retail
Dim upc As SKImage = b.Encode(Type.UpcA, "012345678905", 250, 100)
Using s = File.OpenWrite("product-upc.png")
    upc.Encode(SKEncodedImageFormat.Png, 100).SaveTo(s)
End Using
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

// EAN-13 product barcode
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .ResizeTo(250, 100)
    .SaveAsPng("product-ean.png");

// UPC-A for US retail
BarcodeWriter.CreateBarcode("012345678905", BarcodeEncoding.UPCA)
    .ResizeTo(250, 100)
    .SaveAsPng("product-upc.png");
using IronBarCode;

// EAN-13 product barcode
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13)
    .ResizeTo(250, 100)
    .SaveAsPng("product-ean.png");

// UPC-A for US retail
BarcodeWriter.CreateBarcode("012345678905", BarcodeEncoding.UPCA)
    .ResizeTo(250, 100)
    .SaveAsPng("product-upc.png");
Imports IronBarCode

' EAN-13 product barcode
BarcodeWriter.CreateBarcode("5901234123457", BarcodeEncoding.EAN13) _
    .ResizeTo(250, 100) _
    .SaveAsPng("product-ean.png")

' UPC-A for US retail
BarcodeWriter.CreateBarcode("012345678905", BarcodeEncoding.UPCA) _
    .ResizeTo(250, 100) _
    .SaveAsPng("product-upc.png")
$vbLabelText   $csharpLabel

Barkod Okuma Ekleme (Net-Yeni Kapasitesi)

BarcodeLib'in okuma API'si yoktur. Geçişiniz, yüklenen görüntülerden, depo tarayıcılarından veya taranmış PDF belgelerinden barkod taraması yapmak için yeni bir gereksinimden kaynaklanıyorsa, bunu ikinci bir kütüphane olmadan ekleyin:

BarcodeLib Yaklaşımı:

//BarcodeLib— no reading API exists
// Adding reading requires a separate library such as ZXing.Net:
// dotnet add package ZXing.Net
// using ZXing;
// var reader = new BarcodeReader();
// // ... separate API, separate dependency graph to manage
//BarcodeLib— no reading API exists
// Adding reading requires a separate library such as ZXing.Net:
// dotnet add package ZXing.Net
// using ZXing;
// var reader = new BarcodeReader();
// // ... separate API, separate dependency graph to manage
'BarcodeLib— no reading API exists
' Adding reading requires a separate library such as ZXing.Net:
' dotnet add package ZXing.Net
' Imports ZXing
' Dim reader As New BarcodeReader()
' ' ... separate API, separate dependency graph to manage
$vbLabelText   $csharpLabel

IronBarcode Yaklaşımı:

using IronBarCode;

// Read a barcode from an image file
var results = BarcodeReader.Read("incoming-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read all barcodes from a multi-page PDF — no PDF library required
var pdfResults = BarcodeReader.Read("supplier-invoice.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Configure for high-volume scanning with multiple barcodes per image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var warehouseResults = BarcodeReader.Read("dock-scan.png", options);
using IronBarCode;

// Read a barcode from an image file
var results = BarcodeReader.Read("incoming-label.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read all barcodes from a multi-page PDF — no PDF library required
var pdfResults = BarcodeReader.Read("supplier-invoice.pdf");
foreach (var result in pdfResults)
{
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}");
}

// Configure for high-volume scanning with multiple barcodes per image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var warehouseResults = BarcodeReader.Read("dock-scan.png", options);
Imports IronBarCode

' Read a barcode from an image file
Dim results = BarcodeReader.Read("incoming-label.png")
For Each result In results
    Console.WriteLine($"Value: {result.Value}")
    Console.WriteLine($"Format: {result.Format}")
Next

' Read all barcodes from a multi-page PDF — no PDF library required
Dim pdfResults = BarcodeReader.Read("supplier-invoice.pdf")
For Each result In pdfResults
    Console.WriteLine($"Page {result.PageNumber}: {result.Value}")
Next

' Configure for high-volume scanning with multiple barcodes per image
Dim options As New BarcodeReaderOptions With {
    .Speed = ReadingSpeed.Balanced,
    .ExpectMultipleBarcodes = True
}
Dim warehouseResults = BarcodeReader.Read("dock-scan.png", options)
$vbLabelText   $csharpLabel

BarcodeReader.Read() görüntü dosyalarını, PDF dosyalarını, akışları ve System.Drawing.Bitmap nesnelerini kabul eder. ReadingSpeed enumu, hacimli taramalarda performans için ayrıntılı taramayı değiştirmenize olanak tanır. Okuma yapılandırma seçenekleri için, IronBarcode okuma dokümantasyonu bölümüne bakın.

SkiaSharp Çatışmasını Çözme

Geçişiniz NU1608 uyarıları tarafından tetiklendiyse, paketleri değiştirirken çatışmanın çözülüp çözülmediğini kontrol edin. dotnet remove package BarcodeLib ve dotnet add package IronBarcode'yi çalıştırdıktan sonra, yeniden oluşturun ve çıktıyı kontrol edin:

dotnet build 2>&1 | grep -i "NU1608|SkiaSharp"
dotnet build 2>&1 | grep -i "NU1608|SkiaSharp"
SHELL

Hiçbir çıktı görünmüyorsa, çatışma çözülmüştür. SkiaSharp uyarıları devam ediyorsa, bunlar bağımlılık grafiğinizdeki başka bir paketten geliyor demektir —IronBarcode kaynağı değildir.

BarcodeLib Yaklaşımı:


<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />

  <PackageReference Include="SkiaSharp" Version="3.116.1" />
</ItemGroup>

<ItemGroup>
  <PackageReference Include="BarcodeLib" Version="3.1.5" />

  <PackageReference Include="SkiaSharp" Version="3.116.1" />
</ItemGroup>
XML

IronBarcode Yaklaşımı:


<ItemGroup>
  <PackageReference Include="IronBarcode" Version="*" />

  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>

<ItemGroup>
  <PackageReference Include="IronBarcode" Version="*" />

  <PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.116.1" />
</ItemGroup>
XML

BarcodeLib API'den IronBarcode Eşleme Referansı

BarcodeLib IronBarcode
new Barcode() Statik API - örnek gerekmez
b.Encode(Type.Code128, "data", w, h) BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
b.IncludeLabel = true .AddAnnotationTextBelowBarcode("text")
Encode() girilen genişlik/yükseklik .ResizeTo(width, height)
SKImage döndürür .SaveAsPng(path) / .ToPngBinaryData()
Type.Code128 BarcodeEncoding.Code128
Type.Code39 BarcodeEncoding.Code39
Type.Ean13 BarcodeEncoding.EAN13
Type.UpcA BarcodeEncoding.UPCA
QR desteği yok (sadece 1D) BarcodeEncoding.QRCode (ayrıca QRCodeWriter)
Type.Itf14 BarcodeEncoding.ITF14
Type.Codabar BarcodeEncoding.Codabar
Okuma API'si yok BarcodeReader.Read(path)
MAUI'de SkiaSharp versiyon çatışması Çakışan bağımlılıklar yok
img.Encode(...).SaveTo(stream) .SaveAsPng(path)
MemoryStream + SkiaSharp kodlama .ToPngBinaryData()

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

Sorun 1: Tür Enum Namespace Değişikliği

BarcodeLib 3.x: BarcodeStandard.Type.Code128 kullanır (PascalCase, BarcodeStandard ad alanında). Eski 2.x kodu BarcodeLib.TYPE.CODE128 kullanabilir (büyük harfle yazılmış sabitler, BarcodeLib ad alanı) — her iki form da kod tabanında gerçek ortamlarda geçişe ortasındayken görülebilir.

Çözüm: BarcodeEncoding.Code128 ile değiştirin. Bir .cs dosyasında grep, tüm tekrarları tespit eder:

grep -rn "Type\.\|TYPE\." --include="*.cs" .
grep -rn "Type\.\|TYPE\." --include="*.cs" .
SHELL

Yaygın değişiklikler: Type.Code128 / TYPE.CODE128BarcodeEncoding.Code128, Type.Ean13 / TYPE.EAN13BarcodeEncoding.EAN13, Type.UpcA / TYPE.UPCABarcodeEncoding.UPCA, Type.Itf14 / TYPE.ITF14BarcodeEncoding.ITF14, Type.Codabar / TYPE.CO/DABARBarcodeEncoding.Codabar. BarcodeLib'in QR kaydı yok; Herhangi bir TYPE.QR_Code, 2.x sürümünden veya bir çataldan kalan gereksiz koddur — BarcodeEncoding.QRCode ile değiştirin (veya biçimlendirilmiş çıktı için QRCodeWriter kullanın).

Sorun 2: SKImage / Image Dönüş Türü

BarcodeLib: b.Encode() 3.x'te SKImage ve 2.x'te System.Drawing.Image döndürür. Her iki tür de IronBarcode ile derlenmeyecek.

Çözüm: Ara resim değişkenini kaldırın ve kaydetme mantığını akıcı zincir üzerindeki uygun terminal yöntemi ile değiştirin:

// Before (BarcodeLib 3.x)
SKImage img = b.Encode(Type.Code128, data, 300, 100);
using var ms = new MemoryStream();
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
return ms.ToArray();

// After
return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .ToPngBinaryData();
// Before (BarcodeLib 3.x)
SKImage img = b.Encode(Type.Code128, data, 300, 100);
using var ms = new MemoryStream();
img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms);
return ms.ToArray();

// After
return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(300, 100)
    .ToPngBinaryData();
Imports System.IO

' Before (BarcodeLib 3.x)
Dim img As SKImage = b.Encode(Type.Code128, data, 300, 100)
Using ms As New MemoryStream()
    img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(ms)
    Return ms.ToArray()
End Using

' After
Return BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
    .ResizeTo(300, 100) _
    .ToPngBinaryData()
$vbLabelText   $csharpLabel

SKImage img = b.Encode ve Image img = b.Encode desenlerini bulmak için arama yaparak etkilenmiş tüm yerleri bulun.

Sorun 3: Genişlik ve Yükseklik Parametreleri

BarcodeLib: Genişlik ve yükseklik, 3.x'te Encode(Type, string, int, int) üzerinde konumsal argümanlardır ve eski 2.x kodunda ayrı b.Width / b.Height özelliği atamalarıdır. Her iki şeklin de taşınması gerekiyor.

Çözüm: Genişlik/yükseklik, CreateBarcode()'den zincirlenmiş tek bir .ResizeTo(width, height) çağrısı olur. Çağrı yerlerini bulun:

# Find Encode() calls and any Width/Height property assignments
grep -n "\.Encode(\|\.Width = \|\.Height = " --include="*.cs" -r .
# Find Encode() calls and any Width/Height property assignments
grep -n "\.Encode(\|\.Width = \|\.Height = " --include="*.cs" -r .
SHELL

Ardından boyut argümanlarını veya özellik çiftini tek bir .ResizeTo(width, height) zincir çağrısı ile değiştirin.

Sorun 4: IncludeLabel Boolean Anahtarı

BarcodeLib: b.IncludeLabel = true, verileri çubukların altında görünen metin olarak otomatik olarak kodlayan bir boole türüdür.

Çözüm: Etiket dizesini açıkça alan .AddAnnotationTextBelowBarcode("text") kullanın. Çoğu durumda, barkoda kodlanmış aynı veri dizgisini ilet. Orijinal kod IncludeLabel = true kullanıyorsa ve verileri etiket olarak otomatik olarak işlemek için BarcodeLib'e güveniyorsa, aynı veri dizesini açıkça geçirin:

BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .AddAnnotationTextBelowBarcode(data)  // pass the same string
    .SaveAsPng(outputPath);
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .AddAnnotationTextBelowBarcode(data)  // pass the same string
    .SaveAsPng(outputPath);
Dim barcodeWriter = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
barcodeWriter.AddAnnotationTextBelowBarcode(data) ' pass the same string
barcodeWriter.SaveAsPng(outputPath)
$vbLabelText   $csharpLabel

Sorun 5:BarcodeLibKaldırıldıktan Sonra Bırakılan SkiaSharp Referansları

BarcodeLib: Projeler, BarcodeLib'in sürüm kısıtlamasını geçersiz kılmak için sıkça açık <PackageReference Include="SkiaSharp"> girdileri biriktirmiştir.BarcodeLibkaldırıldıktan sonra bunlar öksüz kalır.

Çözüm: IronBarcode'a geçtikten sonra, SkiaSharp'in herhangi bir başka paket tarafından hala gerekli olup olmadığını kontrol edin ve özel referansı kaldırmadan önce:

# Check if SkiaSharp is still referenced by anything other than the explicit override
dotnet list package --include-transitive 2>&1 | grep -i skia
# Check if SkiaSharp is still referenced by anything other than the explicit override
dotnet list package --include-transitive 2>&1 | grep -i skia
SHELL

SkiaSharp yalnızca artık kaldırılan açık <PackageReference> nedeniyle görünüyorsa, bu girişi kaldırın. MAUI veya başka bir bağımlılık tarafından hala çekiliyorsa, bırakın —IronBarcode bununla çakışmaz.

BarcodeLib Geçiş Kontrol Listesi

Geçiş Öncesi Görevler

Başlamadan önce ihtiyaç duyulan değişikliklerin kapsamını anlamak için bu aramaları çalıştırın:

# Find allBarcodeLibusing directives (both 3.x BarcodeStandard and older BarcodeLib)
grep -rn "using BarcodeStandard\|using BarcodeLib" --include="*.cs" .

# Find Barcode object instantiation
grep -rn "new Barcode()" --include="*.cs" .

# Find Encode calls
grep -rn "\.Encode(" --include="*.cs" .

# Find Type enum usage (3.x PascalCase and 2.x uppercase)
grep -rn "Type\.Code128\|Type\.Ean13\|Type\.UpcA\|TYPE\.CODE128\|TYPE\.EAN13\|TYPE\.UPCA" --include="*.cs" .

# Find IncludeLabel usage
grep -rn "IncludeLabel" --include="*.cs" .

# Find the package references in project files
grep -rn "BarcodeLib" --include="*.csproj" .

# Find NU1608 evidence in lock files
grep -rn "NU1608" .
# Find allBarcodeLibusing directives (both 3.x BarcodeStandard and older BarcodeLib)
grep -rn "using BarcodeStandard\|using BarcodeLib" --include="*.cs" .

# Find Barcode object instantiation
grep -rn "new Barcode()" --include="*.cs" .

# Find Encode calls
grep -rn "\.Encode(" --include="*.cs" .

# Find Type enum usage (3.x PascalCase and 2.x uppercase)
grep -rn "Type\.Code128\|Type\.Ean13\|Type\.UpcA\|TYPE\.CODE128\|TYPE\.EAN13\|TYPE\.UPCA" --include="*.cs" .

# Find IncludeLabel usage
grep -rn "IncludeLabel" --include="*.cs" .

# Find the package references in project files
grep -rn "BarcodeLib" --include="*.csproj" .

# Find NU1608 evidence in lock files
grep -rn "NU1608" .
SHELL

Her aramadan etkilenen tüm dosyaları belgeleyin. Hangi projelerin BarcodeLib'i doğrudan referans aldığını ve hangilerinin onu geçişli olarak miras aldığını not edin. YalnızcaBarcodeLibçatışmalarını çözmek için eklenmiş herhangi bir skiaSharp sürüm geçersiz kılmalarını belirleyin.

Kod Güncelleme Görevleri

  1. Her proje için dotnet remove package BarcodeLib çalıştırın
  2. YalnızcaBarcodeLibçatışmalarını düzeltmek için eklenen herhangi bir SkiaSharp sürüm geçersiz kılma referansını kaldır
  3. Her proje için dotnet add package IronBarcode çalıştırın
  4. Her projede uygulama başlangıcına IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"; ekleyin
  5. Tüm .cs dosyalarında using BarcodeStandard; (veya eski kodda using BarcodeLib;) ve using SkiaSharp;using IronBarCode; ile değiştirin
  6. 2.x ImageFormat.Png kullanımından kalan using System.Drawing.Imaging; ithalatlarını kaldırın
  7. BarcodeWriter.CreateBarcode() akıcı zincirleri kullanarak new Barcode() + Encode() çağrılarını değiştirin
  8. Type.Code128 / TYPE.CODE128BarcodeEncoding.Code128 ve diğer tüm enum değerlerini değiştirin
  9. Genişlik/yükseklik argümanlarını değiştirin (veya 2.x b.Width = N; b.Height = M;) with .ResizeTo(N, M) zincir çağrıları
  10. b.IncludeLabel = true;.AddAnnotationTextBelowBarcode(data) ile değiştirin
  11. img.Encode(SKEncodedImageFormat.Png, 100).SaveTo(...)'i .SaveAsPng(path) veya .ToPngBinaryData() ile değiştirin
  12. .ToPngBinaryData() onları değiştiriyorsa, ara SKImage / Image değişkenlerini ve MemoryStream bloklarını kaldırın
  13. Gerekli yerlerde barkod okuma kodu ekleyin (BarcodeReader.Read())

Geçiş Sonrası Testler

  • Projeyi derle ve restore çıktısında sıfır NU1608 uyarısı kaldığını onayla
  • dotnet build 2>&1 çalıştır| grep -i "NU1608|SkiaSharp" SkiaSharp çatışmasının tamamen çözüldüğünü doğrulamak için
  • Üretilen barkodların görsel çıktısını, BarcodeLib'den bilinen iyi örneklerle karşılaştır
  • Bir mobil tarayıcı veya BarcodeReader.Read() yöntemi kullanarak QR kodlarının doğru bir şekilde çözüldüğünden emin olun
  • EAN-13 ve UPC-A barkodlarını, perakende tarayıcı donanımlarıyla test edin uygulaması
  • Görüntülerin tüm çıktı hedeflerinde doğru şekilde gösterildiğini doğrula: dosya sistemi, HTTP yanıtı, veritabanı depolama
  • Gerçek belgeler üzerinde BarcodeReader.Read("file.pdf") kullanarak herhangi bir PDF barkod okuma senaryosunu test edin
  • Proje Linux veya macOS'u hedefliyorsa, platformlar arası yapılarının başarıyla tamamlandığını onayla
  • MAUI yapılarının tamamlanıp tamamlanmadığını ve Android ve iOS hedeflerinde SkiaSharp bağlama hatalarının olmadığını doğrula

IronBarcode'a Geçmenin Temel Faydaları

İkinci Kütüphane Olmadan Barkod Okuma: Okuma yeteneğine ihtiyaç duyan ekipler için en acil kazanç, ikinci kütüphane bağımlılığını ortadan kaldırmaktır. BarcodeReader.Read() aynı paketin içinde, aynı using IronBarCode; ifadesini kullanır ve ek NuGet yüklemeleri gerektirmez. ZXing.Net ve onun kendi bağımlılık grafiği artık projenin bir parçası değildir.

SkiaSharp Sürüm Çatışması Yok: IronBarcode, uygulama koduyla SkiaSharp bağımlılık grafiğini paylaşmaz. MAUI projeleri, Blazor projeleri ve SkiaSharp üzerinde birden çok paketin bir araya geldiği herhangi bir projede, NU1608 uyarıları veya çalışma zamanı bağlama hataları olmadan IronBarcode yüklenebilir. BarcodeLib'in tanıttığı sürüm müzakeresi ortadan kalktı.

Doğrudan Bayt Dizisi Çıkışı: .ToPngBinaryData(), akıcı zincirin sonunda byte[] döndürür.BarcodeLibtarafından bayt dizisi çıktısı için gerekli olan MemoryStream aracı, çubukları oluşturan her denetleyici eylem, hizmet yöntemi ve API işleyicisinden ortadan kaldırıldı.

PDF Barkod İşleme: BarcodeReader.Read() PDF dosyalarını yerel olarak kabul eder. İçine gömülü barkodlar içeren PDF belgeleri üreten uygulamalar, ayrı bir PDF görüntüleme kütüphanesi olmadan bu barkodları okuyabilir. Tüm zincir — üretim, PDF gömme ve okuma —IronBarcode içinde yönetilir.

Ticari Destek ve SLA: IronBarcode, Iron Software'ın belirlenmiş güncelleme takvimine sahip ticari destek modeli ile desteklenmektedir. Yeni .NET sürümleri geldiğinde veya .NET ekosisteminde değişiklikler meydana geldiğinde,IronBarcode ticari SLA'ya bağlı bir zaman çizelgesine göre uyumluluk güncellemeleri yayınlar.

İkinci Bir Kütüphane Olmadan QR Kod Oluşturma: QRCodeWriter, zincirleme yöntemler aracılığıyla logo eklemeyi, renk özelleştirmeyi ve hata düzeltme seviyesi yapılandırmasını destekler.BarcodeLib3.x sadece 1D sembolojileri üretir — QR'ninBarcodeLibile birlikte gerektiği projeler genellikle QRCoder gibi ikinci bir kütüphane eklemişlerdir. QR kodu gereksinimleri genişleyen ekipler, üretim akışlarını değiştirmeden aynı paketin içinde bu özelliklere sahip olur.

Sıkça Sorulan Sorular

BarcodeLib'den IronBarcode'a neden geçmeliyim?

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.

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

Ö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.

BarcodeLib'den IronBarcode'a geçişte ne kadar kod değişir?

Ç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 hem BarcodeLib hem de IronBarcode kurulu kalmalı mı?

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, BarcodeLib ile karşılaştırıldığında Docker dağıtımını nasıl basitleştirir?

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.

IronBarcode, BarcodeLib'ten geçişten sonra tüm barkod formatlarını otomatik olarak algılıyor mu?

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.

BarcodeLib'den IronBarcode'a geçişte 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