IRONSOFTWAREHOME
ビデオ

Spire.BarcodeからIronBarcodeへの移行

Curtis Chau
Curtis Chau
Updated: 2026年8月1日

Spire.BarcodeのBarCodeType引数を必要とします。 コードベースが多様なドキュメントソース、新しいサプライヤーラベル、新しいバーコードフォーマットに対応するために拡大するにつれて、この設計では型推測ループが発生し、時間の経過とともにメンテナンスコストが蓄積されます。このガイドでは、Spire.Barcode からIronBarcodeへの移行プロセス全体について、チームがこの移行を行う理由、移行を実行するための具体的な手順、および一般的な操作ごとに、移行前後のコードパターンを網羅的に解説します。

Spire.Barcodeから移行する理由

**フォーマット仕様のオーバーヘッド:**Spire.BarcodeでのBarCodeType列挙値が必要です。 未知のソースや混合フォーマットのソースからバーコードを処理するアプリケーションは、考えられるタイプの候補リストを保持し、一致するものが見つかるまでそのリストを繰り返し処理する必要があります。 ワークフローにフォーマットを追加するたびに、候補配列の更新、検出ロジックの再テスト、および反復順序によってあるフォーマットが別のフォーマットを覆い隠してしまうことがないかの確認が必要になります。 このオーバーヘッドは、フォーマットの多様性に比例して増加する。

無料版評価における制約事項: FreeSpire.Barcodeは、商用製品と比較して、読み取り性能を意図的に低下させ、利用可能なシンボルセットを制限しています。 FreeSpire.Barcodeの評価中に実施されたベンチマークおよびフォーマット対応テストは、商用版Spire.Barcodeの動作を表すものではありません。 無料トライアルの評価に基づいて購入を決定したチームは、購入後に、特にスループットやサポートされるシンボル体系に関して、製品が本番環境で異なる動作をすることに気づく可能性があります。

PDFファイルには2つのライブラリが必要です: Spire.BarcodeはPDFファイルから直接バーコードを読み取ることができません。 PDFを基盤とするワークフローは、独自のライセンスを持つSpire.PDFパッケージに加え、ページを繰り返し処理し、各ページから画像を抽出し、その画像をバーコードスキャナーに供給するために開発者が記述したコードが必要です。 概念的にはバーコード読み取りに属するタスクが、2つの製品、2つのライセンス契約、および重要なインフラストラクチャコードにまたがって分割されている。

戻り値の型の複雑さ:string[]を返します。 検出されたバーコード形式は返品に含まれません。 結果をフォーマットごとにルーティングする必要があるアプリケーション(たとえば、QRコードの値をあるプロセッサに送信し、Code128の値を別のプロセッサに送信する場合など)は、結果を生成した反復ステップから派生した別の型変数を維持する必要があり、スキャン自体に加えて追加の状態管理が発生します。

基本的な問題

型推測ループは、必須のBarCodeType制約の最も目立つ症状です。 Spire.Barcodeのコードベースで、複数のソースからのドキュメントを処理する場合、このパターンが繰り返し現れます。

// Spire.Barcode: growing candidate loop with silent misses
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;
    }
}

IronBarcodeはループを完全に排除します。 フォーマット検出機能はライブラリに組み込まれています。

// IronBarcode: single call, all formats, type included in result
var results = BarcodeReader.Read("barcode.png");

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

IronBarcodeとSpire.Barcode:機能比較

フィーチャーSpire.BarcodeIronBarcode
自動フォーマット検出なしはい
BarCodeType パラメータは必須です。はいなし
結果のメタデータのフォーマットなしはい
ネイティブPDFリーダーいいえ(Spire.PDFが必要です)はい
PDF用追加ライブラリSpire.PDF(別途ライセンスが必要)None
無料プランの読書パフォーマンス意図的に劣化させた全速
無料プランの透かし大型、バーコードを覆う小さい、端のみ
無料ティアのシンボル約20種類50種類以上
無料プランへの登録はいなし
生成APIモデル設定オブジェクト + ジェネレーター流動的な連鎖を備えた静的工場
カスタムロゴ入りのQRコード商用プランのみ全ティア
readからの戻り値の型string[]BarcodeResults (型メタデータ付き)
シンボル数39歳以上(商業用)50歳以上
ライセンスモデルシート単位の永久ライセンス+サブスクリプション永久契約(更新オプションあり)

クイックスタート

ステップ 1: NuGet パッケージを置き換える

現在使用中のSpireパッケージを削除してください。

# Remove whichever variant is installed
dotnet remove package FreeSpire.Barcode
# or
dotnet remove package Spire.Barcode

# If Spire.PDF was installed only for barcode extraction, remove it as well
dotnet remove package Spire.PDF
SHELL

バーコード抽出以外のドキュメント操作にSpire.PDFが使用されている場合、それを保持し、バーコード関連のコードパスのみを削除してください。

IronBarcodeをインストールしてください:

dotnet add package IronBarcode
SHELL

ステップ 2: 名前空間の更新

すべてのSpire名前空間インポートをIronBarcode名前空間で置き換えます:

// Remove:
using Spire.Barcode;
using Spire.Pdf;

// Add:
using IronBarCode;

ステップ 3: ライセンスの初期化

Spireライセンスの初期化処理を、アプリケーション起動時のIronBarcodeプロパティの単一割り当てに置き換えてください。キーフォーマットと展開オプションについては、IronBarcodeライセンスページを参照してください。

// Remove (FreeSpire registration):
Spire.Barcode.BarcodeSettings.ApplyKey("your-free-key");

// Remove (commercial Spire license):
Spire.License.LicenseProvider.SetLicenseKey("your-commercial-key");

// Add (IronBarcode):
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

DockerおよびCI環境の場合、ライセンスキーは環境変数から指定できます。

IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");

コード移行の例

既知形式のバーコードの読み取り

Spire.Barcodeでの単一フォーマット読み込みは、明示的に型を渡し、string[]を受け取ります。

Spire.Barcode アプローチ:

using Spire.Barcode;

BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("shipping-label.png", BarCodeType.Code128);

if (results.Length > 0)
{
    ProcessShipment(results[0]);
}

IronBarcodeのアプローチ:

using IronBarCode;

var results = BarcodeReader.Read("shipping-label.png");

if (results.Any())
{
    ProcessShipment(results.First().Value);
}

BarCodeTypeパラメーターは削除されます。 下流のロジックで検出されたフォーマットを確認する必要がある場合、results.First().Formatが別の状態変数を必要とせずに提供します。

混合フォーマット型ループの折りたたみ

Spire.Barcodeのコードベースが複数のフォーマットを含む可能性のあるドキュメントを処理する場合、新しいフォーマットがワークフローに加わるにつれて、タイプ推測のループが時間とともに蓄積されます。

Spire.Barcode アプローチ:

using Spire.Barcode;

BarcodeScanner scanner = new BarcodeScanner();
BarCodeType[] candidates = new[]
{
    BarCodeType.Code128,
    BarCodeType.QRCode,
    BarCodeType.DataMatrix,
    BarCodeType.EAN13,
    BarCodeType.PDF417
};

List<string> allValues = new List<string>();
foreach (BarCodeType type in candidates)
{
    string[] found = scanner.Scan("document-scan.png", type);
    allValues.AddRange(found);
}

IronBarcodeのアプローチ:

using IronBarCode;

// The entire loop is replaced by a single call
var results = BarcodeReader.Read("document-scan.png");
List<string> allValues = results.Select(r => r.Value).ToList();

IronBarcodeの画像読み取り機能は、50種類以上のシンボル体系すべてを一度の処理で対応します。 大量のバッチ処理のために読み取り速度を調整する必要がある場合に、BarcodeReaderOptionsは、フォーマット固有の分岐を追加せずにその制御を提供します:

var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var results = BarcodeReader.Read("document-scan.png", options);

適切なReadingSpeed値の選択についてのガイダンスは、読み取り速度オプションのドキュメンテーションを参照してください。

バーコードの生成

Spire.Barcodeの生成では、GenerateImage()を呼び出す必要があります。

Spire.Barcode アプローチ:

using Spire.Barcode;

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

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("shipping-label.png", ImageFormat.Png);

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("SHIP-9842-XZ", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("shipping-label.png");

可変のBarCodeGeneratorインスタンスは、流暢なチェーンを持つ単一の静的ファクトリー呼び出しに置き換えられます。 各CreateBarcode()呼び出しが独立しているため、同時呼び出しで設定が誤って共有されるリスクはありません。

PDF文書からバーコードを読み取る

Spire.BarcodeはPDFファイルを直接読み込むことはできません。 Spireに基づくアプローチでは、ファイルを開き、ページを繰り返し処理し、各ページからラスター画像を抽出し、その画像をバーコードスキャナーに1つずつ渡すために、別のSpire.PDFパッケージを必要とします。

Spire.Barcode アプローチ:

using Spire.Pdf;
using Spire.Barcode;

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

var scanner = new BarcodeScanner();
var extractedValues = new List<string>();

foreach (PdfPageBase page in pdf.Pages)
{
    Image[] images = page.ExtractImages();
    foreach (Image image in images)
    {
        string[] found = scanner.Scan(image, BarCodeType.QRCode);
        extractedValues.AddRange(found);
    }
}

IronBarcodeのアプローチ:

using IronBarCode;

var results = BarcodeReader.Read("invoices.pdf");

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

IronBarcodeは、Spire.PDFや手動のページ管理が不要で、直接PDFドキュメントを読み取ります。 各バーコードが抽出されたページ番号は、結果オブジェクトに含まれています。 PDF読み取りコードを置換した後、プロジェクトからusing Spire.Pdf;インポートを削除できます。

Spire.Barcode API からIronBarcodeへのマッピングリファレンス

Spire.BarcodeIronBarcodeノート
new BarcodeScanner()BarcodeReader.Read() (静的)スキャナーインスタンスは不要です
scanner.Scan(path, BarCodeType.X)BarcodeReader.Read(path)型パラメータが削除されました
BarCodeType.Code128 (必須)自動検出同等のものは不要
BarCodeType.QRCode (必須)自動検出同等のものは不要
string[] results from Scan()BarcodeResults コレクション.Valueを介して値にアクセスします
results[0] (文字列)results[0].Value
結果のフォーマットが不明ですresult.Format結果オブジェクトに含まれる型
new BarcodeSettings()CreateBarcode()のパラメーター設定オブジェクトは不要です
settings.Type = BarCodeType.XBarcodeEncoding.X as second param
settings.Data = "value"CreateBarcode()の最初のパラメーター
new BarCodeGenerator(settings)不要静的ファクトリーがそれを置き換えます
generator.GenerateImage().SaveAsPng() / .SaveAsJpeg()フォーマット固有の出力方法
BarcodeSettings.ApplyKey("key")IronBarCode.License.LicenseKey = "key"起動時に一度だけ設定
Spire.License.LicenseProvider.SetLicenseKey("key")IronBarCode.License.LicenseKey = "key"同じ単行の代替品
Spire.PDF (PDF読み取り用)不要ネイティブPDFサポートが組み込まれています

一般的な移行の問題と解決策

問題1:BarCodeTypeパラメータの削除

Spire.Barcode: scanner.Scan(path, BarCodeType.Code128) — メソッドシグネチャで型引数が必要です。 それを削除するとコンパイルエラーが発生します。

**解決策:**呼び出し全体をBarcodeReader.Read(path)に置き換えます。 コードベースでBarCodeType.を検索して、すべての発生を特定します。 型推測ループ(BarCodeType[]候補配列を繰り返し処理するforeachブロック)は完全に削除できます; 単一のBarcodeReader.Read()呼び出しでループを置き換えます。

問題2:string[]の戻り値の型

Spire.Barcode: string[]を返します。 下流のコードがこれをstring[]を期待するメソッドに渡したりすると、移行後にコンパイルエラーが発生します。

**解決策:**呼び出しサイトをBarcodeResultsで動作するように更新します。 単純な文字列配列を取得するには、.Select(r => r.Value).ToArray()を使用します。 最初の結果にアクセスするには、.First()?.Valueを使用します。 検出されたフォーマットが下流で必要な場合、.Formatを介して結果オブジェクトに利用可能です — 別の状態変数は必要ありません。

// If a plain string array is needed:
string[] texts = BarcodeReader.Read("barcode.png")
    .Select(r => r.Value)
    .ToArray();

// If only the first value is needed:
string first = BarcodeReader.Read("barcode.png").First()?.Value;

第3号:Spire.PDFパッケージのクリーンアップ

Spire.Barcode: PDF読み取りワークフローは、ページアクセスと画像抽出にSpire.PDFに依存しています。 プロジェクトにはパッケージへの参照があり、PdfDocument / PdfPageBaseの使用が複数のファイルにわたって含まれています。

**解決策:**すべてのPDFバーコード抽出コードをSpire.Pdf参照がないことを確認します:

grep -r "using Spire.Pdf" --include="*.cs" .
grep -r "Spire\.Pdf\|PdfPageBase\|ExtractImages" --include="*.cs" .
SHELL

すべての参照がクリアされた後にのみ、パッケージを削除してください。

dotnet remove package Spire.PDF
SHELL

第4号:名前空間の変更

Spire.Barcode: BarCodeTypeが含まれています。 BarcodeReaderOptionsが含まれています。

解決策:using IronBarCode;にグローバルに置き換えます。 生成に使用されるBarcodeEncodingに置き換えられます。 読み取りに使用されるBarCodeType列挙型には、IronBarcodeに相当するものはありません — これは単に削除されます。なぜなら、フォーマット検出は自動的に行われるからです。

Spire.Barcode移行チェックリスト

マイグレーション前のタスク

変更を加える前に、コードベースを監査してSpire.Barcodeの使用箇所をすべて特定してください。

grep -r "using Spire.Barcode" --include="*.cs" .
grep -r "using Spire.Pdf" --include="*.cs" .
grep -r "BarcodeScanner\|BarcodeSettings\|BarCodeGenerator\|BarCodeType\." --include="*.cs" .
grep -r "ApplyKey\|SetLicenseKey" --include="*.cs" .
grep -r "ExtractImages\|PdfPageBase" --include="*.cs" .
SHELL
  • BarCodeType候補配列(削除すべき型推測ループ)を含むすべてのファイルを文書化します
  • Scan()から結果を受け取り、型の更新が必要なものを特定します
  • Spire.PDFがバーコード抽出以外の操作に使用されているかどうかを確認します

コード更新タスク

  1. Spire.BarcodeNuGetパッケージを削除します
  2. バーコード抽出が唯一の用途であった場合は、Spire.PDFNuGetパッケージを削除します
  3. IronBarcodeNuGetパッケージをインストールします
  4. すべてのusing IronBarCode;に置き換えます
  5. 不要になったusing Spire.Pdf;インポートをすべて削除します
  6. ライセンス初期化を置き換えます:IronBarCode.License.LicenseKey = "key"
  7. すべてのnew BarcodeScanner()インスタンスを削除します
  8. すべてのBarcodeReader.Read(path)に置き換えます
  9. 型推測を行うforeachループを削除する。 それぞれを単一のBarcodeReader.Read()呼び出しに置き換える
  10. PDFページの反復処理と画像抽出のブロックを削除します。 BarcodeReader.Read("file.pdf")に置き換える
  11. .Select(r => r.Value).ToArray()を使用するように更新します
  12. BarcodeWriter.CreateBarcode(data, encoding)チェインに置き換えます
  13. new BarCodeGenerator(settings)インスタンスを削除します
  14. .GenerateImage() + .SaveAsJpeg()に置き換えます
  15. 生成で使用されるBarcodeEncoding.Xに置き換えます

移行後のテスト

  • 候補ループを介して以前にスキャンされたすべてのフォーマットがBarcodeReader.Read()によって正しく検出されることを確認します バッチ処理のスループットを測定し、生産要件を満たしていることを確認する。 PDFバーコード抽出で正しい値とページ番号が生成されることを確認する 生成されたバーコードの出力品質とスキャン可能性を、物理スキャナーまたはソフトウェアスキャナーで確認してください。
  • ライセンスキーがすべてのデプロイ環境(ローカル、ステージング、本番、CI/CD)に正しくロードされていることを確認してください。
  • 移行前タスクから grep 監査コマンドを実行して、Spire への参照が残っていないことを確認します。

IronBarcodeへの移行の主なメリット

**フォーマット保守のオーバーヘッドの排除:**移行後は、保守すべき候補タイプリストがなくなり、新しいバーコードフォーマットがワークフローに入ってきたときに更新すべきタイプ推測ループもなくなります。 BarcodeReader.Read()は完全な記号セットを自動的に処理し、検出されたフォーマットがそれぞれの結果オブジェクトに含まれているため、下流のルーティングが可能です。

契約前の正確な評価: IronBarcodeのトライアル版は、ライセンス製品と同じバイナリから実行され、完全なシンボルセットを使用してフル読み取り速度で動作します。 試用評価中に実施されたパフォーマンスベンチマークとフォーマット対応テストは、そのまま製品版に移行されます。 チームは、評価された動作が実際に導入された動作と一致しているという確信を持って、購入決定を下すことができます。

**単一パッケージのPDFサポート:**PDFファイルからのバーコード抽出は、画像に使用されるBarcodeReader.Read()呼び出しと同じ呼び出しで処理されます。 二次ライブラリ、追加ライセンス、手動によるページ反復コードは一切不要です。 以前Spire.PDFの両方を維持していたチームが、バーコードワークフロー全体のための単一の依存関係に削減されます。

フォーマットメタデータを持つ結果オブジェクト:BarcodeResultsコレクションの各エントリーは、デコードされた値、検出された記号体系、PDF入力のソースページ番号、およびソース画像内の境界領域を運びます。 フォーマットに基づいてルーティング、フィルタリング、またはログ記録を行う必要があるアプリケーションは、追加の状態管理を行うことなく、結果からその情報を利用できます。

簡略化された生成API:BarCodeGeneratorインスタンスを排除します。 各生成呼び出しは自己完結型であるため、同時実行される操作間での設定情報の漏洩リスクが軽減されます。

前方互換性: IronBarcodeは、 .NETランタイムのリリースに合わせて定期的にアップデートされます。 2026年まで.NET 10の採用が進むにつれて、互換性アップデートにより、移行されたコードベースは、新しい.NETバージョンごとにライブラリを変更することなく、引き続きビルドおよび実行できるようになります。

ご注意: Spireはその所有者の登録商標です。 このサイトはe-iceblueと提携、承認、支援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

...
詳しく読む

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。