IRONSOFTWAREHOME
ビデオ

BarcoderからIronBarcodeへの移行

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

このガイドでは、 .NET開発者向けにBarcoderからIronBarcodeへの移行手順全体を解説します。 移行によって、2つのパッケージが1つに統合され、エンコーダーレンダラーパイプラインが単一のメソッド呼び出しに置き換えられ、すべての形式固有の名前空間インポート — using Barcoder.Code128, using Barcoder.Qr, using Barcoder.DataMatrix — が単一のusing IronBarCode;に折りたたまれます。 ImageRendererOptions型が完全に削除されました。 読み取りが欠けている機能であり、Barcoderと共に二次的なライブラリを追加する原因となっていた場合、IronBarcodeはBarcodeReader.Read()でネイティブに読み取りをカバーします。

Barcoderから移行する理由

Barcoderから移行するチームは、以下の要因を報告しています。

補足事項: Barcoderは生成専用ライブラリであり、デコード機能はありません。 アプリケーションが受信したバーコードを検証したり、スキャンしたドキュメントを処理したり、アップロードされたPDFからバーコードを読み取ったりする必要がある場合、Barcoderにはそれを実行する手段がありません。 読み取り用に2つ目のライブラリを追加すると、コードベースが分割され、 NuGetの依存関係が2つになり、維持管理すべきAPIが2つになり、追跡すべきバージョン履歴が2つになります。 IronBarcodeは、生成と読み取りの両方を同じパッケージで処理します。

.NET Frameworkの互換性が破壊されました: Barcoder.Renderer.Imageは.NET Frameworkサポートを削除しました。 .NET Framework 4.x 上でサービスまたはデスクトップアプリケーションを実行しているチームが、定期的な依存関係のメンテナンス中にイメージレンダラーパッケージを更新すると、ビルドエラーが発生します。 IronBarcodeは、異なるターゲット向けに条件付きパッケージングを行うことなく、 .NET Framework 4.6.2から.NET 9までをサポートしています。

パッケージバージョンのドリフト: Barcoder.Renderer.Imageは独立してバージョニングされるNuGetパッケージです。 依存関係の更新時に、一方だけを更新すると、互換性の問題が発生する可能性があります。 複数のプロジェクトを含むリポジトリでは、各レンダラーのバージョンをすべてのプロジェクトで一貫して使用できるようにすることは、チーム規模が大きくなるにつれて増大する調整上の負担となる。

複数のフォーマットが追加される: Code128 から始まり、後で QR、次に DataMatrix を追加するプロジェクトでは、新しい名前空間のインポートを追加し、各フォーマットごとに異なるメソッド パラメータを持つ別のエンコーダ クラスを学習する必要があります。 IronBarcodeはBarcodeEncoding列挙型を使用します — 形式を追加することは、既存の呼び出しに対する一語の変更です。 新しい名前空間も、新しいクラスも、異なるメソッドシグネチャもありません。

MAUIおよびクラウドデプロイメントの要件: Barcoderは、MAUI、Docker、AWS Lambda、またはAzureデプロイメントのサポートについてはドキュメント化していません。 クロスプラットフォームのモバイルアプリケーションやサーバーレスのバーコード処理パイプラインを構築するチームは、Barcoderのドキュメントに記載されているターゲットがこれらのシナリオを網羅していないことに気づきます。

基本的な問題

Barcoderは、フォーマット選択を名前空間のインポートと連動させ、すべての出力操作に対してレンダリングパイプラインを強制的に実行します。 フォーマットや出力タイプを変更するには、コードの構造的な変更が必要です。

// Barcoder: 3 namespaces, encoder-specific class, renderer pipeline, stream management
using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;

IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 2,
    BarHeightFor1DBarcode = 50
});

using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);

IronBarcode、同じ操作を単一のチェーン呼び出しとして表現できます。

// IronBarcode: 1 namespace, 1 method, 1 output call
using IronBarCode;

BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

IronBarcodeとBarcoder:機能比較

フィーチャーバーコードIronBarcode
必要なNuGetパッケージ最小2つ(バーコーダー + バーコーダー.レンダラー.イメージ)1 (IronBarcode)
バーコード生成はいはい
バーコードの読み取り/デコードなしはい
フォーマットごとのエンコーダークラスはい — Code128Encoder, QrEncoder, DataMatrixEncoderなどいいえ — BarcodeEncoding列挙型
フォーマットごとの名前空間インポートはい — Barcoder.Code128, Barcoder.Qr, Barcoder.DataMatrixいいえ — using IronBarCodeのみ
結果オブジェクトの出力メソッドいいえ — IBarcodeには保存メソッドがありませんはい — SaveAsPng, ToPngBinaryData, ToStreamがあります
PDFを読むなしはい — BarcodeReader.Read(path)
ロゴ入りQRコードなしはい — .AddBrandLogo(path)
.NET Frameworkのサポート画像レンダラーにドロップされました.NET Framework 4.6.2以降
.NET 9 のサポート不明瞭/活動が限定的はい
MAUIサポートなしはい — iOS、Android、Windows、macOS
Docker/Azure/AWSラムダ記録なしはい
ライセンスMIT(オープンソース)Commercial — Lite $999, Plus $1,499, Professional $2,399, Unlimited $4,799
読書速度制御なしはい — ReadingSpeed列挙型
複数バーコード検出なしはい — ExpectMultipleBarcodesオプション

クイックスタート:BarcoderからIronBarcodeへの移行

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

プロジェクトからすべてのBarcoderパッケージを削除してください。

dotnet remove package Barcoder
dotnet remove package Barcoder.Renderer.Image
SHELL

SVGレンダラーも追加した場合:

dotnet remove package Barcoder.Renderer.Svg
SHELL

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

dotnet add package IronBarcode
SHELL

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

プロジェクト内のすべてのファイルからusing Barcoder.*ステートメントをすべて削除してください。

// Remove all of these
using Barcoder;
using Barcoder.Code128;
using Barcoder.Qr;
using Barcoder.DataMatrix;
using Barcoder.Renderers;
using Barcoder.Ean;
using Barcoder.Pdf417;
// ... and any other Barcoder.* namespaces in your project

それら全てを単一のusingディレクティブに置き換えてください。

using IronBarCode;

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

アプリケーションの起動時にライセンス初期化を追加— Program.cs, Startup.cs, またはMauiProgram.cs

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

無料トライアルキーはironsoftware.comで入手できます。

コード移行の例

コード128生成

バーコード方式:

using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;

IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 2,
    BarHeightFor1DBarcode = 50
});

using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);

IronBarcodeのアプローチ:

// NuGet: dotnet add package IronBarcode
using IronBarCode;

BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

Code128Encoder, ImageRenderer, ImageRendererOptions, およびストリーム管理が完全に削除されました。 フォーマットは統合されたBarcodeEncoding.Code128として指定されます。 出力メソッドは、返されたGeneratedBarcodeオブジェクトに直接あります。 IronBarcodeのバーコード生成に関するドキュメントでは、スタイル、余白、色のカスタマイズについて説明しています。

QRコード生成

バーコード方式:

using Barcoder;
using Barcoder.Qr;
using Barcoder.Renderers;

IBarcode barcode = QrEncoder.Encode("https://example.com", ErrorCorrectionLevel.M);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 4
});

using var stream = File.OpenWrite("qr.png");
renderer.Render(barcode, stream);

IronBarcodeのアプローチ:

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500)
    .SaveAsPng("qr.png");

CreateQrCodeへの第2パラメータは、ピクセル単位の出力寸法です。 エラー訂正レベルはデフォルトで適切な値に設定されており、必要に応じて設定変更が可能です。 IronBarcodeは、Barcoderでは不可能な操作、つまりQRコードセンターにブランドロゴを埋め込む機能もサポートしています。

using IronBarCode;

QRCodeWriter.CreateQrCode("https://example.com", 500)
    .AddBrandLogo("logo.png")
    .SaveAsPng("qr-branded.png");

データマトリックス生成

バーコード方式:

using Barcoder;
using Barcoder.DataMatrix;
using Barcoder.Renderers;

IBarcode barcode = DataMatrixEncoder.Encode("ITEM-XYZ-001");

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 5
});

using var stream = File.OpenWrite("datamatrix.png");
renderer.Render(barcode, stream);

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("ITEM-XYZ-001", BarcodeEncoding.DataMatrix)
    .SaveAsPng("datamatrix.png");

パターンはCode128と同一ですが、BarcodeEncoding値のみが変更されます。 新しい名前空間のインポートも、異なるクラスも、異なるメソッドシグネチャもありません。

出力サイズの制御

Barcoderは、バーコードモジュールサイズのスケール乗算子としてBarHeightFor1DBarcodeを使用します — 直接的な幅/高さAPIはありません。

バーコード方式:

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 3,
    BarHeightFor1DBarcode = 80
});
using var stream = File.OpenWrite("barcode.png");
renderer.Render(barcode, stream);

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");

.ResizeTo(width, height)は明示的なピクセル寸法を取ります。 これは、同じGeneratedBarcodeオブジェクトの他の出力メソッドと連鎖されます。

ファイルではなくバイナリデータを取得する

バーコード方式:

using Barcoder;
using Barcoder.Code128;
using Barcoder.Renderers;

IBarcode barcode = Code128Encoder.Encode("PRODUCT-12345", false);

var renderer = new ImageRenderer(new ImageRendererOptions
{
    ImageFormat = ImageFormat.Png,
    PixelSize = 2
});

using var ms = new MemoryStream();
renderer.Render(barcode, ms);
byte[] pngBytes = ms.ToArray();

IronBarcodeのアプローチ:

using IronBarCode;

byte[] pngBytes = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
    .ToPngBinaryData();

GeneratedBarcodeへの単一の連鎖メソッド呼び出しに置き換えられます。

バーコード読み取り(新機能)

Barcoderには読み取りAPIがありません。 以前に読書用に2つ目のライブラリを追加していた場合は、それを削除できます。 IronBarcodeは、生成に使用したのと同じパッケージを使用して、ファイル、バイト配列、ストリーム、およびPDFからデータを読み取ります。

IronBarcodeのアプローチ:

using IronBarCode;

// Read from image file
var results = BarcodeReader.Read("barcode.png");
foreach (var result in results)
{
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Format: {result.Format}");
}

// Read from PDF natively — no image extraction step, no extra dependency
var pdfResults = BarcodeReader.Read("invoice.pdf");

// Read multiple barcodes from one image
var options = new BarcodeReaderOptions
{
    Speed = ReadingSpeed.Balanced,
    ExpectMultipleBarcodes = true
};
var multiResults = BarcodeReader.Read("warehouse-sheet.png", options);
foreach (var result in multiResults)
    Console.WriteLine(result.Value);

// Read from a stream directly
using var fileStream = File.OpenRead("barcode.png");
var streamResults = BarcodeReader.Read(fileStream);

IronBarcodeのバーコード読み取りに関するドキュメントには、複数ページのPDFファイル、関心領域の読み取り、およびパフォーマンス調整オプションについて記載されています。

SVG出力

バーコード方式:

using Barcoder.Renderers;
var svgRenderer = new SvgRenderer();
using var stream = File.OpenWrite("barcode.svg");
svgRenderer.Render(barcode, stream);

IronBarcodeのアプローチ:

using IronBarCode;

BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .SaveAsSvg("barcode.svg");

すべてのSVGレンダリングサイトが移行されると、Barcoder.Renderer.Svgパッケージは削除できます。

バーコード API からIronBarcodeへのマッピング リファレンス

バーコードIronBarcode
Code128Encoder.Encode("data", false)BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
QrEncoder.Encode("data", ErrorCorrectionLevel.M)QRCodeWriter.CreateQrCode("data", 500)
DataMatrixEncoder.Encode("data")BarcodeWriter.CreateBarcode("data", BarcodeEncoding.DataMatrix)
new ImageRenderer(new ImageRendererOptions { ... })不要
renderer.Render(barcode, fileStream).SaveAsPng(path)
renderer.Render(barcode, memoryStream) + ms.ToArray().ToPngBinaryData()
IBarcodeGeneratedBarcode
PixelSize = 2, BarHeightFor1DBarcode = 50.ResizeTo(width, height)
SvgRenderer + renderer.Render(barcode, stream).SaveAsSvg(path)
読み取りAPIはありませんBarcodeReader.Read(path / stream / bytes / pdf)
2つのパッケージ — Barcoder + Barcoder.Renderer.Image1つのパッケージ — IronBarcode
エンコーダーごとのフォーマット名前空間(Barcoder.Code128, Barcoder.Qrなど)BarcodeEncoding列挙型、単一の名前空間

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

問題1:IBarcodeには保存メソッドがない

Barcoder:IBarcode変数を格納し、後でレンダラーに渡すコードは、遅延レンダリングパターンに従います。 renderer.Render()を呼び出すすべてのヘルパーメソッドはリファクタリングが必要です。

解決策: GeneratedBarcodeに変更します。 GeneratedBarcodeオブジェクトは、それ自体の出力メソッドを持っているので、結果を保存またはシリアル化する必要があるメソッドに渡します。

// IronBarcode — GeneratedBarcode carries output methods
using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128);
SaveBarcodeToFile(barcode, "output.png");

static void SaveBarcodeToFile(GeneratedBarcode barcode, string path)
{
    barcode.SaveAsPng(path);
}

ソリューション全体でrenderer.Render(を検索すると、すべての遅延レンダリングサイトが見つかります。

問題2:PixelSizeには直接的な同等のものが存在しない

Barcoder:PixelSizeは、バーコードの自然なモジュールサイズへのスケール乗算子です。出力寸法は、コンテンツの長さ、フォーマット、および乗数の組み合わせに依存します。 BarHeightFor1DBarcodeは、1Dの高さを独立して制御します。 幅や高さに関する直接的な指定はありません。

**解決策:**既存のBarcoderコードが生成する実際のピクセル出力を測定し、それらの値を.ResizeTo(width, height)に渡します。

BarcodeWriter.CreateBarcode("data", BarcodeEncoding.Code128)
    .ResizeTo(300, 80)
    .SaveAsPng("barcode.png");

問題3:フォーマット名前空間インポートの蓄積

**Barcoder:**プロジェクトで使用される各バーコードフォーマットは、それを使用する各ファイルにusing Barcoder.[Format]ディレクティブを追加します。 Code128、QR、およびDataMatrixを使用するプロジェクトでは、通常、ファイルごとに3つの形式固有のインポートがあり、using Barcoder.Renderersもあります。

**解決策:**すべてのusing IronBarCode;に置き換えます。

grep -rn "using Barcoder" --include="*.cs" .
SHELL

すべての結果は削除すべき行であり、ファイルごとに1回、単一のusing IronBarCode;ディレクティブに置き換えられます。

問題4:パッケージバージョンの同期エラー

Barcoder:Barcoder.Renderer.Imageのいずれか1つを更新後にビルドすると、タイプ解決エラーが発生する可能性があります。これは、2つのパッケージが異なるバージョンの組み合わせで互換性がない可能性があるためです。

**解決策:**両方のBarcoderパッケージを削除してIronBarcodeをインストールした後、1つのパッケージと1つのバージョンになります。 このカテゴリにおけるパッケージロックの競合は解消されます。 Barcoder.*参照がないことを確認してください。

バーコード移行チェックリスト

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

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

grep -rn "using Barcoder" --include="*.cs" .
grep -rn "Code128Encoder\.Encode" --include="*.cs" .
grep -rn "QrEncoder\.Encode" --include="*.cs" .
grep -rn "DataMatrixEncoder\.Encode" --include="*.cs" .
grep -rn "ImageRenderer\|ImageRendererOptions" --include="*.cs" .
grep -rn "SvgRenderer" --include="*.cs" .
grep -rn "renderer\.Render(" --include="*.cs" .
grep -rn "IBarcode" --include="*.cs" .
grep -rn "ErrorCorrectionLevel" --include="*.cs" .
SHELL

IBarcodeが変数型として格納されたり、メソッドパラメーターとして渡されたりするすべての場所を文書化してください。これらは、最も注意を要する遅延レンダリングのサイトです。 BarHeightFor1DBarcodeのすべての値を記録し、対応する出力寸法を測定します。

コード更新タスク

  1. すべてのプロジェクトからBarcoder NuGetパッケージを削除します
  2. すべてのプロジェクトからBarcoder.Renderer.Image NuGetパッケージを削除します
  3. Barcoder.Renderer.Svg NuGetパッケージが存在する場合、削除します
  4. IronBarcode NuGetパッケージをインストールします
  5. アプリケーションの起動時にIronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";を追加します
  6. すべてのusing IronBarCode;に置き換えます
  7. BarcodeWriter.CreateBarcode(..., BarcodeEncoding.Code128)で置き換えます
  8. QRCodeWriter.CreateQrCode(..., size)で置き換えます
  9. BarcodeWriter.CreateBarcode(..., BarcodeEncoding.DataMatrix)で置き換えます
  10. すべてのnew ImageRenderer(new ImageRendererOptions {...})構築を削除します
  11. .SaveAsPng(path)に置き換えます
  12. renderer.Render(barcode, memoryStream) + .ToPngBinaryData()で置き換えます
  13. .SaveAsSvg(path)に置き換えます
  14. GeneratedBarcodeに変更します
  15. .ResizeTo(width, height)に置き換えます

移行後のテスト

生成された各バーコード形式が、標準スキャナーまたはIronBarcode独自のリーダーで正しくスキャンできることを確認してください。

  • マイグレーション前の出力寸法と視覚出力寸法を比較し、.ResizeTo()の値が同等のサイズを生成することを確認します
  • QRコードの出力をスマートフォンのスキャナーでテストし、エラー訂正レベルが適切であることを確認する。 プロジェクトでSVGを使用している場合は、ブラウザと印刷環境でSVG出力が正しくレンダリングされることを確認してください。
  • 第2の読み取りライブラリを削除した場合、BarcodeReader.Read()が同じ入力で同等のデコード値を生成することを確認してください プロジェクトで PDF 文書を処理する場合は、PDF の読み取りをテストしてください。複数ページの PDF 文書がすべてのページを正しく読み取ることを確認してください。
  • すべてのBarcoder.*参照が残っていない状態でビルドを実行し、コンパイラーエラーが発生する場合は、見逃した移行サイトを示しています

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

パッケージ依存関係の統合: 1つのNuGetパッケージで2つ(SVGレンダラーも使用していた場合は3つ)のパッケージを置き換えます。 追跡するバージョンは1つ、監視する変更履歴も1つ、そして依存関係の更新時にパッケージ間の互換性の問題は発生しません。 packages.lock.jsonの複雑さは即座に減少します。

**ネイティブ読み取り機能:**従来バーコード読み取りのために別のライブラリが必要だったアプリケーションは、 IronBarcodeに統合できます。 BarcodeReader.Read()は、画像ファイル、バイト配列、ストリーム、およびPDFを同一のAPIを介して受け取り、マルチバーコード検出および読み取り速度調整機能が組み込まれています。

**形式選択を設定として:**既存のプロジェクトに新しいバーコード形式を追加することは、既存のBarcodeEncoding列挙型の値を一語変更するだけです。 新しい名前空間のインポートも、新しいエンコーダークラスも、新しいパッケージもありません。 これにより、製品要件の変化に応じてフォーマットを拡張する際の摩擦が軽減されます。

明示的な出力寸法:PixelSize乗数システムを明示的なピクセル指定で置き換えます。 コードと出力の関係は直接的かつ予測可能であり、バーコードの内容の長さやフォーマット固有のモジュールサイズとは無関係である。

プラットフォーム対応範囲の拡大: IronBarcodeは、 .NET Framework 4.6.2から.NET 9までをサポートし、iOS、Android、Windows、macOSへのMAUIデプロイメント、およびDocker、AWS Lambda、Azure Functionsへのデプロイメントに関するドキュメントを提供しています。 プラットフォームの要件が.NET Coreを超えて拡張されるチームは、Barcoder.Renderer.Imageに影響を与えるフレームワークサポートのギャップに直面しません。

積極的なメンテナンスと将来的な互換性: IronBarcodeは、 .NETとの互換性に関するタイムラインを文書化した定期的なアップデートをリリースしています。 アクティブなリリースサイクルは、ライブラリを現在 for .NETバージョンに合わせ続け、最近のリリース活動が限定されているライブラリからは保証されません。

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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。