フッターコンテンツにスキップ
他のコンポーネントと比較する

LEADTOOLS BarcodeとIronBarcodeの比較:C#バーコードライブラリの比較

DockerでLEADTOOLS Barcodeを使用するには、ライセンスファイルをコンテナ内の特定のパスにマウントする必要があります。 そのファイルは、すべての展開時に必ず一緒に移動されなければならない。 環境変数だけでは不十分だ。 LEADTOOLSを導入するたびに、ファイル管理上の問題が発生する。

これはLEADTOOLSのエンジニアリングを批判するものではなく、コンテナが存在する以前に設計された30年前のライセンスアーキテクチャを反映したものだ。 しかし2026年、あなたのCI/CDパイプラインがコンテナイメージをビルドしてプッシュする必要があるとき、あなたは.LIC@ファイルをイメージにベイクするか、実行時にボリュームとしてマウントするかのどちらかだ。いずれにせよ、BarCodeライブラリーは初期化する前にファイルシステムへのアクセスを必要とする。これが、この比較の根底にあるトレードオフです。

LEADTOOLSバーコードの理解

LEADTOOLS Barcodeは、LEAD Technologies社が1990年から継続的に開発を進めている包括的なドキュメントイメージングSDKの一部です。このバーコードモジュールは40種類以上のシンボル体系をサポートし、OCR、フォーム処理、PDF操作、画像表示など、より広範なLEADTOOLSエコシステムと緊密に統合されています。 アプリケーションがそれらすべての機能を単一のベンダーから必要とする場合、そのエコシステム統合は真に価値のあるものとなる。 要件がスタンドアロンのマイクロサービスまたは特定のアプリケーションにおけるバーコードスキャンである場合、同じ統合は、すべてのデプロイメントで考慮しなければならないオーバーヘッドとなります。

図書館の建築様式は、その歴史を反映している。 LEADTOOLSは、明示的なリソース管理、手動による設定、ファイルシステムベースのライセンスといった時代背景の中で設計されました。 それらの設計上の決定はどれも、それぞれの文脈において理にかなっていた。 現代の.NET開発(コンテナ化されたワークロード、CI/CDパイプライン、シークレット管理システムなど)では、こうした決定が摩擦を生み出し、チームは積極的に対処していく必要がある。

LEADTOOLS Barcodeをデプロイするには、最低限5つのNuGetパッケージが必要です。PDFバーコード抽出機能を追加すると、さらに6つ目のパッケージが必要になります。 Windows環境では、ホストマシンにMSVC++ 2017ランタイムがインストールされている必要があります。LEADTOOLSバーコードアプリケーションの出力サイズは約148MBです。

LEADTOOLS Barcodeの主なアーキテクチャ特性:

  • ファイルベースのライセンスアーキテクチャ:既知のパスに物理的に存在するディスク上の.LIC@ファイルと開発者キー文字列が必要です。 ライブラリを初期化するには、両方とも実行時にアクセス可能である必要があります。
  • 2段階ライセンスモデル:開発ライセンスと展開ライセンスは、価格設定も取得方法も別々です。 本番環境への導入に関する見積もりについては、LEADTOOLSの営業担当者にお問い合わせください。
  • マルチパッケージインストール:最小限のBarCode対応インストールには、@--CODE-38829--@、@--CODE-38830--@、@--CODE-38831--@、@--CODE-38832--@、および@--CODE-38833--@が必要です。 画像フォーマットを追加するごとに、専用のコーデックパッケージが必要になります。 -ネイティブランタイムの依存関係: Windows 環境では、 .NETランタイムに加えて MSVC++ 2017 ランタイムが必要です。
  • 明示的なシンボロジーの宣言: BarCodeの読み取りには、スキャンするフォーマットを指定する@--CODE-38834--@@ enum値の配列を渡す必要があります。 省略されたフォーマットは検出されません。
  • Layered Initialization Sequence:ライセンス ファイルをロードした後、アプリケーションは、BarcodeEngineを作成する前に、ライセンスが失効していないこと、および各必要な機能 (1D 読み取り、2D 読み取り、書き込み) が個別にロック解除されていることを確認する必要があります。
  • 40種類以上のシンボルに対応:包括的なイメージングプラットフォームの一部として、1Dおよび2Dバーコードタイプにわたる幅広いフォーマットに対応しています。

ファイルベースのライセンスアーキテクチャ

LEADTOOLSの初期化には、最初のバーコード操作を実行する前に約20行のコードが必要です。 この手順では、ファイルパスの解決、有効期限の検証、および機能ごとのロックチェックを行います。

// LEADTOOLS: 20行以上 before the first barcode operation
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
// LEADTOOLS: 20行以上 before the first barcode operation
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
Imports Leadtools
Imports Leadtools.Barcode

' LEADTOOLS: 20行以上 before the first barcode operation

RasterSupport.SetLicense("C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC", "your-developer-key-here")

If RasterSupport.KernelExpired Then
    Throw New InvalidOperationException("LEADTOOLS license has expired")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) Then
    Throw New InvalidOperationException("1D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) Then
    Throw New InvalidOperationException("2D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) Then
    Throw New InvalidOperationException("Barcode writing is locked")
End If

Dim engine As New BarcodeEngine()
$vbLabelText   $csharpLabel

バーコードの読み取りまたは書き込み操作が機能するには、この初期化ブロックが正常に実行される必要があります。 ファイルがない、パスが正しくない、ファイルのパーミッションが正しくない場合、LEADTOOLSは初期化されません。

IronBarcodeを理解する

IronBarcodeは、 .NETアプリケーションでバーコードを読み取り、生成するために特化して構築された、 .NET向けのバーコードライブラリです。 IronBarcodeは、より大規模な画像処理SDK内のモジュールの一つとしてではなく、バーコード機能を主な目的として開発されています。 このライブラリは、すべての画像フォーマットのサポート、ネイティブPDFバーコード抽出、および機械学習ベースのエラー訂正機能を含む単一のNuGetパッケージとして配布されており、追加のコーデックパッケージやネイティブランタイム依存関係は必要ありません。

IronBarcodeは静的API設計を採用しています。 CODE-38837--@と@@--CODE-38838--@では、インスタンス生成や初期化オブジェクトを必要とせず、静的メソッド呼び出しとして読み書きが可能です。 ライセンスの有効化は、単一の文字列の割り当てです。 このライブラリは、サポートされている50種類以上のシンボル体系すべてにおいてバーコード形式を自動的に検出するため、読み取り操作を行う前に想定される形式を列挙する必要がなくなります。

このライブラリは.NET Standard 2.0以降を対象としており、 .NET Framework 4.6.2以降、 .NET 5、 .NET 6、 .NET 7、 .NET 8、および.NET 9との互換性を提供します。サポートされているすべてのオペレーティングシステムにおいて、プラットフォーム固有のネイティブランタイムは必要ありません。

IronBarcodeの主な特徴:

-文字列キーライセンス:ライセンスの有効化には、単一の文字列の割り当てが必要です。 キーは、環境変数、設定ファイル、シークレットマネージャー、または文字列値を提供するあらゆるソースから取得できます。

  • 単一のNuGetパッケージ:すべての画像フォーマットのサポート、PDF抽出、およびBarCode機能は、IronBarcodeに含まれています。 追加のコーデックパッケージは必要ありません。
  • Static Fluent API: @--CODE-38840--@@ と @--CODE-38841--@@ は静的なエントリーポイントです。 エンジンインスタンスやコーデックオブジェクトを作成する必要はありません。 -自動フォーマット検出:呼び出し元が想定されるフォーマットを指定する必要なく、サポートされている50種類以上のシンボル体系すべてを読み取ります。 -内蔵PDFサポート: PDFバーコード抽出機能は基本パッケージに含まれており、追加のインストールは不要です。
  • 50種類以上のシンボルに対応: Code 128、Code 39、QRコード、データマトリックス、PDF417、EAN-13、UPC-Aなど、主要な1Dおよび2Dバーコードフォーマットをすべて網羅しています。
  • MLエラー訂正:機械学習に基づく画像補正により、破損または低品質のバーコード画像の読み取り精度が向上します。

機能比較

以下の表は、LEADTOOLS BarcodeとIronBarcodeの基本的な違いをまとめたものです。

フィーチャー リードツールズ バーコード IronBarcode
ライセンスモデル ファイル+キー(2段階) キーのみ(シングルティア)
SDKのフットプリント 5つ以上のパッケージとネイティブランタイム 1パッケージ
初期化コード 20行以上 1行
Dockerデプロイメント ファイルマウントが必要です 環境変数
PDFバーコード抽出 別梱包 内蔵
フォーマットを自動検出 制限的 はい
総シンボル体系 40歳以上 50歳以上
機械学習エラー訂正 なし はい

詳細な機能比較

フィーチャー リードツールズ バーコード IronBarcode
ライセンスについて
ライセンスモデル ファイル + 開発者キー 文字列キーのみ
ライセンスティア 開発+展開(別々に実施) 永久ライセンス1つ
導入価格 営業担当 公開価格
環境変数内のライセンス 部分的(キーのみ、ファイルは別途必要) はい
シークレットマネージャーのライセンス ファイルはまだ必要です はい(文字列のみ)
インストール
必要なNuGetパッケージ 5歳以上 1
ネイティブランタイムの依存関係 MSVC++ 2017(Windows) なし
PDFサポートパッケージ セパレート (Leadtools.Codecs.Pdf) 含まれるもの
公開された出力サイズ 約148MB 約39MB
読む
1次元シンボル 25歳以上 30+
2Dシンボル 15歳以上 15歳以上
フォーマットを自動検出 制限的 はい
明示的なシンボル宣言が必要です はい なし
PDFバーコード抽出 はい(別送) はい(内蔵)
機械学習エラー訂正 なし はい
複数バーコード検出 はい はい
世代
コード128生成 はい はい
QRコード生成 はい はい
QRコードロゴのブランディング なし はい
流暢な生成API なし はい
出力形式 PNG、JPEG、BMP PNG、JPEG、BMP、SVG、HTML、PDF
APIデザイン
APIスタイル 従来のオブジェクトグラフ 静的流暢
初期化行 20歳以上 1
画像読み込みレイヤー ラスタコーデック(別売) 自動翻訳
プラットフォーム
クロスプラットフォーム 部分的(ネイティブ依存関係) 完全版(.NET Standard)
Docker / コンテナのサポート ファイルマウントが必要です 環境変数
.NET Standard 2.0 はい はい
.net 8 / .net 9 はい はい

ライセンスアーキテクチャ

ライセンス体系は、最新のインフラストラクチャにデプロイするチームにとって、これら2つのライブラリ間の最も重要な違いです。

リードツールズアプローチ

LEADTOOLSライセンスには、ファイルシステム上の既知のパスに物理的に存在する.LIC@ファイルと、RasterSupport.SetLicenseに渡される開発者キー文字列が必要です。 CODE-38845--@@@を呼び出した後、アプリケーションは、ライセンスが失効していないこと、および各バーコード機能が個別にロック解除されていることを確認する必要があります。 すべてのチェックを通過して初めて、BarcodeEngineが作成されます:

// LEADTOOLS: 20行以上 before the first barcode operation
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
// LEADTOOLS: 20行以上 before the first barcode operation
using Leadtools;
using Leadtools.Barcode;

RasterSupport.SetLicense(
    @"C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC",
    "your-developer-key-here");

if (RasterSupport.KernelExpired)
    throw new InvalidOperationException("LEADTOOLS license has expired");

if (RasterSupport.IsLocked(RasterSupportType.Barcode1DRead))
    throw new InvalidOperationException("1D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.Barcode2DRead))
    throw new InvalidOperationException("2D barcode reading is locked");

if (RasterSupport.IsLocked(RasterSupportType.BarcodeWrite))
    throw new InvalidOperationException("Barcode writing is locked");

var engine = new BarcodeEngine();
Imports Leadtools
Imports Leadtools.Barcode

' LEADTOOLS: 20行以上 before the first barcode operation

RasterSupport.SetLicense("C:\LEADTOOLS23\Support\Common\License\LEADTOOLS.LIC", "your-developer-key-here")

If RasterSupport.KernelExpired Then
    Throw New InvalidOperationException("LEADTOOLS license has expired")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode1DRead) Then
    Throw New InvalidOperationException("1D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.Barcode2DRead) Then
    Throw New InvalidOperationException("2D barcode reading is locked")
End If

If RasterSupport.IsLocked(RasterSupportType.BarcodeWrite) Then
    Throw New InvalidOperationException("Barcode writing is locked")
End If

Dim engine As New BarcodeEngine()
$vbLabelText   $csharpLabel

このファイルベースのモデルは、現代の機密情報管理システムよりも古い時代に遡る。 CODE-38847--@@@ファイルは、アプリケーションを実行するすべての環境(開発者マシン、CIビルドエージェント、ステージングサーバー、本番ホスト)でプロビジョニングされなければなりません。

IronBarcodeのアプローチ

IronBarcodeのライセンス初期化はたった1行です。

// IronBarcode: done
IronBarCode.License.LicenseKey = "YOUR-KEY";
// IronBarcode: done
IronBarCode.License.LicenseKey = "YOUR-KEY";
$vbLabelText   $csharpLabel

そのキーは、環境変数、設定ファイル、シークレットマネージャーなど、文字列が取得できる場所ならどこからでも取得できます。 検索すべきファイルはなく、書き込みすべき有効期限チェックもなく、検証すべき機能ロックもありません。 ライセンスのセットアップとデプロイオプションについては、環境変数、appsettings.json、Azure Key Vaultなど、すべてのパターンをドキュメントでカバーしています。

Dockerとコンテナのデプロイ

ライセンスアーキテクチャの違いは、Dockerfileを作成する際に具体的に明らかになる。

リードツールズアプローチ

LEADTOOLS Dockerのデプロイには、.LIC@ファイルをコンテナ・イメージにコピーするか、実行時にボリュームとしてマウントする必要があります:

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

# The license file must be physically present in the container
COPY LEADTOOLS.LIC /app/license/LEADTOOLS.LIC

ENV LEADTOOLS_LICENSE_PATH=/app/license/LEADTOOLS.LIC
ENV LEADTOOLS_DEVELOPER_KEY=your-developer-key

ENTRYPOINT ["dotnet", "YourApp.dll"]

このアプローチには、後々の複雑な問題が伴う。 ライセンスキーをローテーションまたは取り消すには、イメージを再構築するか、ボリュームを再マウントする必要があります。 CI/CDパイプラインは、.LIC@ファイルをチェックインするか、ビルド時にbase64エンコードされたシークレットからデコードする必要があります。Key-Value文字列ペアのために設計されたKubernetesシークレットは、今やファイルコンテンツを格納する必要がある。 一時的なコンテナを運用するチームは、新しいノードごとにファイルプロビジョニングの問題を解決する必要があります。

IronBarcodeのアプローチ

IronBarcodeはコンテナ内にファイルを必要としません。

FROM mcr.microsoft.com/dotnet/aspnet:8.0

WORKDIR /app
COPY publish/ .

ENV IRONBARCODE_LICENSE=your-license-key

ENTRYPOINT ["dotnet", "YourApp.dll"]

環境変数モデルは、Dockerシークレット、Kubernetesシークレット、AWS Secrets Manager、Azure Key Vault、HashiCorp Vaultなど、コンテナの環境に文字列を挿入できるあらゆるシステムとネイティブに連携します。 AlpineとDebianの両方のベースイメージを網羅した、DockerとLinuxの完全な導入ガイドが用意されています。

バーコード読み取り

リードツールズアプローチ

LEADTOOLSの読み取りには、画像を読み込むためのRasterCodecs@インスタンス、スキャンするためのBarcodeEngine@インスタンス、どのフォーマットを探すかを指定するBarcodeSymbology@値の明示的な配列を作成する必要があります。 配列からシンボルを省略すると、LEADTOOLSはそのタイプのバーコードを検出しなくなります。

// LEADTOOLS: codec, engine, explicit symbology list
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

using var codecs = new RasterCodecs();
using var image = codecs.Load(imagePath);
var engine = new BarcodeEngine();

var symbologies = new[]
{
    BarcodeSymbology.Code128,
    BarcodeSymbology.QR,
    BarcodeSymbology.DataMatrix,
    BarcodeSymbology.EAN13,
    BarcodeSymbology.UPCA
};

var barcodes = engine.Reader.ReadBarcodes(
    image,
    LogicalRectangle.Empty,
    0,
    symbologies);

return barcodes.Select(b => b.Value).ToArray();
// LEADTOOLS: codec, engine, explicit symbology list
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

using var codecs = new RasterCodecs();
using var image = codecs.Load(imagePath);
var engine = new BarcodeEngine();

var symbologies = new[]
{
    BarcodeSymbology.Code128,
    BarcodeSymbology.QR,
    BarcodeSymbology.DataMatrix,
    BarcodeSymbology.EAN13,
    BarcodeSymbology.UPCA
};

var barcodes = engine.Reader.ReadBarcodes(
    image,
    LogicalRectangle.Empty,
    0,
    symbologies);

return barcodes.Select(b => b.Value).ToArray();
Imports Leadtools
Imports Leadtools.Barcode
Imports Leadtools.Codecs

Dim barcodes As IEnumerable(Of BarcodeData)
Using codecs As New RasterCodecs()
    Using image As RasterImage = codecs.Load(imagePath)
        Dim engine As New BarcodeEngine()

        Dim symbologies As BarcodeSymbology() = {
            BarcodeSymbology.Code128,
            BarcodeSymbology.QR,
            BarcodeSymbology.DataMatrix,
            BarcodeSymbology.EAN13,
            BarcodeSymbology.UPCA
        }

        barcodes = engine.Reader.ReadBarcodes(
            image,
            LogicalRectangle.Empty,
            0,
            symbologies)
    End Using
End Using

Return barcodes.Select(Function(b) b.Value).ToArray()
$vbLabelText   $csharpLabel

IronBarcodeのアプローチ

IronBarcodeは、サポートされている50種類以上のシンボル体系すべてにおいて、フォーマットを自動的に検出します。 ファイルパスは直接渡されます。 画像読み込みレイヤーやシンボル配列は不要です。

// IronBarcode: auto-detect, no object setup
using IronBarCode;

var results = BarcodeReader.Read(imagePath);
return results.Select(r => r.Value).ToArray();
// IronBarcode: auto-detect, no object setup
using IronBarCode;

var results = BarcodeReader.Read(imagePath);
return results.Select(r => r.Value).ToArray();
Imports IronBarCode

Dim results = BarcodeReader.Read(imagePath)
Return results.Select(Function(r) r.Value).ToArray()
$vbLabelText   $csharpLabel

読み取りオプション、速度と精度の調整、および複雑な画像の処理に関する詳細については、 "画像からのバーコード読み取りガイド"を参照してください。このガイドでは、APIの全機能が網羅されています。

バーコード生成

リードツールズアプローチ

LEADTOOLSのバーコード生成では、シンボル、値、境界を持つBarcodeData@オブジェクトを作成し、明示的なピクセル寸法、ビット深度、バイト順序、およびビュー視点を持つ空白のRasterImage@を作成し、FillCommandを使用して白い背景で塗りつぶし、engine.Writer.WriteBarcode()を呼び出し、RasterCodecsで保存する必要があります。 これは、複数のオブジェクトタイプにわたる5つの異なる操作です。

// LEADTOOLS: 5 operations, 25歳以上 lines
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var barcodeData = new BarcodeData(BarcodeSymbology.Code128)
{
    Value = data,
    Bounds = new LeadRect(0, 0, 400, 100)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    400, 100, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, barcodeData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, outputPath, RasterImageFormat.Png, 0);
// LEADTOOLS: 5 operations, 25歳以上 lines
using Leadtools;
using Leadtools.Barcode;
using Leadtools.Codecs;

var engine = new BarcodeEngine();

var barcodeData = new BarcodeData(BarcodeSymbology.Code128)
{
    Value = data,
    Bounds = new LeadRect(0, 0, 400, 100)
};

using var image = new RasterImage(
    RasterMemoryFlags.Conventional,
    400, 100, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    null, IntPtr.Zero, 0);

new FillCommand(RasterColor.White).Run(image);
engine.Writer.WriteBarcode(image, barcodeData, null);

using var codecs = new RasterCodecs();
codecs.Save(image, outputPath, RasterImageFormat.Png, 0);
Imports Leadtools
Imports Leadtools.Barcode
Imports Leadtools.Codecs

Dim engine As New BarcodeEngine()

Dim barcodeData As New BarcodeData(BarcodeSymbology.Code128) With {
    .Value = data,
    .Bounds = New LeadRect(0, 0, 400, 100)
}

Using image As New RasterImage(
    RasterMemoryFlags.Conventional,
    400, 100, 24,
    RasterByteOrder.Bgr,
    RasterViewPerspective.TopLeft,
    Nothing, IntPtr.Zero, 0)

    Dim fillCommand As New FillCommand(RasterColor.White)
    fillCommand.Run(image)
    engine.Writer.WriteBarcode(image, barcodeData, Nothing)

    Using codecs As New RasterCodecs()
        codecs.Save(image, outputPath, RasterImageFormat.Png, 0)
    End Using
End Using
$vbLabelText   $csharpLabel

IronBarcodeのアプローチ

IronBarcodeは、画像の作成、背景の塗りつぶし、エンコードを内部的に処理します。

// IronBarcode: one method chain
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
// IronBarcode: one method chain
BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng(outputPath);
Imports IronBarcode

BarcodeWriter.CreateBarcode(data, BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng(outputPath)
$vbLabelText   $csharpLabel

IronBarcode APIは、バーコード画像を作成する際に、一連の命令型設定オブジェクトではなく、流暢なチェーンを通じて、スタイル設定、余白、回転、フォーマット変換を提供します。

APIマッピングリファレンス

リードツールズ バーコード IronBarcode ノート
コード-38859 コード-38860 キーのみ - ファイルなし
コード-38861 (removed) 有効期限の確認は不要です
コード-38862 (removed) 含まれる機能
コード-38863 (removed) 含まれる機能
コード-38864 (removed) 含まれる機能
コード-38865 静的 - インスタンスなし CODE-38866--@@、BarcodeWriterは静的です。
コード-38868 (removed) ファイルパスを直接渡す
コード-38869 (removed) ファイルパスを直接渡す
コード-38870 コード-38871 シンボルを自動検出します
コード-38872 コード-38873 同じプロパティ名
コード-38874 コード-38875 物件名が変更されました
コード-38876 コード-38877 流暢な創作
コード-38878 コード-38879 名前空間の変更
コード-38880 コード-38881 名前変更
コード-38882 コード-38883 同名
コード-38884 コード-38885 同名
コード-38886 コード-38887 同名
コード-38888 コード-38889 同名
--コード-38890--@ + @@--コード-38891--@@。 コード-38892 1つのメソッドチェーン
--コード-38893--@ + @@--コード-38894--@@。 (removed) IronBarcodeの内部

チームがLEADTOOLS BarcodeからIronBarcodeへの移行を検討する際

コンテナとクラウドのデプロイメント

ワークロードをDocker、Kubernetes、またはサーバーレス環境に移行するチームは、ファイルベースのライセンスモデルを具体的な運用上の問題として直面する。 新しいコンテナ・インスタンス、新しいクラウド・リージョン、新しい環境はすべて、アプリケーションを開始する前に、.LIC@ファイルがプロビジョニングされ、アクセスできるようになっていなければなりません。 文字列値の秘密情報を扱うように設計された秘密情報管理システムは、ファイルベースの成果物を適切に処理することができません。 環境変数による設定を標準化しているチームは、LEADTOOLSでは通常のシークレットワークフローとは別に、別途プロビジョニング手順が必要になることに気づいています。 デプロイメントの規模が拡大すると(オートスケーリング、ブルーグリーンデプロイメント、マルチリージョンレプリケーションなど)、ファイルプロビジョニングの運用コストもそれに合わせて拡大します。

SDKのフットプリントと依存関係の管理

バーコードの読み取りまたは生成がサービスの主要な、あるいは唯一の要件である場合、5つのパッケージからなるLEADTOOLSのインストールとMSVC++ 2017ランタイムへの依存は、コンテナイメージのサイズ、サーバーレス関数のコールドスタートの遅延、およびCI/CDパイプラインのビルド時間に影響を与えるオーバーヘッドとなります。 軽量なマイクロサービスやLambdaスタイルの関数を構築するチームは、バーコード固有のニーズに対応するために完全なイメージングSDKを取り込むと、コードレビューやアーキテクチャレビューで正当化するのが難しい依存関係が生じることに気づきます。 将来のプラットフォームアップグレードでネイティブランタイムの依存関係の変更をテストする必要が生じた場合、その作業はサービスを保守するチームが担当する。

価格の透明性

開発開始前にプロジェクトの予算を立てる必要がある開発チームは、LEADTOOLSが公開している価格情報だけでは、コストの全体像を把握することができません。 開発ライセンスは開発者1人あたり年間1,295ドル~1,469ドルで提供されていますが、サーバーアプリケーション向けの運用ライセンスは別途販売部門を通じて見積もりが行われます。 3台の運用サーバーに製品を出荷する5人の開発者チームは、LEADTOOLSが予算内に収まるかどうかを確認する前に、個別の見積もりを取得する必要があります。 公開されている価格に基づいて調達決定を行うことを好むチーム(選択肢を比較したり、社内承認を得たり、複数年予算を計画したりするチーム)にとって、このモデルでは評価が完了する前に営業担当者との話し合いが必要になる。

バーコードのみの要件

OCR、DICOM画像処理、文書注釈、またはLEADTOOLSSuiteのその他の機能を必要とせずにバーコードの読み取りまたは生成を行う必要があるアプリケーションは、その要件よりも広範なプラットフォームに費用を支払っていることになります。 LEADTOOLSの統合価値、つまりOCR、バーコード、文書処理モジュール間でデータをやり取りできる機能は確かに存在するが、それはこのSuiteの複数の機能が実際に使用されている場合にのみ有効となる。 要件がWeb APIでのバーコードスキャン、または文書処理パイプラインでの生成に限定されている場合、包括的なイメージングプラットフォームの負担を負うことなく、特化したバーコードライブラリで要件に直接対応できます。

一般的な移行の考慮事項

ライセンス初期化置換

LEADTOOLSの初期化ブロック全体(ファイルパス、有効期限チェック、機能ごとのロック検証)が1行に置き換えられます。IronBarcodeライセンスキーは、文字列を保存する任意のシークレット管理システムに保存できます。

// Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
// Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE");
' Replace the entire LEADTOOLS initialization block with:
IronBarCode.License.LicenseKey = Environment.GetEnvironmentVariable("IRONBARCODE_LICENSE")
$vbLabelText   $csharpLabel

Docker環境変数パターン

Dockerファイル内のCOPY LEADTOOLS.LIC@行は完全に削除されます。 ライセンスは実行時に環境変数を通じて提供され、すべての標準的なシークレットインジェクションメカニズムに対応しています。

# Remove: COPY LEADTOOLS.LIC /app/license/LEADTOOLS.LIC
# Remove: ENV LEADTOOLS_LICENSE_PATH=/app/license/LEADTOOLS.LIC
# Add:
ENV IRONBARCODE_LICENSE=your-license-key

荷物の回収

5つのLEADTOOLSパッケージ(およびオプションのPDFコーデック)は削除され、1つのパッケージに置き換えられました。

dotnet remove package Leadtools.Barcode
dotnet remove package Leadtools
dotnet remove package Leadtools.Codecs
dotnet remove package Leadtools.Codecs.Png
dotnet remove package Leadtools.Codecs.Jpeg
# If added:
dotnet remove package Leadtools.Codecs.Pdf

dotnet add package IronBarcode
dotnet remove package Leadtools.Barcode
dotnet remove package Leadtools
dotnet remove package Leadtools.Codecs
dotnet remove package Leadtools.Codecs.Png
dotnet remove package Leadtools.Codecs.Jpeg
# If added:
dotnet remove package Leadtools.Codecs.Pdf

dotnet add package IronBarcode
SHELL

IronBarcodeの追加機能

上記のセクションで説明した機能に加えて、 IronBarcodeは一般的な.NETバーコードシナリオに関連する以下の機能を提供します。

  • PDF BarCode Extraction: 複数ページの PDF ドキュメントからバーコードを読み取ります。 -機械学習に基づくエラー訂正機械学習による画像前処理により、追加の設定なしに、破損した画像、コントラストの低い画像、または回転したバーコード画像の読み取り精度が向上します。
  • 非同期バッチ処理:@--CODE-38898--@@は非同期読み取りをサポートし、スレッドをブロックすることなく高スループットのバッチ処理を可能にします。
  • QRコードロゴブランディング:@--CODE-38899--@@は、スキャナビリティを維持するために組み込みのエラー修正を使用して、1つのメソッド呼び出しでQRコードの中心にロゴ画像を埋め込むことをサポートします。
  • SVGおよびHTML出力:@--CODE-38900--@@は、ラスター画像形式に加えて、生成されたバーコードをスケーラブルなSVGファイルまたはインラインHTML要素として出力できます。
  • BarcodeReaderOptions のチューニング:読み取り速度、想定されるシンボルヒント、複数バーコードの検出、および画像の前処理は、グローバルな状態に影響を与えることなく、読み取りごとに設定できます。

.NETの互換性と将来の準備

IronBarcodeは.NET Standard 2.0をターゲットとしており、 .NET Framework 4.6.2以降、 .NET 5、 .NET 6、 .NET 7、 .NET 8、および.NET 9との互換性を提供します。このライブラリはプラットフォーム固有のネイティブランタイム要件を持たないため、追加のプロビジョニング手順なしでWindows、Linux、およびmacOSにデプロイできます。 .NET 10の普及が2026年まで進むにつれて、IronBarcodeは定期的なリリースサイクルによって、現在および将来の.NETバージョンとの互換性を確保します。 静的なAPI設計と単一パッケージの配布モデルはリリース間で安定しているため、バージョンアップグレード時にアプリケーションの初期化コードやデプロイメント構成を変更する必要はありません。

結論

LEADTOOLS BarcodeとIronBarcodeは、 .NETバーコードライブラリの設計空間において、異なる位置づけにあると言えます。 LEADTOOLSは、30年前に開発された包括的な画像処理SDKに含まれるモジュールであり、ファイルベースのライセンス体系、複数パッケージのインストール、そして開発当時の技術規範を反映した旧式のAPI設計を採用しています。 IronBarcodeは、最新の.NET向けに専用に設計されたバーコードライブラリであり、単一パッケージのインストール、文字列キーによるライセンス、および初期化オブジェクトを必要としない静的APIを備えています。

LEADTOOLS Barcodeは、アプリケーションが既に他の機能(OCR、DICOM画像処理、文書注釈、フォーム認識など)でLEADTOOLSを使用している場合に最適な選択肢です。 こうした状況において、同じSDKを通じてバーコード機能を追加することで、新たなベンダーやライセンス契約を導入することなく、既存の投資を拡張できます。LEADTOOLSのEnterprise契約を既に締結している組織は、バーコード機能を低コストで利用できる可能性があります。LEADTOOLSイメージングプラットフォームの幅広い機能を真に必要とするアプリケーションにとっては、モジュール間の統合による価値は計り知れません。

IronBarcodeは、バーコードの読み取りまたは生成がサービスの主要な、あるいは唯一の要件である場合、アプリケーションがコンテナまたはクラウドネイティブインフラストラクチャにデプロイされる場合、あるいは開発開始前に予測可能な価格設定が必要な場合に最適な選択肢です。 単一パッケージによるインストールと環境変数ライセンスモデルは、最新の.NETサービスの構成、デプロイ、スケーリングの方法に合致しています。 流暢な静的APIにより、バーコード機能に必要な初期化および操作コードが削減されます。

両ライブラリの実際的な違いは、導入シナリオにおいて最も明確に現れる。 チームが新しい環境を追加したり、新しいクラウドリージョンにスケールアップしたり、ライセンス認証情報をローテーションしたりする場合、 IronBarcodeシークレットマネージャー内の文字列を更新する必要があります。 LEADTOOLSでは、プロビジョニングファイルが必要です。この点はLEADTOOLSの設計に対する批判ではなく、各アーキテクチャが要求する要件を説明したものです。 誠実な評価を行うチームは、その説明を自社の導入モデルに直接当てはめ、どれが適切かを判断するべきである。

よくある質問

LEADTOOLS BarCodeとは何ですか?

LEADTOOLS BarCodeは、C#アプリケーションでバーコードを生成および読み取るための.NETバーコードライブラリです。これは、開発者が.NETプロジェクト用のバーコードソリューションを選択する際に評価するいくつかの選択肢の1つです。

LEADTOOLS BarcodeとIronBarcodeの主な違いは何ですか?

IronBarcodeはインスタンス管理を必要としない静的でステートレスなAPIを使用しますが、LEADTOOLS BarCodeは通常、使用前にインスタンスの作成と設定が必要です。IronBarcodeはまた、ネイティブPDFサポート、自動フォーマット検出、およびすべての環境でのシングルキーライセンスを提供します。

IronBarcode はLEADTOOLS Barcodeよりもライセンスが簡単ですか?

IronBarcodeは単一のライセンスキーで開発環境と本番環境の両方をカバーします。これは、SDKキーとランタイムキーを分離するライセンスシステムと比較して、CI/CDパイプラインとDocker構成を簡素化します。

IronBarcode は、LEADTOOLS 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 は、LEADTOOLS 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インストーラーやランタイムファイルは必要ありません。

LEADTOOLSとは異なり、購入前にIronBarcodeを評価することはできますか?

IronBarcodeのトライアルモードでは、完全なデコードされたバーコード値を返します。購入を決定する前に、ご自身のドキュメントで読み取り精度をベンチマークすることができます。

LEADTOOLS BarcodeとIronBarcodeの価格の違いは何ですか?

IronBarcodeは、開発および量産をカバーする永続的なシングルデベロッパーライセンスで749ドルからご利用いただけます。価格の詳細とボリュームオプションはIronBarcodeのライセンスページでご覧いただけます。別途ランタイムライセンスは必要ありません。

LEADTOOLS BarCodeからIronBarcodeへの移行は簡単ですか?

LEADTOOLS BarCodeからIronBarcodeへの移行は、主にインスタンスベースのAPIコールをIronBarcodeの静的メソッドに置き換え、ライセンスの定型文を削除し、結果のプロパティ名を更新します。ほとんどの移行では、コードを追加するのではなく、コードを削減します。

IronBarcodeはロゴ入りQRコードを生成できますか?

はい。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")は、設定可能なエラー修正機能付きで、ブランド画像をネイティブにQRコードに埋め込みます。カラーQRコードもChangeBarCodeColor()でサポートされています。

Jordi Bardia
ソフトウェアエンジニア
Jordiは、最も得意な言語がPython、C#、C++であり、Iron Softwareでそのスキルを発揮していない時は、ゲームプログラミングをしています。製品テスト、製品開発、研究の責任を分担し、Jordiは継続的な製品改善において多大な価値を追加しています。この多様な経験は彼を挑戦させ続け、興味を持たせており、Iron Softwareで働くことの好きな側面の一つだと言います。Jordiはフロリダ州マイアミで育ち、フロリダ大学でコンピュータサイエンスと統計学を学びました。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね