푸터 콘텐츠로 바로가기
다른 구성 요소와 비교

Spire.Barcode와 IronBarcode: C# 바코드 라이브러리 비교

Spire.Barcode를 읽을 때 바코드 유형이 필요합니다: @@--code-51979--@@. 입력되는 바코드의 형식이 다양할 수 있는 문서를 처리하는 경우, 값을 추출하기 전에 형식 감지 루프를 작성해야 합니다. 해당 API 결정 하나가 Spire.Barcode를 사용하여 바코드 스캔 워크플로를 구축하는 방식의 모든 것을 좌우하므로, 도입하기 전에 그 의미를 이해하는 것이 중요합니다.

Spire.Barcode 이해하기

Spire.Barcode는 Spire.Doc, Spire.XLS, Spire.PDF 제품군을 생산하는 중국 소프트웨어 회사인 E-iceblue에서 개발한 상용 .NET 바코드 라이브러리입니다. 이 라이브러리는 다양한 1D ​​및 2D 심볼 체계에 걸쳐 바코드 생성 및 판독을 지원하며, 보다 광범위한 E-iceblue 문서 처리 생태계와 통합되도록 설계되었습니다.

E-iceblue는 두 가지 패키지를 게시합니다: FreeSpire.Barcode은 무료로, Spire.Barcode은 상용 제품으로 제공합니다. 무료 패키지는 기간 한정 체험판이 아니라 의도적인 제한이 있는 영구적인 제품입니다. 상용 패키지는 모든 심볼 세트를 사용할 수 있도록 하고 무료 버전에 있는 제한 사항을 제거하지만, 사용 중인 다른 Spire 제품과는 별도의 라이선스 구매가 필요합니다.

Spire.Barcode의 주요 아키텍처 특징은 다음과 같습니다.

  • 필수 바코드 유형 매개변수: BarcodeScanner.Scan()를 호출할 때마다 BarCodeType 열거형 값이 필요합니다. 파일 경로만 입력받아 자동으로 파일 형식을 감지하는 오버로드된 함수는 없습니다.
  • 설정 개체 생성 모델: 바코드 생성은 BarcodeSettings 인스턴스로 전달되는 변경 가능한 BarCodeGenerator 개체를 중심으로 이루어지며, 출력이 생성되기 전에 여러 속성 할당을 필요로 합니다.
  • PDF를 직접 지원하지 않습니다: Spire.Barcode는 PDF 파일에서 바코드를 직접 읽을 수 없습니다. PDF 기반 워크플로에는 별도의 Spire.PDF 패키지, 별도의 라이선스, 개발자가 작성한 수동 페이지 및 이미지 추출 코드가 필요합니다.
  • FreeSpire.Barcode 무료 버전 제한 사항: 무료 버전은 생성된 바코드에 큰 평가용 워터마크를 적용하고, 스캔 성능을 의도적으로 저하시키며, 사용 가능한 심볼 세트를 제한하고, 경고 대화 상자를 표시하지 않으려면 E-iceblue에서 등록 키를 받아야 합니다.
  • E-iceblue 생태계 통합: Spire.Doc 또는 Spire.XLS를 이미 사용하고 있는 팀은 API 호환성 및 번들 가격 혜택을 누릴 수 있습니다. Spire.Barcode를 단독으로 사용하는 팀은 생태계 혜택 없이 제품별 라이선스 비용을 전액 부담해야 합니다.
  • 리턴 유형: BarcodeScanner.Scan()는 형식 메타데이터를 포함하지 않는 string[]를 반환합니다. 감지된 유형은 결과에 포함되지 않습니다.

형식 명세 요구사항

Spire.Barcode의 BarcodeScanner.Scan()에는 파일 경로만 허용하는 오버로드가 없습니다. 모든 읽기 작업에서는 호출하는 코드가 바코드 형식을 미리 선언해야 합니다. 단일 형식 워크플로의 경우 이는 가능하지만, 혼합 형식 문서 처리의 경우 반복적인 문제가 발생할 수 있습니다.

// Spire.Barcode: multi-format detection requires a guessing loop
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };

string foundValue = null;
foreach (var type in candidates)
{
    string[] found = scanner.Scan("barcode.png", type);
    if (found.Length > 0)
    {
        foundValue = found[0];
        break;
    }
}
// Spire.Barcode: multi-format detection requires a guessing loop
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };

string foundValue = null;
foreach (var type in candidates)
{
    string[] found = scanner.Scan("barcode.png", type);
    if (found.Length > 0)
    {
        foundValue = found[0];
        break;
    }
}
Imports Spire.Barcode

Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}

Dim foundValue As String = Nothing
For Each type In candidates
    Dim found As String() = scanner.Scan("barcode.png", type)
    If found.Length > 0 Then
        foundValue = found(0)
        Exit For
    End If
Next
$vbLabelText   $csharpLabel

후보 배열에 추가되는 모든 유형은 추가적인 스캔 단계를 의미합니다. 목록에 없는 형식은 아무런 경고 없이 누락됩니다. 개발자는 완벽한 타입 목록을 유지하고 새로운 형식이 워크플로에 추가될 때마다 재테스트를 수행할 책임이 있습니다.

IronBarcode이해하기

IronBarcode 는 Iron Software 에서 개발한 상용 .NET 바코드 라이브러리입니다. 이 솔루션은 인스턴스 관리가 필요 없는 정적 API 모델을 통해 바코드 읽기 및 생성 기능을 모두 제공합니다. 이 라이브러리는 추가적인 종속성 없이 네이티브 PDF 및 이미지 처리 지원을 포함하는 단일 NuGet 패키지로 제공됩니다.

IronBarcode의 판독 엔진은 단 한 번의 스캔으로 50개 이상의 심볼에 대한 자동 형식 감지를 수행합니다. BarcodeReader.Read()에서 반환되는 결과 개체에는 감지된 바코드 유형, 디코딩된 값, PDF 소스의 페이지 번호 및 소스 이미지 내의 경계 좌표와 같은 컨텍스트 메타데이터가 포함됩니다.

IronBarcode 의 주요 특징은 다음과 같습니다.

  • 자동 형식 감지: BarcodeReader.Read()에는 유형 매개변수가 필요하지 않습니다. 라이브러리는 스캔 중에 심볼을 식별하고 결과 객체에 포함시킵니다.
  • 단일 패키지 PDF 지원: PDF 파일은 추가 NuGet 패키지, 라이선스 또는 수동 페이지 추출 코드 없이 BarcodeReader.Read()로 직접 받을 수 있습니다.
  • 플루언트 생성 API: BarcodeWriter.CreateBarcode()는 단일 표현식으로 크기 조정, 스타일 지정 및 저장을 위한 체인 가능한 객체를 반환하는 정적 팩토리 메서드입니다.
  • 모든 기능을 갖춘 평가판 모드:IronBarcode평가판은 정식 라이선스 제품과 동일한 패키지로 실행되어, 완벽한 판독 속도, 모든 심볼 지원 및 모든 기능을 제공합니다. 시험 모드에서 생성된 출력물에는 가장자리에 작은 워터마크가 표시됩니다. 읽기 행동에는 영향이 없습니다.
  • BarcodeReaderOptions 튜닝용: 판독 속도, 다중 바코드 감지, 이미지 전처리 및 예상 기호 필터는 라이브러리 제품을 전환하지 않고도 구성할 수 있습니다.
  • 메타데이터가 있는 결과 개체: BarcodeResults 컬렉션의 각 결과는 Value, BarcodeType, PageNumber 및 이미지 영역 데이터를 노출합니다.

기능 비교

다음 표는 Spire.Barcode와IronBarcode의 주요 차이점을 요약한 것입니다.

기능 Spire.Barcode IronBarcode
바코드 판독 예 (바코드 유형 필수) 예 (자동 감지)
바코드 생성
자동 형식 감지 아니요
네이티브 PDF 지원 아니요 (Spire.PDF 파일이 필요합니다)
무료 티어 FreeSpire.Barcode (제한됨) 체험 모드 (모든 기능 사용 가능)
기호 개수 39세 이상 (상업용) 50세 이상
라이선스 모델 좌석별 요금제 및 구독 영구적 보증(선택적 지원 포함)

상세 기능 비교

기능 Spire.Barcode IronBarcode
독서
자동 형식 감지 아니요
바코드 유형 필수 아니요
형식 메타데이터를 반환합니다. 아니요
이미지당 여러 개의 바코드
읽기 속도 제어 아니요 예 (바코드리더옵션)
머신러닝 기반 오류 수정 아니요
세대
API 모델 설정 객체 + 생성기 유동적인 체인을 갖춘 정적 공장
맞춤 로고가 포함된 QR 코드 상업용 등급 전용 모든 등급
출력 형식 이미지 (PNG, JPEG, BMP) PNG, JPEG, BMP, SVG, HTML, 스트림
유창한 체이닝 아니요
PDF 지원
PDF에서 바코드를 읽어오기 Spire.PDF가 필요합니다. 기본 제공, 추가 패키지 필요 없음
결과 페이지의 번호 수동 추적
추가 라이선스 필요 예 (Spire.PDF) 아니요
플랫폼
.NET Framework
.NET Core / .NET 5 이상
도커/리눅스
상징 체계
1D(Code128, Code39, EAN, UPC)
2D(QR, DataMatrix, PDF417)
총 기호 개수 39세 이상 (상업용) 50세 이상
라이선스
무료 티어 FreeSpire.Barcode (워터마크 처리됨, 화질 저하됨) 체험 모드 (최대 속도, 작은 워터마크)
무료 티어 이용을 위해서는 등록이 필요합니다. 아니요
라이선스 모델 좌석별 영구 구독 갱신 옵션이 있는 영구 계약
가격 진입점 349달러(단일 개발자 기준) $749 (Lite)

바코드 판독

Spire.바코드 접근법

Spire.Barcode의 BarcodeScanner.Scan()는 모든 호출에 BarCodeType 매개 변수가 필요합니다. 단일 유형 호출은 형식이 알려져 있고 보장된 경우에 적합합니다.

// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);

foreach (string value in results)
{
    Console.WriteLine(value);
}
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);

foreach (string value in results)
{
    Console.WriteLine(value);
}
Imports Spire.Barcode

Dim scanner As New BarcodeScanner()
Dim results As String() = scanner.Scan("barcode.png", BarCodeType.Code128)

For Each value As String In results
    Console.WriteLine(value)
Next
$vbLabelText   $csharpLabel

형식을 미리 알 수 없는 경우, 유일한 방법은 후보 유형을 순회하는 것입니다. 각 순회는 전체 스캔 과정이며, 목록에 없는 형식은 오류 없이 누락됩니다. 결과는 형식 정보가 없는 string[]이므로 형식에 따른 다운스트림 라우팅에는 호출자가 추가적인 상태 관리가 필요합니다.

IronBarcode접근법

IronBarcode의 BarcodeReader.Read()에는 유형 매개변수가 필요하지 않습니다. 이 라이브러리는 지원되는 모든 심볼 체계에 걸쳐 형식을 한 번에 자동으로 감지합니다. 이미지에서 바코드를 읽는 작업은 소스에 다양한 형식이 포함되어 있더라도 단일 메서드 호출로 수행됩니다.

//IronBarcode— auto-detection built in
var results = BarcodeReader.Read("barcode.png");

foreach (var result in results)
{
    Console.WriteLine($"{result.BarcodeType}: {result.Value}");
}
//IronBarcode— auto-detection built in
var results = BarcodeReader.Read("barcode.png");

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

'IronBarcode— auto-detection built in
Dim results = BarcodeReader.Read("barcode.png")

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

각 결과 개체에는 BarcodeType, Value 및 위치 메타데이터가 포함됩니다. 형식에 기반한 다운스트림 라우팅은 추가적인 상태를 필요로 하지 않습니다. 유형은 결과 자체에 포함되어 있습니다.

무료 티어 제한 사항

Spire.Barcode 무료 티어

FreeSpire.Barcode는 생성된 바코드 이미지에 큰 평가용 워터마크를 적용합니다. 워터마크가 바코드를 가려 생산에 사용할 수 없게 만들고, 생성 품질을 제대로 평가하기 어렵게 만듭니다. 무료 버전에서는 스캔 성능이 의도적으로 저하되어 있으므로 평가 중에 측정된 처리량은 상용 Spire.Barcode의 성능을 나타내지 않습니다. 무료 패키지를 사용하는 경우에도 실행 중 경고 대화 상자가 표시되지 않도록 하려면 E-iceblue에서 발급받은 등록 키가 필요합니다. 무료 버전에서 사용 가능한 심볼 세트는 상용 버전에서 제공되는 심볼 세트의 일부입니다. 이러한 제약 조건들을 종합적으로 고려하면 FreeSpire.Barcode를 기반으로 구축된 평가는 상용 제품이 제공하는 기능을 정확하게 나타내지 못합니다.

IronBarcode체험 모드

IronBarcode의 평가판은 라이선스 키 없이 사용할 수 있는 라이선스 패키지입니다. 읽기 기능은 모든 기호 지원을 통해 최고 속도로 작동하며, 동작에 대한 제약이 없습니다. 읽기 속도 및 정확도 옵션은 체험판 모드와 정식 라이선스 모드에서 동일하게 작동합니다. 시험 모드에서 생성된 바코드 출력물에는 이미지 가장자리에 작은 워터마크가 표시됩니다. 바코드 자체를 가리지는 않습니다.IronBarcode평가 중에 측정된 동작은 실제 운영 환경에 배포될 때의 동작입니다.

측면 FreeSpire.Barcode IronBarcode체험판
생성된 출력물에 워터마크 표시 크기가 커서 바코드를 덮습니다. 작고, 이미지 가장자리에만 해당됩니다.
읽기 성능 의도적으로 저하됨 전속력
기호 지원 제한된 하위 집합(~20개 유형) 전체 세트 (50종 이상)
등록 필요 예 (E-iceblue에서 제공하는 무료 키) 아니요
사용 가능한 기능 제한된 하위 집합 모든 기능 세트
시간 제한 없음 30일

PDF 바코드 지원

Spire.바코드 접근법

Spire.Barcode는 기본적으로 PDF를 읽는 기능을 제공하지 않습니다. PDF 파일에서 바코드를 추출하려면 개발자가 별도의 Spire.PDF 패키지를 설치하고, 별도의 Spire.PDF 라이선스를 구매한 후 수동 페이지 반복 및 이미지 추출 코드를 작성해야 바코드 스캔을 시작할 수 있습니다:

// Spire.Barcode + Spire.PDF: two libraries, two licenses
using Spire.Pdf;

var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");

var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
    var images = page.ExtractImages();
    foreach (var image in images)
    {
        // BarCodeType is still required even here
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}
// Spire.Barcode + Spire.PDF: two libraries, two licenses
using Spire.Pdf;

var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");

var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
    var images = page.ExtractImages();
    foreach (var image in images)
    {
        // BarCodeType is still required even here
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}
Imports Spire.Pdf

Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")

Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
    Dim images = page.ExtractImages()
    For Each image In images
        ' BarCodeType is still required even here
        Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
    Next
Next
$vbLabelText   $csharpLabel

이 패턴을 사용하려면 두 개의 NuGet 패키지, 두 개의 라이선스 계약, 그리고 개발자가 작성한 페이지 관리 코드가 필요합니다. PDF 내의 래스터 이미지가 아닌 벡터 콘텐츠에 바코드가 포함되어 있는 경우, 이미지 추출 방식으로는 바코드를 전혀 추출하지 못할 수 있습니다.

IronBarcode접근법

IronBarcode 추가적인 종속성 없이 PDF 파일을 기본적으로 처리합니다. PDF 문서에서 바코드 읽기는 이미지 파일에 사용되는 것과 동일한 BarcodeReader.Read() API를 사용하는 단일 메서드 호출입니다. 각 결과 객체에는 페이지 번호가 포함되어 있습니다.

// IronBarcode: native PDF support, no additional library
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.BarcodeType} = {barcode.Value}");
}
// IronBarcode: native PDF support, no additional library
var results = BarcodeReader.Read("document.pdf");

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

Dim results = BarcodeReader.Read("document.pdf")

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

수동 페이지 추출, 별도의 패키지 설치, 추가 라이선스 구매가 필요하지 않습니다.

생성 API

Spire.바코드 접근법

Spire.Barcode의 생성 모델은 변경 가능한 BarcodeSettings 구성 개체를 중심으로 합니다. 개발자는 설정을 인스턴스화하고, 속성을 개별적으로 할당하고, 설정 개체를 BarCodeGenerator에 전달한 다음 GenerateImage()를 호출합니다:

// Spire.Barcode generation
using Spire.Barcode;

BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
// Spire.Barcode generation
using Spire.Barcode;

BarcodeSettings settings = new BarcodeSettings();
settings.Type = BarCodeType.Code128;
settings.Data = "12345678";
settings.ShowText = true;
settings.TextMargin = 5;
settings.BarHeight = 60;
settings.Unit = GraphicsUnit.Pixel;

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
Imports Spire.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

Dim settings As New BarcodeSettings()
settings.Type = BarCodeType.Code128
settings.Data = "12345678"
settings.ShowText = True
settings.TextMargin = 5
settings.BarHeight = 60
settings.Unit = GraphicsUnit.Pixel

Dim generator As New BarCodeGenerator(settings)
Dim barcodeImage As Image = generator.GenerateImage()
barcodeImage.Save("barcode.png", ImageFormat.Png)
$vbLabelText   $csharpLabel

변경 가능한 설정 객체는 단일 인스턴스가 여러 생성 작업에서 재사용될 때 구성이 의도치 않게 호출 간에 공유될 수 있음을 의미합니다. 제너레이터 클래스는 자체적인 구성 로직을 포함하지 않는 추가적인 인스턴스화 단계를 추가합니다.

IronBarcode접근법

IronBarcode 선택적 플루언트 체이닝을 지원하는 정적 팩토리 메서드를 사용합니다. 관리할 설정 객체나 생성기 인스턴스가 없습니다.

//IronBarcodegeneration
using IronBarCode;

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

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
//IronBarcodegeneration
using IronBarCode;

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

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
Imports IronBarCode

' IronBarcode generation
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")

' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

사용자 지정 로고가 포함된 QR 코드는 모든IronBarcode라이선스 등급에서 이용 가능합니다.

var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-with-logo.png")
$vbLabelText   $csharpLabel

가격

Spire.Barcode의 가격 구조는 네 가지 등급으로 구성됩니다.

라이선스 가격
단일 개발자 $349
사이트 라이선스 $1,398
OEM $6,990
신청 연간 999달러

영구 사용권은 특정 버전을 포함합니다. 지속적인 업데이트 및 지원을 받으려면 영구 라이선스 외에 활성 구독이 필요합니다. 개발자 수가 1명에서 2명으로 늘어나는 팀은 349달러짜리 단일 개발자 요금제에서 1,398달러짜리 사이트 라이선스로 바로 전환됩니다. PDF 바코드 추출에 Spire.PDF도 필요한 경우, 해당 라이선스 비용은 별도로 발생합니다.

IronBarcode 라이선스는 세 가지 영구 라이선스 등급을 사용합니다.

라이선스 가격 개발자
Lite $749 1
Professional $1,499 10
무제한 $2,999 무제한

모든 등급은 영구 사용 가능하며, 연간 지원 및 업데이트 구독을 추가할 수 있는 옵션이 제공됩니다. Spire.Barcode의 사이트 라이선스($1,398)와 1년 구독료($999)를 Plus 5인 개발자 팀이 첫 해에 지불하는 총 비용은 $2,397이며, 이는 2년 차 비용이 필요 없는 일회성 구매 방식인 IronBarcodeProfessional($1,499)과 유사합니다.

API 매핑 참조

Spire.Barcode IronBarcode
@@--코드-52010--@@ 정적 BarcodeReader.Read()
@@--코드-52012--@@ @@--코드-52013--@@
BarCodeType.Code128 (필수 매개변수) 자동 감지됨; 이에 상응하는 번역 필요 없음
@@--코드-52015--@@ BarcodeResults 컬렉션
results[0] (문자열) results[0].Value (문자열)
@@--코드-52019--@@ 매개변수 BarcodeWriter.CreateBarcode()@
@@--코드-52021--@@ 두 번째 매개변수로 BarcodeEncoding.Code128 사용
@@--코드-52023--@@ CreateBarcode()의 첫 번째 매개변수
@@--코드-52025--@@ 필요 없습니다. 정적 팩토리가 이를 대체합니다
@@--코드-52026--@@ + @@--코드-52027--@@ .SaveAsPng(path) 또는 .SaveAsJpeg(path)
Spire.PDF (PDF 읽기용) 필요 없습니다. PDF를 기본적으로 지원합니다.
@@--코드-52031--@@ @@--코드-52032--@@
@@--코드-52033--@@ @@--코드-52032--@@

팀이 Spire.Barcode에서IronBarcode로 전환을 고려할 때

혼합 형식 문서 처리

단일 바코드 형식으로 시작한 팀도 시간이 지남에 따라 사용하는 바코드 형식의 다양성이 증가하는 경우가 많습니다. Code128 라벨로 시작한 창고 관리 애플리케이션은 DataMatrix, GS1-128 또는 QR 코드를 사용하는 공급업체로부터 배송물을 받을 수도 있습니다. 워크플로에 새로운 형식이 추가될 때마다 형식 추측 루프에서 후보 배열을 업데이트하고, 감지 로직을 다시 테스트하고, 반복 순서로 인해 기존 형식이 변경되지 않았는지 확인해야 합니다. 형식 다양성이 증가하여 해당 루프의 유지 관리 오버헤드가 반복적인 개발 비용으로 작용하게 되면, 팀은 자동 감지 기능이 이러한 부담을 완전히 없앨 수 있는지 여부를 평가합니다.

PDF 통합

문서 처리량이 많은 애플리케이션은 바코드를 독립형 이미지가 아닌 PDF 파일에서 추출해야 하는 경우가 종종 발생합니다. Spire.Barcode 워크플로에서 이러한 전환을 위해서는 Spire.PDF 라이선스를 취득하고, 두 번째 패키지를 통합하고, 바코드 판독이 이루어지기 전에 페이지 반복 및 이미지 추출 인프라를 구축해야 합니다. 초기 구매 시 이러한 요구 사항을 예상하지 못한 팀은 개념적으로 바코드 판독에 속하는 작업에 대해 두 개의 제품 라이선스와 두 개의 API 인터페이스를 관리해야 하는 상황에 직면하게 됩니다. PDF 지원 기능을 사용하려면 별도의 구매가 필요하다는 사실을 알게 되면 제품 선택을 재고하게 되는 경우가 많습니다.

무료 평가판 제한 사항

FreeSpire.Barcode를 평가한 후 상용 라이선스를 구매한 팀들은 상용 제품이 평가 결과와 다르게 작동한다고 보고하는 경우가 있습니다. 이는 의도적인 설계입니다. 무료 버전은 읽기 성능을 저하시키고 지원되는 심볼 세트를 제한하므로, 평가 중에 수행된 벤치마크 및 형식 지원 테스트 결과가 상용 배포 환경에 적용되지 않습니다. 팀이 구매 후 이러한 불일치를 발견하면, 종종 시험 사용 결과가 실제 운영 환경에서의 동작을 대표하는 대안을 찾습니다.

제품 수량 감소

기술 스택을 표준화하는 조직은 때때로 Spire.Barcode를 E-iceblue 제품군의 구성 요소 중 하나로 간주하며, 각 제품에는 고유한 라이선스 비용과 갱신 주기가 있습니다. Spire.Barcode의 주요 목적이 Spire.Doc 또는 Spire.XLS와의 심층적인 통합이 아닌 문서 처리 파이프라인 내에서의 바코드 판독이라면, 단일 독립형 바코드 라이브러리가 라이선스 복잡성과 지원 범위를 줄이는 데 도움이 될지 평가해 볼 필요가 있습니다.

일반적인 마이그레이션 고려사항

BarCodeType 매개변수 제거

Spire.Barcode 코드베이스의 모든 scanner.Scan() 호출에는 BarCodeType 인수가 포함됩니다. 이러한 호출을 BarcodeReader.Read()로 바꾸면 유형 매개변수가 완전히 제거됩니다. 유형 추측 루프(후보 BarCodeType 값을 반복하는 포리치 블록)는 완전히 삭제할 수 있습니다; 한 번의 BarcodeReader.Read() 호출로 전체 루프를 대체합니다.

반환 유형 업데이트

Spire.Barcode의 Scan()string[]을 반환합니다. IronBarcode는 BarcodeResults 컬렉션을 반환합니다. 코드-52043--@@에 할당하거나 해당 유형을 예상하는 메서드에 결과를 전달하는 사이트를 호출하는 경우 업데이트가 필요합니다. 값을 배열로 추출할 때는 .Select(r => r.Value).ToArray()를 사용합니다; 첫 번째 결과에 액세스하려면 .First()?.Value를 사용합니다.

첨탑 제거.PDF 패키지

PDF 파일에서 바코드 추출을 지원하기 위해서만 Spire.PDF을 설치한 경우, IronBarcode로 마이그레이션한 후 제거할 수 있습니다. 모든 using Spire.Pdf; 가져오기 및 수동 페이지 반복 블록은 단일 BarcodeReader.Read("file.pdf") 호출로 대체됩니다. 바코드 추출 이외의 다른 문서 작업에 Spire.PDF를 사용하는 경우, 바코드 관련 코드 경로만 교체하지 말고 그대로 유지해야 합니다.

네임스페이스 변경

코드-52050--@@를 @@--코드-52051--@@로 바꾸세요. 생성 시 BarCodeType 열거형은 BarcodeEncoding로 대체되며, 읽기 시에는 이에 상응하는 열거형이 필요하지 않습니다. 라이선스 초기화가 애플리케이션 시작 시 BarcodeSettings.ApplyKey() 또는 Spire.License.LicenseProvider.SetLicenseKey()에서 단일 IronBarCode.License.LicenseKey 속성 할당으로 변경됩니다.

IronBarcode추가 기능

위의 비교에서는 다루지 않은IronBarcode기능은 다음과 같습니다.

  • 이미지 일괄 읽기: BarcodeReader.Read()는 파일 경로 배열, Stream 개체 및 Bitmap 인스턴스를 허용하여 입력 컬렉션에 대한 수동 루프 없이 일괄 처리를 가능하게 합니다.
  • 바코드 리더 옵션: 판독 속도, 다중 바코드 감지, 최대 후보 및 이미지 향상 전처리는 Read()에 전달된 단일 옵션 개체를 통해 구성할 수 있습니다.
  • SVG 및 HTML 출력: BarcodeWriter.CreateBarcode()은 래스터 이미지 형식 외에도 .SaveAsSvg().SaveAsHtmlFile()을 지원하여 웹 임베딩이 가능한 바코드 출력을 가능하게 합니다.
  • 로고가 있는 QR코드: QRCodeWriter.CreateQrCode()는 모든 라이선스 계층에서 AddBrandLogo()를 지원하므로 적절한 오류 수정 수준에서 스캔 안정성에 영향을 주지 않고 사용자 지정 이미지를 QR코드 센터에 합성할 수 있습니다.
  • 스트림 및 바이트 배열 출력: 생성된 바코드는 Stream 또는 byte[]로 내보내 중간 파일 없이 직접 저장하거나 HTTP 응답을 작성할 수 있습니다.
  • GS1-128 및 구조화된 심볼:IronBarcodeSpire.Barcode 상용 버전에서 제공되는 것 이상의 구조화된 GS1 심볼을 지원합니다.

.NET 호환성 및 미래 준비

IronBarCode.NET Framework4.6.2 이상, .NET Core 3.1, 그리고 .NET 5부터 .NET 9까지의 모든 버전을 지원하며, 2026년까지 출시 일정이 확정됨에 따라 .NET 10과의 호환성 업데이트가 예정되어 있습니다. 이 라이브러리는 Windows, Linux, macOS에서 테스트되었으며, Docker 컨테이너에서 추가적인 네이티브 종속성 구성 없이 실행됩니다. Spire.Barcode는 크로스 플랫폼 .NET 배포도 지원하지만, Linux 및 Docker 구성의 경우 사용 중인 버전에 따라 추가적인 네이티브 라이브러리 설정이 필요할 수 있습니다. IronBarcode는 정기적인 릴리스 주기를 통해 새로운 C# 언어 기능 및 .NET 런타임 개선 사항을 플랫폼 호환성 업데이트와 함께 통합합니다.

결론

Spire.Barcode와IronBarcode바코드 판독 문제를 근본적으로 다른 관점에서 접근합니다. Spire.Barcode는 형식 관련 지식을 호출자에게 요구합니다. 모든 스캔 작업에서 개발자는 심볼을 미리 선언해야 하는데, 이는 폐쇄형 형식 워크플로에서는 실행 가능한 제약 조건이지만 개방형 형식 워크플로에서는 유지 관리 부담이 됩니다.IronBarcode형식 감지 기능을 라이브러리 내부에 배치하여 형식 매개변수를 요구하지 않고 감지된 형식을 결과의 일부로 반환합니다.

Spire.Barcode는 단일 보장 바코드 형식을 처리하는 애플리케이션에 적합한 선택이며, 특히 팀이 이미 E-iceblue 제품 생태계에 투자한 경우 더욱 그렇습니다. 설정 객체 생성 모델은 명시적 구성을 선호하는 개발자에게 친숙하며, 상용 라이선스는 1인 개발자 프로젝트에 경쟁력 있는 가격입니다. 모든 통화에서 BarCodeType.Code128을 보장할 수 있는 팀은 필수 유형 매개변수에 대한 실질적인 비용을 지불하지 않습니다.

IronBarcode 포맷 다양성이 예측 불가능하거나 증가하는 애플리케이션, PDF 바코드 추출이 최우선 요구 사항인 애플리케이션, 그리고 평가 정확도가 중요한 애플리케이션에 더 적합합니다. 이 시험판은 모든 심볼 세트를 사용하여 실제 운영 환경과 동일한 속도로 실행되므로 평가 중에 수행된 성능 벤치마크 및 형식 지원 테스트 결과를 실제 운영 환경에 직접 적용할 수 있습니다. PDF를 기본적으로 지원하므로 별도의 라이브러리가 필요 없으며 관련 라이선스 비용도 발생하지 않습니다.IronBarcodeSpire.Barcode의 대안으로 고려하는 팀의 경우, Spire.Barcode 대안 개요를 통해 비교에 대한 추가적인 맥락을 확인할 수 있습니다.

최종 결정은 형식의 예측 가능성과 워크플로 범위에 달려 있습니다. Code128 라벨 표준이 고정되어 있고 PDF 원본 문서가 없는 창고 시스템에서는 IronBarcode의 자동 감지 기능을 선호할 실질적인 이유가 없습니다. 외부 공급업체로부터 바코드를 수집하고, 다양한 심볼을 처리하며, PDF 첨부 파일에서 바코드를 읽는 문서 처리 파이프라인은 필수 유형 매개변수와 두 개의 라이브러리가 필요한 PDF 형식을 지속적인 유지 관리 비용으로 인식하는데,IronBarcode사용하면 이러한 비용을 절감할 수 있습니다.

자주 묻는 질문

Spire.Barcode란 무엇인가요?

Spire.Barcode는 C# 애플리케이션에서 바코드를 생성하고 판독하기 위한 .NET 바코드 라이브러리입니다. 개발자가 .NET 프로젝트용 바코드 솔루션을 선택할 때 평가하는 여러 대안 중 하나입니다.

Spire.Barcode와 IronBarcode의 주요 차이점은 무엇인가요?

Spire.Barcode는 일반적으로 사용 전에 인스턴스 생성 및 구성이 필요한 반면, IronBarcode는 인스턴스 관리가 필요 없는 정적 상태 비저장 API를 사용합니다. 또한 IronBarcode는 모든 환경에서 기본 PDF 지원, 자동 형식 감지, 단일 키 라이선싱을 제공합니다.

IronBarcode가 Spire.Barcode보다 라이선스 취득이 더 쉬운가요?

IronBarcode는 개발 및 프로덕션 배포를 모두 포괄하는 단일 라이선스 키를 사용합니다. 따라서 SDK 키와 런타임 키를 분리하는 라이선싱 시스템에 비해 CI/CD 파이프라인 및 Docker 구성이 간소화됩니다.

IronBarcode는 Spire.Barcode가 지원하는 모든 바코드 형식을 지원하나요?

IronBarcode는 QR코드, Code 128, Code 39, DataMatrix, PDF417, Aztec, EAN-13, UPC-A, GS1 등 30개 이상의 바코드 심볼로지를 지원합니다. 형식 자동 감지 기능은 명시적인 형식 열거가 필요하지 않음을 의미합니다.

IronBarcode는 네이티브 PDF 바코드 판독을 지원하나요?

예. IronBarcode는 별도의 PDF 렌더링 라이브러리가 필요 없이 BarcodeReader.Read("document.pdf")를 사용하여 PDF 파일에서 직접 바코드를 판독합니다. 페이지별 결과에는 페이지 번호, 바코드 형식, 값 및 신뢰도 점수가 포함됩니다.

IronBarcode는 Spire.Barcode와 비교하여 일괄 처리를 어떻게 처리하나요?

IronBarcode의 정적 메서드는 상태 저장소가 없고 자연스럽게 스레드에 안전하므로 스레드별 인스턴스 관리 없이 Parallel.ForEach를 직접 사용할 수 있습니다. 어떤 가격대에서도 처리량 상한선이 없습니다.

IronBarcode 어떤 .NET 버전을 지원하나요?

IronBarcode는 단일 NuGet 패키지로 .NET Framework 4.6.2+, .NET Core 3.1 및 .NET 5, 6, 7, 8, 9를 지원합니다. 플랫폼 대상에는 Windows x64/x86, Linux x64, macOS x64/ARM이 포함됩니다.

.NET 프로젝트에 IronBarcode를 설치하려면 어떻게 해야 하나요?

NuGet을 통해 IronBarcode 설치: 패키지 관리자 콘솔에서 'Install-Package IronBarCode'를 실행하거나 CLI에서 '닷넷 추가 패키지 IronBarCode'를 실행합니다. 추가 SDK 인스톨러나 런타임 파일은 필요하지 않습니다.

Spire.Barcode와 달리 IronBarcode를 구매하기 전에 평가할 수 있나요?

예. IronBarcode의 평가판 모드는 완전한 디코딩된 바코드 값을 반환하며 생성된 출력 이미지에만 워터마크가 표시됩니다. 구매를 결정하기 전에 자신의 문서에서 판독 정확도를 벤치마킹할 수 있습니다.

Spire.Barcode와 IronBarcode의 가격 차이는 무엇인가요?

개발 및 프로덕션을 포함하는 단일 개발자 영구 라이선스의 IronBarcode 가격은 $749부터 시작합니다. 가격 세부 정보 및 볼륨 옵션은 IronBarcode 라이선스 페이지에서 확인할 수 있습니다. 별도의 런타임 라이선스 요구 사항은 없습니다.

Spire.Barcode에서 IronBarcode로 마이그레이션하는 것은 간단하나요?

Spire.Barcode에서 IronBarcode로의 마이그레이션에는 주로 인스턴스 기반 API 호출을 IronBarcode의 정적 메서드로 대체하고, 라이선스 상용구를 제거하며, 결과 속성 이름을 업데이트하는 작업이 포함됩니다. 대부분의 마이그레이션에는 코드를 추가하기보다는 줄이는 작업이 포함됩니다.

IronBarcode는 로고가 있는 QR 코드를 생성하나요?

예. QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")는 구성 가능한 오류 수정을 통해 기본적으로 브랜드 이미지를 QR코드에 임베드합니다. ChangeBarCodeColor()를 통해 컬러 QR 코드도 지원됩니다.

커티스 차우
기술 문서 작성자

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

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

아이언 서포트 팀

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