푸터 콘텐츠로 바로가기
동영상

C#에서 바코드 방향 수정하는 방법 | IronBarcode

Telerik RadBarcode에서 IronBarcode로의 마이그레이션

이 가이드는 .NET 개발자가 Telerik RadBarcode에서 IronBarcode로 완벽한 마이그레이션 경로를 제공합니다. RadBarcodeRadBarcodeReader 가 할 수 있는 것의 한계에 도달한 경우에 유용합니다. 이 문서에는 패키지 교체, 네임스페이스 업데이트, 라이선스 초기화, 코드 수준 마이그레이션 예제, API 매핑 참조 및 마이그레이션 완료 여부를 확인하기 위한 체크리스트가 포함되어 있습니다. 이 예제들은 Telerik 바코드 마이그레이션 중에 가장 흔히 발생하는 시나리오, 즉 XAML 컨트롤 교체, 읽기 형식 확장, 서버 측 배포 및 PDF 처리에 중점을 둡니다.

Telerik RadBarcode에서 마이그레이션해야 하는 이유는 무엇일까요?

Telerik RadBarcode 마이그레이션은 기존 구성 요소가 충족할 수 없는 구체적인 기술 요구 사항에 따라 시작됩니다. 아래 이유는 이러한 전환을 완료했거나 평가 중인 팀들이 가장 흔히 보고하는 상황을 나타냅니다.

2D 읽기 경계: WPF의 RadBarcodeReader 구성 요소와 WinForms의 RadBarcodeReader 구성 요소는 읽기 엔진을 공유하며 DecodeType 열거형으로 경계가 설정됩니다. 해당 열거형에는 Code128, Code39, EAN13, EAN8, UPCA, UPCE, Codabar, ITF와 같은 1D 선형 형식에 대한 항목만 포함되어 있으며 그 외에는 아무것도 없습니다. QR 코드, DataMatrix, PDF417 또는 Aztec에 대한 항목이 없습니다. 새로운 요구 사항으로 인바운드 QR 코드 처리나 스캔된 문서에서 DataMatrix 라벨 읽기가 필요할 때, DecodeType 제약 조건은 사용할 수 있는 우회가 없는 까다로운 차단 요소가 됩니다.

플랫폼 코드 단편화: Telerik를 사용하여 읽으려면 UI 프레임워크 종속성이 필요합니다: RadBarcodeReader 은 WPF 유형(BitmapImage)을 사용하고 RadBarcodeReader 은 WinForms 유형(System.Drawing.Image)을 사용합니다. 이러한 형식은 공유 .NET 라이브러리, 콘솔 애플리케이션, ASP.NET Core 프로젝트 또는 Blazor 서버에서 참조할 수 없습니다. 바코드 판독 로직을 공유 서비스 계층에 중앙 집중화하려는 팀은 Telerik 타입을 사용해서는 그렇게 할 수 없습니다. 판독기 구현이 각 UI 프레임워크에 영구적으로 종속되기 때문입니다.

PDF 처리 격차: 많은 바코드 워크플로는 이미지 파일이 아닌 문서를 기반으로 작동합니다. Telerik RadBarcodeReader는 비트맵 이미지만 허용합니다. PDF 페이지에 삽입된 바코드를 읽으려면 별도의 라이브러리를 사용하여 페이지를 이미지로 변환한 다음 해당 이미지를 Telerik 리더에 제공해야 합니다. 이렇게 하면 종속성이 추가되지만 여전히 1D 결과만 얻을 수 있습니다. 주로 PDF 문서를 사용하는 팀의 경우, 이 해결 방법은 워크플로의 모든 단계에서 불편함을 초래합니다.

구독 라이선스: Telerik 바코드 기능은 독립형 패키지로 판매되지 않습니다. RadBarcodeRadBarcodeReader에 대한 액세스는 플랫폼별 UI 스위트 구독과 함께 제공됩니다. 플랫폼별 Telerik UI 구독은 개발자당 연 $749(Lite 계층)에서 시작하며 DevCraft UI는 모든 플랫폼을 결합하여 개발자당 연 1,149달러입니다. 이는 Telerik의 공시된 2026년 가격에 따라 다릅니다. 바코드 기능이 주된 요구 사항이며 다른 Telerik UI 컨트롤을 사용하지 않는 팀은 구매하는 구성 요소 중 극히 일부에 해당하는 기능에 대해 전체 Suite 비용을 부담해야 합니다.

근본적인 문제

Telerik 읽기 제한 사항을 가장 명확하게 보여주는 것은 형식을 생성하는 구성 요소가 리더를 통해 형식을 왕복 처리할 수 없다는 점입니다.

// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...

// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
// Telerik — generates a QR code, then cannot read it back
var qrBarcode = new RadBarcode();
qrBarcode.Value = "https://example.com/order/4821";
qrBarcode.Symbology = new QRCode { ErrorCorrectionLevel = ErrorCorrectionLevel.H };
// Save to file...

// Attempt to read the same QR code:
var reader = new RadBarcodeReader();
// DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
var bitmap = new BitmapImage(new Uri("qr-output.png", UriKind.Absolute));
var result = reader.Decode(bitmap);
// result == null — always, for any QR code image
' Telerik — generates a QR code, then cannot read it back
Dim qrBarcode As New RadBarcode()
qrBarcode.Value = "https://example.com/order/4821"
qrBarcode.Symbology = New QRCode With {.ErrorCorrectionLevel = ErrorCorrectionLevel.H}
' Save to file...

' Attempt to read the same QR code:
Dim reader As New RadBarcodeReader()
' DecodeType.QR does not exist — QR cannot be added to this list
reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
Dim bitmap As New BitmapImage(New Uri("qr-output.png", UriKind.Absolute))
Dim result = reader.Decode(bitmap)
' result == null — always, for any QR code image
$vbLabelText   $csharpLabel

IronBarcode 이러한 격차를 해소합니다. 생성과 읽기에 동일한 패키지를 사용하며, 읽기 엔진은 QR 코드, DataMatrix, PDF417 및 기타 모든 형식을 자동으로 감지합니다.

// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
             .SaveAsPng("qr-output.png");

// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
// NuGet: dotnet add package IronBarcode
using IronBarCode;

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

// Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode)
             .SaveAsPng("qr-output.png");

// Read that same QR code back — no format specification needed
var results = BarcodeReader.Read("qr-output.png");
Console.WriteLine(results.First().Value);
// Output: https://example.com/order/4821
Imports IronBarCode

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

' Generate a QR code
BarcodeWriter.CreateBarcode("https://example.com/order/4821", BarcodeEncoding.QRCode) _
             .SaveAsPng("qr-output.png")

' Read that same QR code back — no format specification needed
Dim results = BarcodeReader.Read("qr-output.png")
Console.WriteLine(results.First().Value)
' Output: https://example.com/order/4821
$vbLabelText   $csharpLabel

IronBarcode와 Telerik RadBarcode의 기능 비교

기능 텔레릭 라드바코드 IronBarcode
1D 바코드 생성 예 (모든 플랫폼)
2D 바코드 생성 예 (모든 플랫폼)
1D 바코드 판독 WPF 및 WinForms 전용 예 (모든 플랫폼)
QR 코드 읽기 WPF 전용 예 (모든 플랫폼)
데이터매트릭스 읽기 WPF 전용 예 (모든 플랫폼)
PDF417 읽기 WPF 전용 예 (모든 플랫폼)
아즈텍어 읽기 사용 불가
PDF 파일 읽기 사용 불가 예 (원어민)
자동 형식 감지 아니요 — DecodeType이 필요합니다.
ASP.NET Core 읽기 사용 불가
Blazor 읽기 사용 불가
Docker/Linux 관련 자료 사용 불가
공유 서비스 라이브러리 불가능합니다 (플랫폼 유형)
정적 읽기 API 아니요 (인스턴스 필요)
독립 실행 NuGet 패키지 아니요 - UI Suite 필요합니다.
영구 라이선스 구독과 함께 영구적 등급 가능 예 — $749부터 (Lite)

빠른 시작

1단계: NuGet 패키지 교체

프로젝트에서 해당 플랫폼에 대한 Telerik UI 패키지를 제거하세요.

# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml

# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode

# Blazor
dotnet remove package Telerik.UI.for.Blazor
# WPF
dotnet remove package Telerik.UI.for.Wpf.60.Xaml

# WinForms
dotnet remove package Telerik.UI.for.WinForms.Common
dotnet remove package Telerik.UI.for.WinForms.Barcode

# Blazor
dotnet remove package Telerik.UI.for.Blazor
SHELL

프로젝트에서 동일한 패키지에 포함된 다른 Telerik 컨트롤을 사용하는 경우, 해당 패키지를 그대로 두고 2단계로 진행하십시오. 공유 패키지를 제거하지 않고 바코드 관련 API 호출만 제거할 수 있습니다.

IronBarcode 설치하세요:

dotnet add package IronBarcode
dotnet add package IronBarcode
SHELL

하나의 패키지로 WPF, WinForms, ASP.NET Core, Blazor Server, 콘솔 애플리케이션, Docker, Azure Functions 및 AWS Lambda를 모두 지원합니다. 전체 플랫폼 호환성 세부 정보에는 지원되는 정확한 .NET 버전 및 운영 체제 대상이 명시되어 있습니다.

단계 2: 네임스페이스 업데이트

Telerik 바코드 네임스페이스 가져오기를 제거하고IronBarcode네임스페이스로 바꾸십시오.

// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode;      // WPF reader and generator
// using Telerik.Windows.Controls;              // WPF general
// using Telerik.WinControls.UI;               // WinForms
// using Telerik.WinControls.UI.Barcode;        // WinForms barcode reader

// Add this:
using IronBarCode;
// Remove these namespace imports:
// using Telerik.Windows.Controls.Barcode;      // WPF reader and generator
// using Telerik.Windows.Controls;              // WPF general
// using Telerik.WinControls.UI;               // WinForms
// using Telerik.WinControls.UI.Barcode;        // WinForms barcode reader

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

단계 3: 라이선스 초기화

애플리케이션 시작 시 Telerik 라이선스 초기화를IronBarcode키 할당으로 대체하십시오.

// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");

// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("key");

// Add at application startup (Program.cs, App.xaml.cs, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("key")

' Add at application startup (Program.vb, App.xaml.vb, or composition root):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

주요 할당은 애플리케이션 진입점에서 한 번만 이루어집니다. 배포할 라이선스 파일이 없으며, 플랫폼별 초기화 경로도 없고, WPF와 ASP.NET Core 대한 별도의 구성도 필요하지 않습니다.

코드 마이그레이션 예제

바코드 생성: XAML 컨트롤에서 코드 기반 API로

Telerik의 WPF 생성은 선언적입니다. RadBarcode XAML 요소는 UI 트리에서 직접 렌더링됩니다. IronBarcode는 코드에서 바코드를 생성하고 파일로 저장하거나 WPF 표시를 위해 GeneratedBarcode 객체를 BitmapSource로 변환할 수 있습니다.

텔레릭 접근 방식:


<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
    <telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>

<Window xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
    <telerik:RadBarcode Value="PROD-2026-00184" Symbology="Code128" />
</Window>
XML
@* Blazor — TelerikBarcode renders as a Razor component *@
<TelerikBarcode Value="PROD-2026-00184" Type="@BarcodeType.Code128" />

IronBarcode 접근 방식:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
             .ResizeTo(400, 100)
             .SaveAsPng("barcode.png");

// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                                .ToBitmapSource();
barcodeImageControl.Source = bitmapSource;

// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                            .ResizeTo(400, 100)
                            .ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
// NuGet: dotnet add package IronBarcode
using IronBarCode;

// Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
             .ResizeTo(400, 100)
             .SaveAsPng("barcode.png");

// Display in WPF — assign to an Image control's Source property
var bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                                .ToBitmapSource();
barcodeImageControl.Source = bitmapSource;

// Serve in Blazor or ASP.NET Core — return as base64 src attribute
byte[] bytes = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128)
                            .ResizeTo(400, 100)
                            .ToPngBinaryData();
string imgSrc = $"data:image/png;base64,{Convert.ToBase64String(bytes)}";
Imports IronBarCode

' Save to file — replaces XAML generation + manual export
BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
             .ResizeTo(400, 100) _
             .SaveAsPng("barcode.png")

' Display in WPF — assign to an Image control's Source property
Dim bitmapSource = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
                                .ToBitmapSource()
barcodeImageControl.Source = bitmapSource

' Serve in Blazor or ASP.NET Core — return as base64 src attribute
Dim bytes As Byte() = BarcodeWriter.CreateBarcode("PROD-2026-00184", BarcodeEncoding.Code128) _
                                   .ResizeTo(400, 100) _
                                   .ToPngBinaryData()
Dim imgSrc As String = $"data:image/png;base64,{Convert.ToBase64String(bytes)}"
$vbLabelText   $csharpLabel

BarcodeEncoding 열거형은 Telerik의 Symbology 열거형과 동일한 심볼로지를 포함합니다. QR 코드 생성으로 전환하면 열거형 인수만 변경됩니다. QR 오류 수정 수준 및 DataMatrix 크기를 포함한 모든 2D 바코드 생성 옵션 에 대한 자세한 예제는IronBarcode설명서를 참조하십시오.

데스크톱 애플리케이션에서 바코드 읽기

Telerik는 데스크탑 플랫폼에 대해 두 개의 별도 읽기 클래스를 제공합니다 — WPF의 RadBarcodeReader 및 WinForms의 RadBarcodeReader —. 서로 다른 클래스 이름, 속성 이름, 입력 종류를 가지고 있습니다. IronBarcode는 두 프로젝트 유형 모두 동일하게 작동하는 단일 정적 호출로 이를 대체합니다.

Telerik WPF 접근 방식:

WPF 읽기에는 RadBarcodeReader 인스턴스, 명시적 DecodeType 구성, URI에서 로드된 BitmapImage 객체, reader.Decode() 호출이 필요합니다. 결과 속성은 .Text 입니다.

using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;

public string ReadProductBarcode(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeTypes = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    };

    var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
    var result = reader.Decode(bitmap);

    return result?.Text ?? "No barcode found";
}
using Telerik.Windows.Controls.Barcode;
using System.Windows.Media.Imaging;

public string ReadProductBarcode(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeTypes = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    };

    var bitmap = new BitmapImage(new Uri(imagePath, UriKind.Absolute));
    var result = reader.Decode(bitmap);

    return result?.Text ?? "No barcode found";
}
Imports Telerik.Windows.Controls.Barcode
Imports System.Windows.Media.Imaging

Public Function ReadProductBarcode(imagePath As String) As String
    Dim reader = New RadBarcodeReader()
    reader.DecodeTypes = New DecodeType() {
        DecodeType.Code128,
        DecodeType.Code39,
        DecodeType.EAN13,
        DecodeType.EAN8,
        DecodeType.UPCA,
        DecodeType.UPCE,
        DecodeType.Codabar,
        DecodeType.ITF
    }

    Dim bitmap = New BitmapImage(New Uri(imagePath, UriKind.Absolute))
    Dim result = reader.Decode(bitmap)

    Return If(result?.Text, "No barcode found")
End Function
$vbLabelText   $csharpLabel

Telerik WinForms 접근 방식:

WinForms RadBarcodeReader 클래스는 다른 이름, 다른 속성 이름(DecodeType 단수가 아니라 DecodeTypes 복수), System.Drawing.Image 대신 BitmapImage를 사용합니다.

using Telerik.WinControls.UI.Barcode;
using System.Drawing;

public string ReadShippingLabel(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeType = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    };

    using var image = Image.FromFile(imagePath);
    var result = reader.Read(image);

    return result?.Text ?? "No barcode found";
}
using Telerik.WinControls.UI.Barcode;
using System.Drawing;

public string ReadShippingLabel(string imagePath)
{
    var reader = new RadBarcodeReader();
    reader.DecodeType = new DecodeType[]
    {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    };

    using var image = Image.FromFile(imagePath);
    var result = reader.Read(image);

    return result?.Text ?? "No barcode found";
}
Imports Telerik.WinControls.UI.Barcode
Imports System.Drawing

Public Function ReadShippingLabel(imagePath As String) As String
    Dim reader = New RadBarcodeReader()
    reader.DecodeType = New DecodeType() {
        DecodeType.Code128,
        DecodeType.ITF,
        DecodeType.EAN13
    }

    Using image = Image.FromFile(imagePath)
        Dim result = reader.Read(image)
        Return If(result?.Text, "No barcode found")
    End Using
End Function
$vbLabelText   $csharpLabel

IronBarcode 접근 방식:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadProductBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No barcode found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadProductBarcode(string imagePath)
{
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No barcode found";
}
Imports IronBarCode

Public Function ReadProductBarcode(imagePath As String) As String
    Dim results = BarcodeReader.Read(imagePath)
    Return If(results.FirstOrDefault()?.Value, "No barcode found")
End Function
$vbLabelText   $csharpLabel

BarcodeReader.Read() 는 정적 메서드입니다 — 읽기 인스턴스가 필요하지 않습니다. 파일 경로 문자열을 직접 수락하여 BitmapImage 또는 System.Drawing.Image 로드를 요구하지 않습니다. 50개 이상의 지원되는 형식에 대해 자동으로 형식 감지를 수행합니다. 결과 속성은 .Value이고 .Text이 아닙니다. 이 호출은 WPF 및 WinForms 애플리케이션 모두에서 수정 없이 동일하게 작동하며, 플랫폼별 변형은 없습니다. 또한 Telerik 리더기가 1D 형식으로만 제한되는 것과 달리 QR 코드, DataMatrix 및 이미지에 있는 기타 모든 형식을 읽을 수 있습니다.

Telerik을 사용하면 이전에는 불가능했던 QR 코드 읽기가 가능합니다.

QR 읽기가 불가능하다고 설명한 주석이나 NotSupportedException이 코드베이스에 포함된 경우, 이것이 대체입니다. Telerik에는 QR 코드 읽기를 활성화하는 구성 경로가 없습니다. 즉, Telerik에는 이 시나리오에 해당하는 기능이 없습니다.

텔레릭 접근 방식:

// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Telerik RadBarcodeReader cannot read QR codes. " +
        "DecodeType.QR is not a valid enum value.");
}
// RadBarcodeReader does not support QR codes.
// DecodeType.QR does not exist in the Telerik enum.
public string ReadQrCode(string imagePath)
{
    throw new NotSupportedException(
        "Telerik RadBarcodeReader cannot read QR codes. " +
        "DecodeType.QR is not a valid enum value.");
}
' RadBarcodeReader does not support QR codes.
' DecodeType.QR does not exist in the Telerik enum.
Public Function ReadQrCode(imagePath As String) As String
    Throw New NotSupportedException("Telerik RadBarcodeReader cannot read QR codes. " & _
                                    "DecodeType.QR is not a valid enum value.")
End Function
$vbLabelText   $csharpLabel

IronBarcode 접근 방식:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No QR code found";
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public string ReadQrCode(string imagePath)
{
    // QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    var results = BarcodeReader.Read(imagePath);
    return results.FirstOrDefault()?.Value ?? "No QR code found";
}
Imports IronBarCode

Public Function ReadQrCode(imagePath As String) As String
    ' QR codes, DataMatrix, PDF417, and Aztec are all detected automatically
    Dim results = BarcodeReader.Read(imagePath)
    Return If(results.FirstOrDefault()?.Value, "No QR code found")
End Function
$vbLabelText   $csharpLabel

EAN-13 바코드를 읽는 동일한 BarcodeReader.Read() 호출이 QR 코드를 읽습니다. 2D 형식에 대한 별도의 설정은 없습니다. 읽기 및 생성에 지원되는 바코드 형식 의 전체 목록은IronBarcode설명서에서 확인할 수 있으며, 50개 이상의 모든 항목과 형식별 참고 사항이 포함되어 있습니다.

ASP.NET Core 엔드포인트에서 바코드 읽기

Telerik은 ASP.NET Core 또는 Blazor 용 바코드 판독 구성 요소를 제공하지 않습니다. 기존 애플리케이션이 웹 계층에 Telerik 리더가 없어서 업로드된 이미지를 데스크톱 서비스로 보내 읽도록 하는 경우, 해당 해결 방법은 웹 계층에서 직접 읽는 방식으로 대체됩니다.

텔레릭 접근 방식:

// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
    // Must proxy to desktop service — no Telerik reader available here
    var bytes = await ReadAllBytesAsync(imageFile);
    var result = await _desktopBridgeService.ReadAsync(bytes);
    return Ok(result);
}
// No Telerik reading API available in ASP.NET Core.
// Workaround: forward uploaded file to a WPF or WinForms service
// that can reference Telerik.Windows.Controls.Barcode.
[HttpPost("read")]
public async Task<IActionResult> ReadBarcode(IFormFile imageFile)
{
    // Must proxy to desktop service — no Telerik reader available here
    var bytes = await ReadAllBytesAsync(imageFile);
    var result = await _desktopBridgeService.ReadAsync(bytes);
    return Ok(result);
}
Imports Microsoft.AspNetCore.Mvc

' No Telerik reading API available in ASP.NET Core.
' Workaround: forward uploaded file to a WPF or WinForms service
' that can reference Telerik.Windows.Controls.Barcode.
<HttpPost("read")>
Public Async Function ReadBarcode(imageFile As IFormFile) As Task(Of IActionResult)
    ' Must proxy to desktop service — no Telerik reader available here
    Dim bytes = Await ReadAllBytesAsync(imageFile)
    Dim result = Await _desktopBridgeService.ReadAsync(bytes)
    Return Ok(result)
End Function
$vbLabelText   $csharpLabel

IronBarcode 접근 방식:

// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
    [HttpPost("read")]
    public IActionResult ReadBarcode(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        return Ok(results.Select(r => new
        {
            Format = r.BarcodeType.ToString(),
            Value = r.Value
        }));
    }

    [HttpGet("generate")]
    public IActionResult GenerateBarcode([FromQuery] string data)
    {
        var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
                                 .ResizeTo(400, 100)
                                 .ToPngBinaryData();
        return File(bytes, "image/png");
    }
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/barcode")]
public class BarcodeController : ControllerBase
{
    [HttpPost("read")]
    public IActionResult ReadBarcode(IFormFile imageFile)
    {
        using var stream = imageFile.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        return Ok(results.Select(r => new
        {
            Format = r.BarcodeType.ToString(),
            Value = r.Value
        }));
    }

    [HttpGet("generate")]
    public IActionResult GenerateBarcode([FromQuery] string data)
    {
        var bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
                                 .ResizeTo(400, 100)
                                 .ToPngBinaryData();
        return File(bytes, "image/png");
    }
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc

<ApiController>
<Route("api/barcode")>
Public Class BarcodeController
    Inherits ControllerBase

    <HttpPost("read")>
    Public Function ReadBarcode(imageFile As IFormFile) As IActionResult
        Using stream = imageFile.OpenReadStream()
            Dim results = BarcodeReader.Read(stream)
            Return Ok(results.Select(Function(r) New With {
                .Format = r.BarcodeType.ToString(),
                .Value = r.Value
            }))
        End Using
    End Function

    <HttpGet("generate")>
    Public Function GenerateBarcode(<FromQuery> data As String) As IActionResult
        Dim bytes = BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
                                 .ResizeTo(400, 100) _
                                 .ToPngBinaryData()
        Return File(bytes, "image/png")
    End Function
End Class
$vbLabelText   $csharpLabel

BarcodeReader.Read()Stream를 직접 수락하므로 업로드된 파일 스트림이 디스크에 쓰지 않고 전달됩니다. 이 컨트롤러는 수정 없이 Linux, Docker 또는 Azure App Service에 배포할 수 있습니다.

PDF 파일에서 바코드 읽기

Telerik에는 PDF 바코드 읽기 기능이 없습니다. Telerik 기반의 기존 코드베이스에 PDF 읽기를 추가하려면 페이지를 이미지로 변환하기 위한 PDF 렌더링 라이브러리가 필요하며, 이를 RadBarcodeReader에 전달해야 합니다.IronBarcode PDF 파일을 직접 읽습니다.

텔레릭 접근 방식:

// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();
    var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call

    foreach (var pageImage in pages)
    {
        var reader = new RadBarcodeReader();
        reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
        var bitmap = ConvertToBitmapImage(pageImage); // conversion required
        var result = reader.Decode(bitmap);
        if (result != null)
            results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
    }
    return results;
}
// No direct PDF reading support in RadBarcodeReader.
// Workaround: use a separate PDF library to extract page images
using SomePdfLibrary; // third-party dependency
using Telerik.Windows.Controls.Barcode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = new List<string>();
    var pages = PdfRenderer.ExtractPages(pdfPath); // third-party call

    foreach (var pageImage in pages)
    {
        var reader = new RadBarcodeReader();
        reader.DecodeTypes = new[] { DecodeType.Code128, DecodeType.EAN13 };
        var bitmap = ConvertToBitmapImage(pageImage); // conversion required
        var result = reader.Decode(bitmap);
        if (result != null)
            results.Add(result.Text); // 1D only — QR codes on PDF pages are missed
    }
    return results;
}
Imports SomePdfLibrary ' third-party dependency
Imports Telerik.Windows.Controls.Barcode

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results As New List(Of String)()
    Dim pages = PdfRenderer.ExtractPages(pdfPath) ' third-party call

    For Each pageImage In pages
        Dim reader As New RadBarcodeReader()
        reader.DecodeTypes = New DecodeType() {DecodeType.Code128, DecodeType.EAN13}
        Dim bitmap = ConvertToBitmapImage(pageImage) ' conversion required
        Dim result = reader.Decode(bitmap)
        If result IsNot Nothing Then
            results.Add(result.Text) ' 1D only — QR codes on PDF pages are missed
        End If
    Next

    Return results
End Function
$vbLabelText   $csharpLabel

IronBarcode 접근 방식:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);
    return results.Select(r =>
        $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
// NuGet: dotnet add package IronBarcode
using IronBarCode;

public List<string> ReadBarcodesFromPdf(string pdfPath)
{
    var results = BarcodeReader.Read(pdfPath);
    return results.Select(r =>
        $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList();
}
Imports IronBarCode

Public Function ReadBarcodesFromPdf(pdfPath As String) As List(Of String)
    Dim results = BarcodeReader.Read(pdfPath)
    Return results.Select(Function(r) $"Page {r.PageNumber}: {r.BarcodeType} — {r.Value}").ToList()
End Function
$vbLabelText   $csharpLabel

별도의 PDF 라이브러리는 필요하지 않습니다. 페이지 추출 단계가 없습니다. 이미지 변환도 없습니다. PDF 파일 경로를 전달하면IronBarcode모든 페이지를 처리하여 페이지 번호 추적 기능이 포함된 모든 바코드를 반환합니다. PDF 페이지에 있는 1D 및 2D 바코드 모두 감지됩니다.

텔레릭 라드바코드 API와IronBarcode매핑 참조

텔레릭 라드바코드 IronBarcode
TelerikLicenseManager.InstallLicense("key") IronBarCode.License.LicenseKey = "key"
<telerik:RadBarcode Value="..." Symbology="Code128" /> BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
<TelerikBarcode Type="@BarcodeType.Code128" /> 서버 측 생성으로 ToPngBinaryData() 반환
Symbology.Code128 BarcodeEncoding.Code128
Symbology.QRCode BarcodeEncoding.QRCode
new RadBarcodeReader() (WPF) 정적 클래스 - 인스턴스가 필요하지 않습니다.
new RadBarcodeReader() (WinForms) 정적 클래스 - 인스턴스가 필요하지 않습니다.
reader.DecodeTypes = new DecodeType[] { ... } (WPF) 자동 감지 - 별도의 설정 필요 없음
reader.DecodeType = new DecodeType[] { ... } (윈폼) 자동 감지 - 별도의 설정 필요 없음
reader.Decode(bitmapImage) (WPF) BarcodeReader.Read(imagePath)
reader.Read(drawingImage) (WinForms) BarcodeReader.Read(imagePath)
result.Text result.Value
result.Symbology result.BarcodeType
BitmapImage 입력으로 필요 (WPF) 파일 경로, Stream 혹은 바이트 배열 허용
System.Drawing.Image 입력으로 필요 (WinForms) 파일 경로, Stream 혹은 바이트 배열 허용
읽기에서는 1D 형식만 사용 가능합니다. 2D 유형을 포함한 50개 이상의 형식
WPF 및 WinForms 읽기 전용 모든 .NET 플랫폼
PDF 읽기를 지원하지 않습니다. BarcodeReader.Read("file.pdf") — 네이티브

일반적인 마이그레이션 문제와 해결책

문제 1: XAML 바코드 컨트롤 교체

Telerik: <telerik:RadBarcode> 는 WPF UI 요소 트리에서 직접 렌더링되는 비주얼 컨트롤입니다. 코드-비하인드 변경 없이 Image 요소로 대체할 수 없습니다.

솔루션: <telerik:RadBarcode> 요소를 <Image> 컨트롤로 교체하고 코드-비하인드에서 바코드를 생성합니다. Image.Source을 IronBarcode로 생성된 BitmapSource에 바인딩하세요:

// In code-behind or ViewModel
using IronBarCode;

var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
                             .ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
// In code-behind or ViewModel
using IronBarCode;

var generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128)
                             .ResizeTo(400, 100);
BarcodeImage.Source = generated.ToBitmapSource();
Imports IronBarCode

' In code-behind or ViewModel
Dim generated = BarcodeWriter.CreateBarcode(barcodeValue, BarcodeEncoding.Code128) _
                             .ResizeTo(400, 100)
BarcodeImage.Source = generated.ToBitmapSource()
$vbLabelText   $csharpLabel

Blazor의 경우, <TelerikBarcode>을 서버 측에서 생성된 base64 인코딩된 PNG를 받는 src 속성을 가진 <img> 요소로 교체합니다.

문제 2: DecodeType 제거의 부작용

Telerik: DecodeTypes (WPF) 또는 DecodeType (WinForms) 속성은 읽기 엔진이 감지하려는 형식을 필터링합니다.IronBarcode마이그레이션에서 이 필터를 제거하면IronBarcode이제 이전에 필터에 의해 제외되었던 형식을 포함하여 이미지에 있는 모든 형식에 대한 결과를 반환합니다.

솔루션: DecodeType 할당 블록을 완전히 제거합니다. 감지된 추가 형식이 다운스트림 로직에서 예상치 못한 결과를 일으킬 경우 — 예를 들어, 코드가 한 가지 바코드 형식만 반환될 것으로 가정한 경우 — BarcodeReaderOptions를 사용하여 선택적 필터링을 추가합니다.

using IronBarCode;

var options = new BarcodeReaderOptions
{
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
using IronBarCode;

var options = new BarcodeReaderOptions
{
    ExpectedBarcodeTypes = BarcodeEncoding.Code128 | BarcodeEncoding.EAN13
};
var results = BarcodeReader.Read(imagePath, options);
Imports IronBarCode

Dim options As New BarcodeReaderOptions With {
    .ExpectedBarcodeTypes = BarcodeEncoding.Code128 Or BarcodeEncoding.EAN13
}
Dim results = BarcodeReader.Read(imagePath, options)
$vbLabelText   $csharpLabel

이는 선택 사항입니다. 기본 동작(모든 형식 감지)은 대부분의 사용 사례에 적합하며 이전 Telerik 구현에서는 얻을 수 없었던 결과를 제공합니다.

문제 3: TelerikLicenseManager 정리

Telerik: Telerik.WinControls.TelerikLicenseManager.InstallLicense(key) 호출은 애플리케이션 시작 시, 일반적으로 Program.cs (WinForms) 또는 App.xaml.cs (WPF)에서 나타납니다. 키는 종종 앱 설정, 구성 파일에 저장되거나 시작 메서드에 하드코딩되어 있습니다.

솔루션: TelerikLicenseManager.InstallLicense() 호출을 제거합니다. 시작 위치와 동일한 위치에 있는IronBarcode키 할당으로 교체하십시오.

// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");

// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
// Remove:
// Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY");

// Add:
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";
' Remove:
' Telerik.WinControls.TelerikLicenseManager.InstallLicense("TELERIK-KEY")

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

다른 비바코드 Telerik 컨트롤이 여전히 사용 중이어서 Telerik 패키지가 설치된 상태로 남아 있을 경우, 해당 컨트롤의 TelerikLicenseManager 호출을 보존해야 합니다. Telerik 패키지 자체가 완전히 제거되는 경우에만 해당 호출을 제거하십시오.

텔레릭 라드바코드 마이그레이션 체크리스트

이동 전 작업

코드 변경을 하기 전에 코드베이스에서 Telerik 바코드 사용 부분을 모두 검토하십시오.

# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .

# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .

# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .

# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .

# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .

# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
# License initialization
grep -r "TelerikLicenseManager.InstallLicense" --include="*.cs" .

# XAML generation controls
grep -r "RadBarcode" --include="*.xaml" .
grep -r "TelerikBarcode" --include="*.razor" .

# Code-behind generation references
grep -r "RadBarcode" --include="*.cs" .
grep -r "Symbology\." --include="*.cs" .

# Reading API — WPF
grep -r "RadBarcodeReader" --include="*.cs" .
grep -r "DecodeTypes\." --include="*.cs" .
grep -r "reader\.Decode(" --include="*.cs" .

# Reading API — WinForms
grep -r "BarCodeReader" --include="*.cs" .
grep -r "DecodeType\." --include="*.cs" .
grep -r "reader\.Read(" --include="*.cs" .

# Result property access
grep -r "result\.Text" --include="*.cs" .
grep -r "result\.Symbology" --include="*.cs" .
SHELL

각 경기 결과를 기록하십시오. XAML 컨트롤이 포함된 파일, 읽기 코드가 포함된 파일, 그리고 각 파일이 속한 플랫폼을 기록해 두세요.

코드 업데이트 작업

  1. Telerik 바코드 NuGet 패키지를 제거합니다(다른 컨트롤에 필요한 경우 유지).
  2. 바코드 기능을 필요로 하는 각 프로젝트에 IronBarcode NuGet 패키지를 설치합니다.
  3. 각 애플리케이션 시작 진입점에 IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY"을 추가합니다.
  4. Telerik 네임스페이스 임포트를 제거하고 using IronBarCode을 추가합니다.
  5. <telerik:RadBarcode> XAML 요소를 <Image> 컨트롤로 교체합니다.
  6. 코드-비하인드에서 BarcodeWriter.CreateBarcode(...).ToBitmapSource()을 사용하여 바코드 이미지를 생성합니다.
  7. <TelerikBarcode> Razor 구성 요소를 서버 측에서 생성된 base64 <img> 소스로 교체합니다.
  8. new RadBarcodeReader() 인스턴스를 BarcodeReader.Read(path) 정적 호출로 교체합니다.
  9. new RadBarcodeReader() 인스턴스를 BarcodeReader.Read(path) 정적 호출로 교체합니다.
  10. reader.DecodeTypes = new DecodeType[] { ...를 모두 삭제합니다. }andreader.DecodeType = new DecodeType[] { ... }` 블록
  11. reader.Decode(bitmapImage) 호출을 BarcodeReader.Read(imagePath)로 교체합니다.
  12. reader.Read(drawingImage) 호출을 BarcodeReader.Read(imagePath)로 교체합니다.
  13. 읽기 결과 접근지에서 모든 result.Textresult.Value으로 이름 변경합니다.
  14. 모든 형식 검사 지점에서 result.Symbologyresult.BarcodeType으로 이름 변경합니다.
  15. Symbology.Code128 및 유사한 생성 열거값을 BarcodeEncoding.Code128으로 교체합니다.
  16. Telerik 패키지가 모두 제거된 경우 TelerikLicenseManager.InstallLicense() 호출을 제거합니다.

마이그레이션 후 테스트

  • 이전에 판독한 모든 1D 바코드(Code128, EAN13 등)가 계속해서 올바른 값을 반환하는지 확인하십시오.
  • 테스트 이미지의 QR 코드가 이전에 null을 반환했던 부분에서 이제는 성공적으로 읽히는지 확인합니다.
  • 생성된 바코드(PNG 형식으로 저장되거나 바이트 형식으로 제공됨)가 화면에 제대로 표시되고 정확하게 스캔되는지 테스트합니다.
  • 이전에 읽기 기능을 수행할 수 없었던 ASP.NET Core 또는 Blazor 엔드포인트가 이제 올바르게 작동하는지 확인합니다.
  • PDF 읽기 기능이 추가된 경우, 각 PDF 페이지의 바코드가 올바른 페이지 번호와 함께 제대로 감지되는지 확인하십시오.
  • 마이그레이션 전 섹션의 grep audit 명령을 실행하여 Telerik 바코드 API 참조가 남아 있지 않은지 확인하십시오.
  • 첫 번째 BarcodeReader.Read() 또는 BarcodeWriter.CreateBarcode() 호출 전 IronBarCode.License.LicenseKey가 설정되었는지 확인합니다.

IronBarcode로 마이그레이션할 때의 주요 이점

완벽한 2D 형식 지원: 마이그레이션 후 QR 코드, DataMatrix, PDF417 및 Aztec 형식을 기존 Code128 및 EAN13 읽기에 사용되던 동일한 API 호출로 읽을 수 있습니다. 추가 구성이 필요하지 않으며 2D 형식을 위한 별도의 라이브러리도 필요하지 않습니다. 읽기 엔진은 형식 식별을 자동으로 처리합니다.

통합된 크로스 플랫폼 API: 동일한 BarcodeReader.Read()BarcodeWriter.CreateBarcode() 호출은 WPF, WinForms, ASP.NET Core, Blazor, 콘솔 애플리케이션 및 Docker 컨테이너에서 동일하게 컴파일되고 실행됩니다. 공유 서비스 라이브러리에 한 번 작성된 바코드 로직은 수정 없이 솔루션의 모든 프로젝트 유형에서 작동합니다.

네이티브 PDF 파일 처리:IronBarcode PDF 파일에서 바코드를 직접 읽어 모든 페이지를 처리하고 페이지 번호 메타데이터를 포함한 결과를 반환합니다. 이전에는 PDF 렌더링 라이브러리 Plus Telerik 읽기 단계를 필요로 했던 워크플로가 단일 메서드 호출로 통합되어 타사 종속성과 중간 이미지 변환 단계가 제거되었습니다.

바코드 접근에 대한 구독 의존성 제거: 마이그레이션 후, 바코드 기능은 IronBarcode의 영구 라이선스 모델을 통해 이용할 수 있습니다. 이용 권한 유지를 위해 매년 갱신할 필요는 없습니다. 텔레릭 Suite 을 주로 바코드 관련 용도로 사용하는 팀은 반복적인 라이선스 비용을 일회성 비용으로 줄일 수 있습니다.

단순화된 코드베이스: DecodeType 구성 블록, BitmapImage 로드 단계, 플랫폼별 리더 클래스 선택, result.Text 속성 체인은 자동 감지 결과 수집 기능이 있는 단일 정적 메서드 호출로 모두 교체됩니다. 이전에는 WPF와 WinForms 읽기에 대해 서로 다른 구현이 필요했던 코드가 이제 하나의 공통 구현으로 통합됩니다.

참고해 주세요텔레릭은 해당 소유자의 등록 상표입니다. 이 사이트는 Progress Software와 제휴되지 않았으며, 공인 또는 후원받지 않았습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

자주 묻는 질문

Telerik Barcode에서 IronBarcode로 마이그레이션해야 하는 이유는 무엇인가요?

일반적인 이유로는 라이선스 간소화(SDK + 런타임 키 복잡성 제거), 처리량 제한 제거, 네이티브 PDF 지원 확보, Docker/CI/CD 배포 개선, 프로덕션 코드의 API 상용구 감소 등이 있습니다.

Telerik API 호출을 IronBarcode로 대체하려면 어떻게 해야 하나요?

인스턴스 생성 및 라이선스 상용구를 IronBarCode.License.LicenseKey = "key"로 대체합니다. 판독기 호출을 BarcodeReader.Read(경로)로, 쓰기 호출을 BarcodeWriter.CreateBarcode(데이터, 인코딩)로 바꿉니다. 정적 메서드는 인스턴스 관리가 필요하지 않습니다.

Telerik Barcode에서 IronBarcode로 마이그레이션할 때 얼마나 많은 코드가 변경되나요?

대부분의 마이그레이션은 더 적은 코드 줄로 이루어집니다. 라이선스 상용구, 인스턴스 생성자, 명시적 형식 구성이 제거됩니다. 핵심 읽기/쓰기 작업이 더 간결한 결과 객체를 가진 더 짧은 IronBarcode에 매핑됩니다.

마이그레이션하는 동안 Telerik Barcode와 IronBarcode를 모두 설치해야 하나요?

아니요. 대부분의 마이그레이션은 병렬 작업이 아닌 직접 교체 작업입니다. 한 번에 하나의 서비스 클래스를 마이그레이션하고, NuGet 참조를 교체하고, 인스턴스화 및 API 호출 패턴을 업데이트한 후 다음 클래스로 이동합니다.

IronBarcode의 NuGet 패키지 이름은 무엇인가요?

패키지는 'IronBarCode'(대문자 B와 C 포함)입니다. '설치-패키지 IronBarCode' 또는 '닷넷 추가 패키지 IronBarCode'로 설치합니다. 코드의 사용 지시어는 'using IronBarCode;'입니다.

IronBarcode는 Telerik 바코드와 비교하여 어떻게 Docker 배포를 간소화하나요?

IronBarcode는 외부 SDK 파일이나 마운트된 라이선스 구성이 없는 NuGet 패키지입니다. Docker에서 IRONBARCODE_LICENSE_KEY 환경 변수를 설정하면 패키지가 시작 시 라이선스 유효성 검사를 처리합니다.

Telerik에서 마이그레이션한 후 IronBarcode가 모든 바코드 형식을 자동으로 감지하나요?

예. IronBarcode는 지원되는 모든 형식에서 기호를 자동으로 감지합니다. 명시적인 바코드 유형 열거가 필요하지 않습니다. 형식이 이미 알려져 있고 성능이 중요한 경우 BarcodeReaderOptions를 사용하여 검색 공간을 최적화하여 제한할 수 있습니다.

IronBarcode는 별도의 라이브러리 없이 PDF에서 바코드를 판독할 수 있나요?

예. BarcodeReader.Read("document.pdf")는 기본적으로 PDF 파일을 처리합니다. 결과에는 발견된 각 바코드에 대한 페이지 번호, 형식, 값 및 신뢰도가 포함됩니다. 외부 PDF 렌더링 단계가 필요하지 않습니다.

IronBarcode는 병렬 바코드 처리를 어떻게 처리하나요?

IronBarcode의 정적 메서드는 상태 저장소가 없고 스레드에 안전합니다. 스레드별 인스턴스 관리 없이 파일 목록에 직접 Parallel.ForEach를 사용할 수 있습니다. BarcodeReaderOptions.MaxParallelThreads는 내부 스레드 예산을 제어합니다.

Telerik Barcode에서 IronBarcode로 마이그레이션하면 어떤 결과 속성이 변경되나요?

일반적인 이름 변경: 바코드 값은 값으로, 바코드 유형은 형식으로 바뀝니다. IronBarcode 결과에는 신뢰도 및 페이지 번호도 추가됩니다. 솔루션 전반의 검색 및 바꾸기 기능은 기존 결과 처리 코드에서 이름 변경을 처리합니다.

CI/CD 파이프라인에서 IronBarcode 라이선싱을 설정하려면 어떻게 해야 하나요?

IRONBARCODE_LICENSE_KEY를 파이프라인 시크릿으로 저장하고 애플리케이션 시작 코드에 IronBarCode.License.LicenseKey를 할당하세요. 하나의 비밀은 개발, 테스트, 스테이징 및 프로덕션을 포함한 모든 환경에 적용됩니다.

IronBarcode는 사용자 지정 스타일로 QR 코드 생성을 지원하나요?

예. QRCodeWriter.CreateQrCode()는 변경바코드색()을 통한 사용자 지정 색상, 추가브랜드 로고()를 통한 로고 임베딩, 구성 가능한 오류 수정 수준, PNG, JPG, PDF, 스트림을 포함한 여러 출력 형식을 지원합니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

아이언 서포트 팀

저희는 주 5일, 24시간 온라인으로 운영합니다.
채팅
이메일
전화해