QRCoder.NET vs IronBarcode:C#バーコードライブラリの比較
Spire.Barcode VS IronBarcode: タイプ仕様、PDFサポート、および価格の比較
Spire.Barcodeは読み取り時にバーコードタイプを必要とします: scanner.Scan(path, BarCodeType.Code128)。 入力されるバーコードの形式がどのようなものであっても、処理する文書では、値を抽出する前に形式検出ループを作成する必要があります。 そのたった一つのAPIの決定が、Spire.Barcodeを使ったバーコードスキャンワークフローの構築方法のすべてを左右するため、導入を決める前に理解しておく価値があります。
Spire.Barcodeについて理解する
Spire.Barcodeは、E-iceblue社が開発した商用.NETバーコードライブラリです。E-iceblue社は、Spire.Doc、Spire.XLS、Spire.PDFといった製品ラインも開発している中国のソフトウェア企業です。 このライブラリは、さまざまな1次元および2次元シンボル体系におけるバーコードの生成と読み取りをサポートしており、より広範なE-iceblue文書処理エコシステムとの統合を前提として設計されています。
E-iceblueは2つのパッケージを公開しています: 無料のSpire.Barcode。 無料パッケージは、期間限定の試用版ではなく、意図的に制限が設けられた、恒久的に上限が設定された製品です。 商用パッケージでは、すべてのシンボルセットが利用可能になり、無料版に存在する制限が解除されますが、他のSpire製品を使用する場合は、別途ライセンスを購入する必要があります。
Spire.Barcodeの主なアーキテクチャ上の特徴は以下のとおりです。
- 必須のBarCodeTypeパラメータ:
BarCodeType列挙値が必要です。 ファイルパスのみを受け取り、自動的にフォーマットを検出するオーバーロードは存在しません。 - 設定オブジェクト生成モデル: バーコード生成は、
BarCodeGeneratorインスタンスに渡すことに中心があり、多数のプロパティを設定する必要があります。 -ネイティブの PDF サポートなし: Spire.Barcode は PDF ファイルから直接バーコードを読み取ることができません。 PDFベースのワークフローには、別途Spire.PDFパッケージを必要とし、別個のライセンス、開発者が記述するページや画像の手動での抽出コードが必要です。 - FreeSpire.Barcode の無料版の制限事項:無料版では、生成されたバーコードに大きな評価用透かしが適用され、意図的にスキャン性能が低下し、使用可能なシンボルセットが制限され、警告ダイアログを抑制するには E-iceblue から取得した登録キーが必要です。
- E-iceblueエコシステムとの統合: Spire.DocまたはSpire.XLSを既に利用しているチームは、APIの使い慣れた操作性やバンドル価格の可能性をメリットとして感じるかもしれません。 Spire.Barcodeを単独で使用するチームは、エコシステムのメリットを享受することなく、製品ごとのライセンス費用を全額負担することになります。
- 戻り値の型:
string[]を返しますが、それにはフォーマットメタデータが含まれていません。 検出されたタイプは結果に含まれません。
型式仕様要件
Spire.BarcodeのBarcodeScanner.Scan()はファイルパスのみを受け取るオーバーロードがありません。 読み取り操作を行うには、呼び出し元のコードが事前にバーコード形式を宣言する必要があります。 単一フォーマットのワークフローではこれで問題ありませんが、混合フォーマットのドキュメント処理では、候補となる反復ループが生成されます。
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
// Spire.Barcode: multi-format detection iterates through candidate types
BarcodeScanner scanner = new BarcodeScanner();
var candidates = new[] { BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417 };
string foundValue = null;
foreach (var type in candidates)
{
string[] found = scanner.Scan("barcode.png", type);
if (found.Length > 0)
{
foundValue = found[0];
break;
}
}
Imports Spire.Barcode
Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}
Dim foundValue As String = Nothing
For Each type In candidates
Dim found As String() = scanner.Scan("barcode.png", type)
If found.Length > 0 Then
foundValue = found(0)
Exit For
End If
Next
候補配列に追加される型ごとに、追加のスキャン処理が発生します。 リストに記載されていないフォーマットは、黙って見過ごされる。 開発者は、網羅的な型インベントリを維持し、新しいフォーマットがワークフローに導入されるたびに再テストを行う責任があります。
IronBarcodeを理解する
IronBarcodeは、 Iron Software社が開発した商用.NETバーコードライブラリです。 静的なAPIモデルを通じてバーコードの読み取りと生成の両方を提供するため、インスタンス管理は不要です。 このライブラリは、追加の依存関係を必要とせずにネイティブのPDFおよび画像処理サポートを含む単一のNuGetパッケージとして提供されます。
IronBarcodeの読み取りエンジンは、1回のスキャンで50種類以上のシンボル体系に対応した自動フォーマット検出を実行します。 BarcodeReader.Read()から返される結果オブジェクトには、検出されたフォーマット、デコードされた値、PDFソースのページ番号やソース画像内のバウンディング座標といったコンテキストメタデータが含まれています。
IronBarcodeの主な特徴は以下のとおりです。
- 自動フォーマット検出:
BarcodeReader.Read()にはタイプパラメータが必要ありません。 ライブラリはスキャン中にシンボルを識別し、結果オブジェクトに含めます。 - 単一パッケージのPDFサポート: PDFファイルは
BarcodeReader.Read()によって直接受け入れられ、追加のNuGetパッケージ、ライセンス、手動ページ抽出コードは不要です。 - 流暢な生成API:
BarcodeWriter.CreateBarcode()は静的ファクトリーメソッドで、サイズ、スタイル、保存を単一の式で連鎖可能なオブジェクトを返します。 -フル機能のトライアルモード: IronBarcodeのトライアル版は、ライセンス製品と同じパッケージで動作し、フル読み取り速度、完全なシンボルサポート、およびすべての機能セットを提供します。 トライアルモードで生成された出力には、小さなエッジウォーターマークが含まれます。 読書行動には影響がない。 - 調整用の
BarcodeReaderOptions: 読み取り速度、マルチバーコード検出、画像の前処理、および予想されるシンボロジーフィルターは、ライブラリ製品を切り替えることなく設定可能です。 - メタデータ付きの結果オブジェクト:
PageNumber、および画像領域データが公開されています。
機能比較
以下の表は、Spire.BarcodeとIronBarcodeの主な違いをまとめたものです。
| フィーチャー | Spire.Barcode | IronBarcode |
|---|---|---|
| バーコード読み取り | はい(バーコードタイプは必須です) | はい(自動検出) |
| バーコード生成 | はい | はい |
| 自動フォーマット検出 | なし | はい |
| ネイティブPDFサポート | いいえ(Spire.PDFが必要です) | はい |
| 無料プラン | FreeSpire.Barcode(制限付き) | 体験版(全機能搭載) |
| シンボル数 | ~38(商用) | 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 以上 | はい | はい |
| Docker / Linux | はい | はい |
| 象徴体系 | ||
| 1D(Code128、Code39、EAN、UPC) | はい | はい |
| 2次元(QRコード、データマトリックス、PDF417) | はい | はい |
| シンボルの総数 | ~38(商用) | 50歳以上 |
| ライセンスについて | ||
| 無料プラン | FreeSpire.Barcode(透かし入り、劣化あり) | トライアルモード(フルスピード、小さな透かし入り) |
| 無料プランには登録が必要です | はい | なし |
| ライセンスモデル | シート単位の永久ライセンス+サブスクリプション | 永久契約(更新オプションあり) |
| 価格設定のエントリーポイント | $999/年(サイトサブスクリプション) | $749( Lite、永久) |
バーコード読み取り
Spire.バーコードアプローチ
Spire.Barcodeの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
フォーマットが事前に不明な場合、利用可能な唯一の方法は、候補となるタイプを順に調べていくことです。各反復処理は完全なスキャンパスであり、リストに存在しないフォーマットは黙って見落とされます。 結果はstring[]で、タイプ情報を持たないため、フォーマットに基づくダウンストリームルーティングには、呼び出し側による追加の状態管理が必要です。
IronBarcodeのアプローチ
IronBarcodeのBarcodeReader.Read()にはタイプパラメータが必要ありません。 このライブラリは、サポートされているすべてのシンボル体系において、フォーマットを一度の処理で自動的に検出します。 画像からバーコードを読み取る処理は、ソースにいくつの異なるフォーマットが含まれていても、単一のメソッド呼び出しで済みます。
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
Console.WriteLine($"{result.Format}: {result.Value}");
}
Imports IronBarCode
' IronBarcode: automatic format detection
Dim results = BarcodeReader.Read("barcode.png")
For Each result In results
Console.WriteLine($"{result.Format}: {result.Value}")
Next
各結果オブジェクトにはValue、および位置メタデータが含まれています。 フォーマットに基づく下流ルーティングでは、追加の状態は必要ありません。型は結果自体に含まれています。
無料プランの制限事項
Spire.Barcode 無料ティア
FreeSpire.Barcodeは、生成されたバーコード画像に大きな評価用透かしを適用します。 透かしがバーコードを覆い隠しているため、製品での使用には適さず、生成品質の適切な評価も妨げられる。 無料版ではスキャン性能が意図的に低下しているため、評価中に測定されたスループット値は、商用版のSpire.Barcodeの性能を表すものではありません。 無料版の場合、実行中に警告ダイアログが表示されないようにするには、E-iceblueから取得した登録キーが必要です。 無料プランで利用できるシンボルセットは、有料プランで提供されているシンボルセットの一部です。 これらの制約を総合すると、FreeSpire.Barcode に基づいて構築された評価は、商用製品が提供する機能を正確に反映していないことを意味します。
IronBarcodeトライアルモード
IronBarcodeのトライアル版は、ライセンスキーなしで使用できるライセンスパッケージです。 完全な記号体系サポートと行動制限なしで、フルスピードで読書が可能です。 読書速度と精度に関するオプションは、試用版とライセンス版で同じように動作します。 トライアルモードで生成されたバーコード出力には、画像の端に小さな透かしが入ります。 バーコード自体を覆い隠すことはありません。 IronBarcodeの評価中に測定される動作は、本番環境に出荷される動作と同じです。
| アスペクト | FreeSpire.Barcode | IronBarcodeトライアル |
|---|---|---|
| 生成された出力に透かしが入る | 大型、バーコードを覆う | 小さい、画像の端のみ |
| 読解力 | 意図的に劣化させた | 全速 |
| シンボル表示のサポート | 有料版の限られたサブセット | 全種類セット(50種類以上) |
| 登録が必要です | はい(E-iceblueからの無料キー) | なし |
| 利用可能な機能 | 限定されたサブセット | フル機能セット |
| 期限 | None | 30日間 |
PDFバーコードのサポート
Spire.バーコードアプローチ
Spire.Barcodeには、ネイティブのPDF読み取り機能はありません。 PDFファイルからバーコードを抽出するには、開発者はSpire.PDFパッケージを別途インストールし、別個のSpire.PDFライセンスを購入し、バーコードスキャンを開始する前に手動のページ反復と画像抽出コードを書く必要があります。
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;
var pdf = new PdfDocument();
pdf.LoadFromFile("document.pdf");
var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
var images = page.ExtractImages();
foreach (var image in images)
{
// BarCodeType is still required for each scan call
string[] results = scanner.Scan(image, BarCodeType.QRCode);
}
}
Imports Spire.Pdf
Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")
Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
Dim images = page.ExtractImages()
For Each image In images
' BarCodeType is still required for each scan call
Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
Next
Next
このパターンでは、2つのNuGetパッケージ、2つのライセンス契約、および開発者が作成したページ管理コードが必要です。 PDFファイル内でバーコードがラスター画像ではなくベクター画像に埋め込まれている場合、画像抽出方法ではバーコードを完全に検出できない可能性があります。
IronBarcodeのアプローチ
IronBarcodeは、追加の依存関係なしにPDFファイルをネイティブに処理します。 PDFドキュメントからバーコードを読み取るのは、画像ファイルと同じBarcodeReader.Read() APIを使用した単一のメソッド呼び出しです。 各結果オブジェクトにはページ番号が含まれています。
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");
foreach (var barcode in results)
{
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
Imports IronBarcode
' IronBarcode: native PDF reading from the same Read() method
Dim results = BarcodeReader.Read("document.pdf")
For Each barcode In results
Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}")
Next
手動でのページ抽出、二次パッケージ、追加ライセンスの購入は一切不要です。
ジェネレーションAPI
Spire.バーコードアプローチ
Spire.Barcodeの生成モデルは、可変のBarcodeSettings設定オブジェクトに中心があります。 開発者は設定をインスタンス化し、プロパティを個別に設定し、設定オブジェクトを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)
可変な設定オブジェクトは、単一のインスタンスが複数の生成操作で再利用される場合に、設定が意図せず呼び出し間で共有される可能性があることを意味します。 ジェネレータークラスは、独自の構成ロジックを持たない追加のインスタンス化ステップを追加します。
IronBarcodeのアプローチ
IronBarcodeは、オプションで流暢なメソッドチェーン機能を備えた静的ファクトリメソッドを使用します。 管理対象となる設定オブジェクトもジェネレーターインスタンスもありません。
// IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
// IronBarcode generation
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("barcode.png");
// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.ResizeTo(400, 100)
.SaveAsPng("barcode.png");
Imports IronBarCode
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("barcode.png")
' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.ResizeTo(400, 100) _
.SaveAsPng("barcode.png")
カスタムロゴ入りの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")
価格設定
Spire.Barcode の公表されている価格は、社内使用サイトライセンスとOEM展開ティアをカバーしています。
| ライセンス | 価格 | デプロイメント |
|---|---|---|
| サイトライセンス(社内使用のみ) | $1,398 | 単一ロケーション |
| サイトサブスクリプション(1 年間の更新/サポート) | 年間999ドル | 単一ロケーション |
| 開発者OEMサブスクリプション | $3,395/年 | 公開向け/クラウド/Docker |
| サイトOEMサブスクリプション | $10,187/年 | 公開向け/クラウド/Docker(最大10開発者) |
OEMティアのみが、公開ウェブサイト、Docker、またはクラウドアプリケーションへのデプロイメントを許可します。 サイト(非OEM)ティアは、ある地理的なロケーションでの社内使用に限定されています。 PDFバーコード抽出にSpire.PDFも必要な場合、そのライセンスは別途費用がかかります。
IronBarcode ライセンス は 4 つの永続的なティアを使用しています。
| ライセンス | 価格 | 開発者 |
|---|---|---|
| Lite | $749 | 1 |
| Plus | $1,499 | 3 |
| プロフェッショナル | $2,999 | 10 |
| 無制限 | $5,999 | 無制限 |
すべてのプランは永続的な利用が可能で、年間サポートおよびアップデートのサブスクリプションを追加するオプションがあります。 Spire.Barcode のサイトサブスクリプションでは、5 名の開発者チームが毎年 $999 の更新とサポートを支払います; 同等の IronBarcodeプロフェッショナルティアは 10 名までの開発者をカバーし、$2,999 の一度の支払いで更新は必要ありません。
APIマッピングリファレンス
| Spire.Barcode | IronBarcode |
|---|---|
new BarcodeScanner() |
Static BarcodeReader.Read() |
scanner.Scan(path, BarCodeType.X) |
BarcodeReader.Read(path) |
BarCodeType.Code128 (必須パラメータ) |
自動検出; 同等のものは不要 |
string[] results |
BarcodeResults コレクション |
results[0] (文字列) |
results[0].Value (文字列) |
new BarcodeSettings() |
BarcodeWriter.CreateBarcode() のパラメータ |
settings.Type = BarCodeType.Code128 |
BarcodeEncoding.Code128 を第2のパラメータとして |
settings.Data = "value" |
CreateBarcode() の第1パラメータ |
new BarCodeGenerator(settings) |
不要です。 静的ファクトリはこれに代わるものです |
generator.GenerateImage() + image.Save() |
.SaveAsPng(path) または .SaveAsJpeg(path) |
Spire.PDF (PDF読み取り用) |
不要です。 ネイティブのPDFサポートが組み込まれています |
Spire.License.LicenseProvider.SetLicenseKey("key") |
IronBarCode.License.LicenseKey = "key" |
チームがSpire.BarcodeからIronBarcodeへの移行を検討する場合
混合フォーマット文書処理
単一の既知のバーコード形式から始めたチームは、時間の経過とともに形式の多様性が増していくことに気づくことが多い。Code128ラベルから始まった倉庫管理アプリケーションは、DataMatrix、GS1-128、またはQRコードを使用するサプライヤーからの出荷を受け取るようになる可能性がある。 ワークフローに新しいフォーマットが追加されるたびに、型推測ループ内の候補配列を更新し、検出ロジックを再テストし、反復順序によって既存のフォーマットが置き換えられていないことを確認する必要があります。 フォーマットの多様性が高まり、そのループの保守オーバーヘッドが継続的な開発コストとなる段階に達すると、チームは自動検出によってその負担を完全に解消できるかどうかを評価する。
PDF統合
文書を多く扱うアプリケーションでは、バーコードを単独の画像ではなくPDFファイルから抽出する必要が生じる場面によく遭遇します。 Spire.Barcodeのワークフローでは、この移行を行うには、Spire.PDFのライセンスを取得し、別のパッケージを統合し、バーコード読み取りを行う前にページ反復処理と画像抽出のインフラストラクチャを作成する必要があります。 当初の購入時にこの要件を想定していなかったチームは、概念的にはバーコード読み取りに属するタスクのために、2つの製品ライセンスと2つのAPIインターフェースを管理することになる。 PDFサポートには別途購入が必要であることが判明した場合、製品選定を見直すきっかけとなることはよくある。
無料評価プランの制限事項
FreeSpire.Barcodeを評価した後、商用ライセンスを購入したチームの中には、商用製品が評価結果とは異なる動作を示すと報告するケースがある。 これは意図的な設計です。無料版では意図的に読み取り性能を低下させ、使用できるシンボルセットを制限しているため、評価中に実施されたベンチマークやフォーマット対応テストの結果は、商用版には適用されません。 購入後にこの不一致に気づいたチームは、試用期間中の挙動が本番環境での挙動を反映している代替製品を探すことが多い。
製品数の削減
テクノロジー・スタックを標準化する組織は、Spire.Barcodeを、それぞれ独自のライセンス費用と更新サイクルを持つ、増え続けるE-iceblue製品の構成要素の一つとして認識することがあります。 Spire.Barcodeの主な目的が、Spire.DocやSpire.XLSとの緊密な統合ではなく、文書処理パイプライン内でのバーコード読み取りである場合、チームは、単一の自己完結型バーコードライブラリを使用することで、ライセンスの複雑さとサポート範囲の両方を削減できるかどうかを評価します。
一般的な移行の考慮事項
BarCodeTypeパラメータの削除
Spire.BarcodeのコードベースでのBarCodeType引数を持ちます。 これらの呼び出しをBarcodeReader.Read()で置き換えると、タイプパラメータが完全に削除されます。 タイプ推測ループ — 選択肢のBarCodeType値を反復するforeachブロック — は完全に削除可能です; 単一のBarcodeReader.Read()呼び出しがループ全体を置き換えます。
戻り値の型を更新する
Spire.Barcodeのstring[]を返します。 IronBarcodeはBarcodeResultsコレクションを返します。 string[]に割り当てたり、そのタイプを期待するメソッドに結果を渡す呼び出しサイトは更新が必要です。 配列として値を抽出するには.Select(r => r.Value).ToArray()を使用します; 最初の結果にアクセスするには.First()?.Valueを使用します。
Spire.PDFパッケージの削除
PDFファイルからのバーコード抽出をサポートするためだけにSpire.PDFがインストールされていた場合、IronBarcodeに移行後に削除できます。 すべてのBarcodeReader.Read("file.pdf")呼び出しに置き換えられます。 バーコード以外のドキュメント操作にSpire.PDFが使用されている場合は、それを保持し、バーコード関連のコードパスのみを置き換えるべきです。
名前空間の変更
using IronBarCode;に置き換えます。 BarcodeEncodingに置き換えられ、読み取りには同等のものはありません。 ライセンス初期化はIronBarCode.License.LicenseKeyプロパティ割り当てへの変更となります。
IronBarcodeの追加機能
上記の比較では、以下のIronBarcodeの機能は対象としていません。
- バッチ画像の読み取り:
Bitmapインスタンスを受け入れ、入力コレクションに対する手動ループなしでバッチ処理を可能にします。 - BarcodeReaderOptions: 読み取り速度、マルチバーコード検出、最大候補数、画像のエンハンスメント前処理は、
Read()に渡される単一のオプションオブジェクトを通じて設定可能です。 - SVGおよびHTML出力:
.SaveAsHtmlFile()をサポートしており、ウェブで埋め込み可能なバーコード出力を可能にします。 - ロゴ付きQRコード:
AddBrandLogo()をサポートし、カスタム画像をQRコードの中央に合成することができ、適切な誤り訂正レベルでスキャン信頼性に影響を与えません。 - ストリームおよびバイト配列出力: 生成されたバーコードは、
byte[]としてエクスポート可能で、中間ファイルなしで直接保存またはHTTP応答の書き込みが可能です。 - GS1-128 および構造化シンボル: IronBarcode は、Spire.Barcode の商用ティアで利用可能な範囲を超えた構造化 GS1 シンボルをサポートしています。
.NETの互換性と将来の準備
IronBarcodeは、.NET Framework 4.6.2以降、.NET Core 3.1、および現在 for .NETリリースをサポートします。 このライブラリはWindows、Linux、macOSでテストされており、追加のネイティブ依存関係構成なしでDockerコンテナ内で動作します。 Spire.Barcodeはクロスプラットフォーム for .NET展開もサポートしていますが、LinuxおよびDocker構成では、使用するバージョンによっては追加のネイティブライブラリ設定が必要になる場合があります。 IronBarcodeの定期的なリリースサイクルにより、新しいC#言語機能や.NETランタイムの改善が、プラットフォームの互換性アップデートと並行して確実に組み込まれます。
結論
Spire.BarcodeとIronBarcodeは、バーコード読み取りの問題に対して根本的に異なるアプローチをとっている。 Spire.Barcodeでは、フォーマットに関する知識は呼び出し側に委ねられます。つまり、すべてのスキャン操作において、開発者は事前にシンボル体系を宣言する必要があり、これはクローズドフォーマットのワークフローでは許容できる制約ですが、オープンフォーマットのワークフローではメンテナンス上の負担となります。 IronBarcodeはフォーマット検出機能をライブラリ内部に配置しており、型パラメータは不要で、検出されたフォーマットを結果の一部として返します。
Spire.Barcodeは、単一の保証されたバーコード形式を処理するアプリケーションにとって妥当な選択肢であり、特にチームが既にE-iceblueの製品エコシステムに投資している場合はなおさらです。 設定オブジェクト生成モデルは、明示的な設定を好む開発者にとって馴染み深いものであり、商用ライセンスは単独開発者のプロジェクトにとって競争力のある価格設定となっている。 すべての呼び出しでBarCodeType.Code128を保証できるチームは、必須のタイプパラメータに対して実質的なコストを支払いません。
IronBarcodeは、フォーマットの多様性が予測不可能または増加しているアプリケーション、PDFバーコードの抽出が最優先事項であるアプリケーション、そして評価の精度が重要なアプリケーションに最適です。 この試用版は、完全なシンボルセットを使用して本番環境と同じ速度で実行されるため、評価中に実施されたパフォーマンスベンチマークとフォーマットカバレッジテストは、本番環境への展開に直接適用できます。 ネイティブPDFサポートにより、二次ライブラリやそれに伴うライセンス費用が不要になります。 IronBarcodeをSpire.Barcodeの代替として検討しているチーム向けに、 Spire.Barcodeの代替案に関する概要は、比較に関する追加情報を提供します。
最終的な決定は、フォーマットの予測可能性とワークフローの範囲によって左右される。 Code128ラベル規格が固定されており、PDFソースドキュメントがない倉庫システムでは、IronBarcodeの自動検出機能を選択する実際的な理由は特にありません。 外部サプライヤーからバーコードを取り込み、複数のシンボル体系を混在させ、PDF添付ファイルから読み込むドキュメント処理パイプラインでは、必須のタイプパラメータと2つのライブラリを使用するPDF要件が継続的なメンテナンスコストとなるが、 IronBarcodeはこのコストを削減する。
よくある質問
Spire.BarCodeとは?
Spire.BarCodeは、C#アプリケーションでバーコードを生成して読み取るため for .NETバーコードライブラリです。これは、開発者が.NETプロジェクト用のバーコードソリューションを選択する際に評価するいくつかの選択肢の1つです。
Spire.BarcodeとIronBarcodeの主な違いは何ですか?
IronBarcodeはインスタンス管理を必要としない静的なステートレスAPIを使用します。一方、Spire.BarCodeは通常、使用前にインスタンスの作成と設定が必要です。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 はど for .NETバージョンをサポートしていますか?
IronBarcodeは.NET Framework 4.6.2+、.NET Core 3.1、.NET 5、6、7、8、9を単一のNuGetパッケージでサポートしています。プラットフォーム・ターゲットには、Windows x64/x86、Linux x64、macOS x64/ARMが含まれます。
.NETプロジェクトにIronBarcodeをインストールするには?
NuGet経由でIronBarcodeをインストールする:パッケージマネージャーコンソールで'Install-Package IronBarCode'を実行するか、CLIで'dotnet add package 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コードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

