Spire.BarCode vs IronBarcode:C#バーコードライブラリの比較
Spire.BarCodeの読み取りにはバーコードタイプが必要です:code-39356--@@。 入力されるバーコードの形式がどのようなものであっても、処理する文書では、値を抽出する前に形式検出ループを作成する必要があります。 そのたった一つの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つのパッケージを発行しています:CODE-39357は無料、CODE-39358は商用製品です。 無料パッケージは、期間限定の試用版ではなく、意図的に制限が設けられた、恒久的に上限が設定された製品です。 商用パッケージでは、すべてのシンボルセットが利用可能になり、無料版に存在する制限が解除されますが、他のSpire製品を使用する場合は、別途ライセンスを購入する必要があります。
Spire.Barcodeの主なアーキテクチャ上の特徴は以下のとおりです。
- 必須のBarCodeTypeパラメータ:@--CODE-39359--@へのすべての呼び出しは、@@--CODE-39360--@のenum値を必要とします。 ファイルパスのみを受け取り、自動的にフォーマットを検出するオーバーロードは存在しません。
- 設定オブジェクト生成モデル: BarCode生成は、
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
候補配列に追加される型ごとに、追加のスキャン処理が発生します。 リストに記載されていないフォーマットは、黙って見過ごされる。 開発者は、網羅的な型インベントリを維持し、新しいフォーマットがワークフローに導入されるたびに再テストを行う責任があります。
IronBarcodeを理解する
IronBarcodeは、 Iron Software社が開発した商用.NETバーコードライブラリです。 静的なAPIモデルを通じてバーコードの読み取りと生成の両方を提供するため、インスタンス管理は不要です。 このライブラリは、追加の依存関係を必要とせずにネイティブのPDFおよび画像処理サポートを含む単一のNuGetパッケージとして提供されます。
IronBarcodeの読み取りエンジンは、1回のスキャンで50種類以上のシンボル体系に対応した自動フォーマット検出を実行します。 CODE-39367--@@ によって返される結果オブジェクトには、検出された BarCode タイプ、デコードされた値、および PDF ソースのページ番号やソース画像内の境界座標などのコンテキストメタデータが含まれます。
IronBarcodeの主な特徴は以下のとおりです。
- 自動フォーマット検出: @--CODE-39368--@@ はタイプパラメーターを必要としません。 ライブラリはスキャン中にシンボルを識別し、結果オブジェクトに含めます。
- シングルパッケージPDFサポート: PDFファイルは、NuGetパッケージ、ライセンス、マニュアルページ抽出コードを追加することなく、直接@--CODE-39369--@@で受け入れられます。
- フルエント生成API:@--CODE-39370--@@は静的なファクトリーメソッドで、サイズ設定、スタイル設定、保存を1つの式で行うための連鎖可能なオブジェクトを返します。 -フル機能のトライアルモード: IronBarcodeのトライアル版は、ライセンス製品と同じパッケージで動作し、フル読み取り速度、完全なシンボルサポート、およびすべての機能セットを提供します。 トライアルモードで生成された出力には、小さなエッジウォーターマークが含まれます。 読書行動には影響がない。
BarcodeReaderOptions調整用: 読み取り速度、マルチバーコード検出、画像前処理、および予想されるシンボロジーフィルタは、ライブラリ製品を切り替えることなく設定可能です。- メタデータを持つ結果オブジェクト:@--CODE-39372--@コレクション内の各結果は、@@--CODE-39373--@、@@--CODE-39374--@、@@@--CODE-39375--@、および画像領域データを公開します。
機能比較
以下の表は、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 フレームワーク | はい | はい |
| .NET Core / .NET 5 以上 | はい | はい |
| Docker / Linux | はい | はい |
| 象徴体系 | ||
| 1D(Code128、Code39、EAN、UPC) | はい | はい |
| 2次元(QRコード、データマトリックス、PDF417) | はい | はい |
| シンボルの総数 | 39歳以上(商業用) | 50歳以上 |
| ライセンスについて | ||
| 無料プラン | FreeSpire.Barcode(透かし入り、劣化あり) | トライアルモード(フルスピード、小さな透かし入り) |
| 無料プランには登録が必要です | はい | なし |
| ライセンスモデル | シート単位の永久ライセンス+サブスクリプション | 永久契約(更新オプションあり) |
| 価格設定のエントリーポイント | 349ドル(開発者1名) | 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
フォーマットが事前に不明な場合、利用可能な唯一の方法は、候補となるタイプを順に調べていくことです。各反復処理は完全なスキャンパスであり、リストに存在しないフォーマットは黙って見落とされます。 その結果、型情報を持たない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
各結果オブジェクトには、@--CODE-39380--@、@--CODE-39381--@、および位置メタデータが含まれます。 フォーマットに基づく下流ルーティングでは、追加の状態は必要ありません。型は結果自体に含まれています。
無料プランの制限事項
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ファイルからBarCodeを抽出するために、開発者は別個の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
このパターンでは、2つのNuGetパッケージ、2つのライセンス契約、および開発者が作成したページ管理コードが必要です。 PDFファイル内でバーコードがラスター画像ではなくベクター画像に埋め込まれている場合、画像抽出方法ではバーコードを完全に検出できない可能性があります。
IronBarcodeのアプローチ
IronBarcodeは、追加の依存関係なしにPDFファイルをネイティブに処理します。 PDF文書からBarCodeを読み取るは、画像ファイルに使用されるのと同じ@--CODE-39383--@@ 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
手動でのページ抽出、二次パッケージ、追加ライセンスの購入は一切不要です。
ジェネレーションAPI
Spire.バーコードアプローチ
Spire.BarCodeの生成モデルは、変更可能なコンフィギュレーションオブジェクトを中心としています。 開発者は、Settingsをインスタンス化し、プロパティを個別に割り当て、Settingsオブジェクトを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)
可変な設定オブジェクトは、単一のインスタンスが複数の生成操作で再利用される場合に、設定が意図せず呼び出し間で共有される可能性があることを意味します。 ジェネレータークラスは、独自の構成ロジックを持たない追加のインスタンス化ステップを追加します。
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の料金体系は4つの段階に分かれています。
| ライセンス | 価格 |
|---|---|
| シングル開発者 | $349 |
| サイトライセンス | $1,398 |
| OEM | $6,990 |
| サブスクリプション | 年間999ドル |
永続的なプランは、特定のバージョンを対象としています。 継続的なアップデートとサポートを受けるには、永久ライセンスに加えて有効なサブスクリプションが必要です。 開発者が1人から2人に増えた場合、月額349ドルのシングル開発者向けプランから、月額1,398ドルのサイトライセンスプランに直接移行します。 PDFバーコード抽出にSpire.PDFも必要な場合、そのライセンスは別途費用がかかります。
IronBarcodeのライセンスは、3つの永続的なティアで構成されています。
| ライセンス | 価格 | 開発者 |
|---|---|---|
| Lite | $749 | 1 |
| プロフェッショナル | $1,499 | 10 |
| 無制限 | $2,999 | 無制限 |
すべてのプランは永続的な利用が可能で、年間サポートおよびアップデートのサブスクリプションを追加するオプションがあります。 Spire.Barcodeのサイトライセンス(1,398ドル)と1年間のサブスクリプション(999ドル)を5人の開発者チームが利用する場合、初年度の合計費用は2,397ドルとなり、1回限りの購入で2年目の費用が不要なIronBarcodeプロフェッショナル(1,499ドル)とほぼ同等の価格帯です。
APIマッピングリファレンス
| Spire.Barcode | IronBarcode |
|---|---|
| コード-39387 | 静的@--コード-39388--@@@。 |
| コード-39389 | コード-39390 |
| CODE-39391--@@ (必須パラメータ) | 自動検出; 同等のものは不要 |
| コード-39392 | コード-39393--コレクション |
| CODE-39394--@@ (文字列) | CODE-39395--@@ (文字列) |
| コード-39396 | コード-39397へのパラメータ |
| コード-39398 | コード39399を2番目のパラメータに指定してください。 |
| コード-39400 | の最初のパラメータ--CODE-39401--@@@。 |
| コード-39402 | 不要です。 静的ファクトリはこれに代わるものです |
| --コード-39403--@ + @@--コード-39404--@ @@。 | または.SaveAsJpeg(path)@。 |
| CODE-39407--@@ (PDF閲覧用) | 不要です。 ネイティブのPDFサポートが組み込まれています |
| コード-39408 | コード-39409 |
| コード-39410 | コード-39409 |
チームが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コードベース内のすべてのscanner.Scan()@呼び出しは、BarCodeType引数を運びます。 これらの呼び出しをBarcodeReader.Read()に置き換えると、typeパラメータが完全に削除されます。 型推測ループ - 候補となるBarCodeType@値を繰り返し処理するforeachブロック - は、完全に削除することができます; を呼び出すだけで、ループ全体を置き換えることができます。
戻り値の型を更新する
Spire.BarCodeのScan()は、@@--CODE-39418--@を返します。 IronBarcodeはBarcodeResultsコレクションを返します。 CODE-39420--@@に割り当てたり、その型を期待するメソッドに結果を渡したりするコールサイトは、更新が必要です。 配列として値を抽出するには、.Select(r => r.Value).ToArray()を使用します; 最初の結果にアクセスするには、.First()?.Valueを使用します。
Spire.PDFパッケージの削除
もしSpire.PDFがPDFファイルからのバーコード抽出をサポートするためだけにインストールされていた場合は、IronBarcodeに移行した後に削除することができます。 すべてのusing Spire.Pdf;インポートおよび手動ページ反復ブロックは、単一のBarcodeReader.Read("file.pdf")呼び出しに置き換えられます。 もしSpire.PDF@がバーコード抽出以外の他の文書操作に使用されている場合は、それを保持し、バーコード関連のコードパスのみを置き換えるべきである。
名前空間の変更
CODE-39427--@@ を using IronBarCode; に置き換えてください。 CODE-39429--@@の列挙は、生成のためにBarcodeEncodingに置き換えられ、読解のために同等のものは必要ありません。 ライセンスの初期化は、@@--CODE-39431--@または@@--CODE-39432--@から、アプリケーション起動時の単一の@@--CODE-39433--@プロパティ割り当てに変更されます。
IronBarcodeの追加機能
上記の比較では、以下のIronBarcodeの機能は対象としていません。
- バッチ画像読み取り:@--CODE-39434--@@は、ファイルパスの配列、
Streamオブジェクト、およびBitmapインスタンスを受け入れ、入力コレクションを手動でループすることなくバッチ処理を可能にします。 - BarCodeReaderOptions:読み取り速度、マルチバーコード検出、最大候補、および画像強化の前処理は、
Read()に渡される単一のオプション オブジェクトを通して設定可能です。 - SVGおよびHTML出力:@--CODE-39438--@は、ラスター画像フォーマットに加え、@@--CODE-39439--@と@@--CODE-39440--@をサポートし、Web埋め込み可能なバーコード出力を可能にします。
- ロゴ付きQRコード:@--CODE-39441--@@は、すべてのライセンス階層で
AddBrandLogo()をサポートしており、適切なエラー訂正レベルでスキャンの信頼性に影響を与えることなく、カスタム画像をQRコードセンターに合成することができます。 - ストリームおよびバイト配列出力: 生成されたバーコードは、中間ファイルなしで直接保存または HTTP レスポンス書き込み用に、
Streamまたはbyte[]としてエクスポートできます。 - GS1-128 および構造化シンボル: IronBarcode は、Spire.Barcode の商用ティアで利用可能な範囲を超えた構造化 GS1 シンボルをサポートしています。
.NETの互換性と将来の準備
IronBarcodeは、.NET フレームワーク4.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の製品エコシステムに投資している場合はなおさらです。 設定オブジェクト生成モデルは、明示的な設定を好む開発者にとって馴染み深いものであり、商用ライセンスは単独開発者のプロジェクトにとって競争力のある価格設定となっている。 すべての呼び出しでBarCodeType.Code128@を保証できるチームは、必須の型パラメーターの実用的なコストを支払う必要はありません。
IronBarcodeは、フォーマットの多様性が予測不可能または増加しているアプリケーション、PDFバーコードの抽出が最優先事項であるアプリケーション、そして評価の精度が重要なアプリケーションに最適です。 この試用版は、完全なシンボルセットを使用して本番環境と同じ速度で実行されるため、評価中に実施されたパフォーマンスベンチマークとフォーマットカバレッジテストは、本番環境への展開に直接適用できます。 ネイティブPDFサポートにより、二次ライブラリやそれに伴うライセンス費用が不要になります。 IronBarcodeをSpire.Barcodeの代替として検討しているチーム向けに、 Spire.Barcodeの代替案に関する概要は、比較に関する追加情報を提供します。
最終的な決定は、フォーマットの予測可能性とワークフローの範囲によって左右される。 Code128ラベル規格が固定されており、PDFソースドキュメントがない倉庫システムでは、IronBarcodeの自動検出機能を選択する実際的な理由は特にありません。 外部サプライヤーからバーコードを取り込み、複数のシンボル体系を混在させ、PDF添付ファイルから読み込むドキュメント処理パイプラインでは、必須のタイプパラメータと2つのライブラリを使用するPDF要件が継続的なメンテナンスコストとなるが、 IronBarcodeはこのコストを削減する。
よくある質問
Spire.BarCodeとは?
Spire.BarCodeは、C#アプリケーションでバーコードを生成して読み取るための.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 はどの.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()でサポートされています。

