IRONSOFTWAREHOME
ビデオ

ZXing.NetからIronBarcodeへの移行

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

このガイドでは、バーコードの読み取りと生成を行う.NETアプリケーション向けに、ZXing .NETからIronBarcodeへの完全な移行手順を説明します。 ZXing.Netのコアパッケージとバインディングパッケージの削除、存在する場合のPdfiumViewerのワークアラウンドの排除、およびすべてのステートフルなBarcodeReaderのインスタンスをIronBarcodeの静的APIに置き換えます。 各セクションには、ZXing for .NET統合で最もよく見られるパターンから抽出した、変更前と変更後のコードが含まれています。

ZXing .NETから移行する理由

ZXing .NETは、無料のApache 2.0バーコードライブラリとして、10年以上にわたり.NETコミュニティに貢献してきました。 しかし、アプリケーションの規模や複雑さが増すにつれて、いくつかのアーキテクチャ上の制約が運用コストへと転じる。

スレッドセーフティ所有: ZXing.NetのBarcodeReaderは状態を持つオブジェクトです。 ライブラリの公式ドキュメントには、インスタンスはスレッド間で共有してはならないと明記されている。 実際には、これは、同時処理パス(同時リクエストを処理するコントローラアクション、並列バッチ内のタスクなど)ごとに、独自のリーダーを割り当て、構成し、破棄する必要があることを意味します。 リクエスト量が増加するにつれて、この割り当てパターンは測定可能なメモリ負荷を生み出す。 ThreadLocal<BarcodeReader>の代替案は割り当て頻度を減少させますが、そのための廃棄の複雑性を導入します。 どちらの場合も、並行処理における正しさは呼び出し側の責任であり、ライブラリが提供する保証ではありません。

フォーマット仕様リスク: ZXing.Netは各デコード操作の前にreader.Options.PossibleFormatsが埋められている必要があります。 そのリストに存在しないフォーマットのバーコードはnullを返します — 例外も警告も、バーコードが存在していたが認識されなかったという指示もありません。 外部パートナーからドキュメントを受け取るアプリケーションにとって、このサイレントミスの振る舞いは信頼性のリスクです: 誤配送された注文、患者のチェックイン記録の見逃し、記録されない監査エントリはすべて、以前の要件用に設定され更新されなかったフォーマットリストから発生する可能性があります。

PDF処理のギャップ: ZXing .NETはビットマップしか読み取れません。 ソースドキュメントがPDF(請求書、出荷明細書、コンプライアンス証明書など)の場合、呼び出し元は別途PDFレンダリングライブラリ(最も一般的なのはPdfiumViewer)を統合し、ページ列挙ループを実装し、DPIを設定し、一時ファイルを管理し、成功時と失敗時の両方でクリーンアップ処理を行う必要があります。 これは、ZXing .NETが読み取れないもの(PDF)を、読み取れるもの(ビットマップ)に変換するためだけに存在する、統合ごとに30~50行のインフラストラクチャコードです。 そのインフラストラクチャには、独自の依存関係、独自の導入要件、そして独自の障害モードが存在する。

プラットフォームバインディングの断片化: ZXing.Netの画像読み込み機能は、プラットフォーム固有のバインディングパッケージに分散しています。 WindowsのバインディングはSystem.Drawing.Bitmapを使用します。 クロスプラットフォームのバインディングは異なるジェネリックタイプパラメータと異なるSixLabors.ImageSharpを使用します。Windowsで開始し、後でLinuxでコンテナ化するプロジェクトは、NuGetの参照と画像読み込みのコードの両方を変更する必要があります。 同じ操作に対して2つのコードパスが存在すると、バグが発生する可能性が高まり、スキャンレイヤーの将来的な変更に対する障壁が増加する。

基本的な問題

ZXing .NETアーキテクチャを最も明確に示しているのは、シングルスレッド呼び出しと並行呼び出しの間のギャップである。 ZXing .NETでは、並行処理を行うには、並列操作ごとに完全なリーダーオブジェクトを作成する必要があります。

// ZXing.Net: full reader instantiation and configuration on every parallel task
Parallel.ForEach(files, file =>
{
    var reader = new BarcodeReader();
    reader.Options.PossibleFormats = new List<BarcodeFormat>
    {
        BarcodeFormat.QR_CODE,
        BarcodeFormat.CODE_128,
        BarcodeFormat.EAN_13
    };

    using var bitmap = new Bitmap(file);
    var result = reader.Decode(bitmap);
    if (result != null)
        processed[file] = result.Text;
});

IronBarcodeはオブジェクトを完全に削除します。 静的呼び出しは、1つのスレッドで実行されても、100のスレッドで実行されても同じです。

// IronBarcode: static call, same code for single-threaded and concurrent use
Parallel.ForEach(files, file =>
{
    var result = BarcodeReader.Read(file).FirstOrDefault();
    if (result != null)
        processed[file] = result.Value;
});

IronBarcodeとZXing .NET:機能比較

フィーチャーZXing.NetIronBarcode
ライセンスアパッチ2.0(無料)商用
スレッドセーフティスレッドセーフではありません。スレッドごとに新しいインスタンスが必要です。スレッドセーフな静的API
フォーマット検出手動 — PossibleFormatsリストが必要です自動 — 50種類以上のフォーマット
PDFリーディングいいえ — PdfiumViewerまたは同様のツールが必要ですネイティブ — 単一メソッド呼び出し
プラットフォームサポートプラットフォームごとに個別のバインディングパッケージ単一パッケージ、全プラットフォーム対応
画像ごとに複数のバーコードはい — DecodeMultipleはい — デフォルトの振る舞いです
バーコード生成Bitmapを返し、手動で保存が必要です組み込み出力機能を備えた流暢なAPI
QRコードロゴのサポートなしはい
QRコードの色管理なしはい
破損したバーコードの復旧TryHarderフラグ機械学習を活用した画像補正
Dockerの追加依存関係libgdiplusが必要になる場合がありますNone
商用SLAサポートなしはい
必要なNuGetパッケージ2~3(コア+バインディング+オプションのImageSharp)1

クイックスタート

ステップ1:ZXing .NETパッケージを削除する

プロジェクトからすべてのZXing .NETおよび関連パッケージを削除します。

dotnet remove package ZXing.Net
dotnet remove package ZXing.Net.Bindings.Windows.Compatibility
dotnet remove package ZXing.Net.Bindings.ImageSharp
dotnet remove package PdfiumViewer
SHELL

ネイティブのPdfiumViewerバイナリが別のパッケージとしてインストールされた場合:

dotnet remove package PdfiumViewer.Native.x64.v8-xfa
SHELL

DockerfileにSystem.Drawingのサポートのために追加された)、移行後にその行を削除できます。

ステップ2: IronBarcodeをインストールする

dotnet add package IronBarcode
SHELL

追加のバインディングパッケージやプラットフォーム固有の依存関係は必要ありません。 同じNuGetパッケージは、Windows、Linux、macOS、および Docker コンテナ内で動作します。 デプロイの詳細については、 IronBarcodeのDockerおよびLinuxセットアップガイドに、具体的なDockerfileのパターンが記載されています。

ステップ3:名前空間を更新し、ライセンスを初期化する

バーコード操作を使用するすべてのファイルから、ZXing関連の名前空間をすべて削除してください。

// Remove all of these:
using ZXing;
using ZXing.Common;
using ZXing.Windows.Compatibility;
using ZXing.ImageSharp;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.PixelFormats;
using PdfiumViewer;

// Add this single import:
using IronBarCode;

アプリケーションの起動時、バーコード操作の前にライセンスの初期化処理を追加してください。

// Program.cs or Startup.cs — initialise once at startup
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";

ライセンスキーは環境変数、appsettings.json、またはシークレットマネージャーからロードできる単純な文字列です。 探すべきファイルも、設定すべきパスもありません。

コード移行の例

画像から単一のバーコードを読み取る

この例では、最も一般的な ZXing .NETの使用パターン、つまりリーダーのインスタンス化、フォーマット リストの設定、ビットマップの読み込み、デコードという手順を置き換えます。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Windows.Compatibility;
using System.Drawing;

public string ReadSingleBarcode(string imagePath)
{
    var reader = new BarcodeReader();
    reader.Options.PossibleFormats = new List<BarcodeFormat>
    {
        BarcodeFormat.QR_CODE,
        BarcodeFormat.CODE_128,
        BarcodeFormat.EAN_13
    };

    using var bitmap = new Bitmap(imagePath);
    var result = reader.Decode(bitmap);

    return result?.Text ?? string.Empty;
}

IronBarcodeのアプローチ:

using IronBarCode;

public string ReadSingleBarcode(string imagePath)
{
    var result = BarcodeReader.Read(imagePath).FirstOrDefault();
    return result?.Value ?? string.Empty;
}

フォーマットリスト、usingのブロックがすべて削除されます。 IronBarcodeはファイルパスを直接受け付け、サポートされているすべてのフォーマットを自動的に検出します。 以前デコードされた文字列を返していたプロパティはZXing.Netのresult.Textでした。 それはIronBarcodeのresult.Valueです。

画像からすべてのバーコードを読み取る

この例はDecodeMultipleを置き換えます。ZXing.Netではサイレントミスを避けるために徹底したフォーマットリストが必要です。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Windows.Compatibility;
using System.Drawing;

public List<string> ReadAllBarcodes(string imagePath)
{
    var reader = new BarcodeReader();
    reader.Options.PossibleFormats = new List<BarcodeFormat>
    {
        BarcodeFormat.QR_CODE,
        BarcodeFormat.CODE_128,
        BarcodeFormat.CODE_39,
        BarcodeFormat.EAN_13,
        BarcodeFormat.EAN_8,
        BarcodeFormat.UPC_A,
        BarcodeFormat.DATA_MATRIX,
        BarcodeFormat.PDF_417
    };
    reader.Options.TryHarder = true;

    using var bitmap = new Bitmap(imagePath);
    var results = reader.DecodeMultiple(bitmap);

    return results?.Select(r => r.Text).ToList() ?? new List<string>();
}

IronBarcodeのアプローチ:

using IronBarCode;

public List<string> ReadAllBarcodes(string imagePath)
{
    return BarcodeReader.Read(imagePath)
        .Select(r => r.Value)
        .ToList();
}

BarcodeReader.Readは常にコレクションを返し、nullを返すことはないため、結果のnullガードが不要になります。 精度と速度のバランスを調整するために、読み取り速度オプションガイドをご覧ください。これには、フォーマットスコープを狭めずにReadingSpeed列挙型について説明しています。

同時バッチ処理

この例は、ねじの安全性の違いを最も直接的に示しています。 ZXing .NETでは、並列処理ごとに新しいリーダーが必要です。 IronBarcodeは、同時実行レベルに関係なく、同じ静的呼び出しを使用します。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Windows.Compatibility;
using System.Collections.Concurrent;
using System.Drawing;

public Dictionary<string, string> ProcessBatch(IEnumerable<string> filePaths)
{
    var output = new ConcurrentDictionary<string, string>();

    Parallel.ForEach(filePaths, new ParallelOptions { MaxDegreeOfParallelism = 4 }, file =>
    {
        // ZXing.Net is not thread-safe — a new reader is required per parallel operation
        var reader = new BarcodeReader();
        reader.Options.PossibleFormats = new List<BarcodeFormat>
        {
            BarcodeFormat.QR_CODE,
            BarcodeFormat.CODE_128
        };

        using var bitmap = new Bitmap(file);
        var result = reader.Decode(bitmap);
        if (result != null)
            output[file] = result.Text;
    });

    return output.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}

IronBarcodeのアプローチ:

using IronBarCode;
using System.Collections.Concurrent;

public Dictionary<string, string> ProcessBatch(IEnumerable<string> filePaths)
{
    var output = new ConcurrentDictionary<string, string>();
    var options = new BarcodeReaderOptions { MaxParallelThreads = 4 };

    Parallel.ForEach(filePaths, file =>
    {
        var result = BarcodeReader.Read(file, options).FirstOrDefault();
        if (result != null)
            output[file] = result.Value;
    });

    return output.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
}

保護または隔離すべきリーダーインスタンスは存在しません。 非同期パイプラインのパターンとスレッド数の設定については、"非同期およびマルチスレッドのバーコード読み取りガイド"を参照してください。

PDFファイルからバーコードを抽出する

この例はPdfiumViewerレンダーループを置き換えています。既存の統合がPdfiumViewerの代わりにGhostscriptやiTextを使用していた場合、前のブロックは詳細は異なりますが、構造は同一です: ページ列挙ループがビットマップをZXing.Netに供給します。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Windows.Compatibility;
using PdfiumViewer;
using System.Drawing;
using System.Drawing.Imaging;

public List<string> ExtractBarcodesFromPdf(string pdfPath)
{
    var collected = new List<string>();

    var reader = new BarcodeReader();
    reader.Options.PossibleFormats = new List<BarcodeFormat>
    {
        BarcodeFormat.QR_CODE,
        BarcodeFormat.CODE_128,
        BarcodeFormat.PDF_417
    };

    using var document = PdfDocument.Load(pdfPath);
    for (int page = 0; page < document.PageCount; page++)
    {
        string temp = Path.Combine(Path.GetTempPath(), $"{Guid.NewGuid()}.png");
        try
        {
            using var rendered = document.Render(page, 200, 200, PdfRenderFlags.CorrectFromDpi);
            rendered.Save(temp, ImageFormat.Png);

            using var bmp = new Bitmap(temp);
            var decoded = reader.DecodeMultiple(bmp);
            if (decoded != null)
                collected.AddRange(decoded.Select(d => d.Text));
        }
        finally
        {
            if (File.Exists(temp))
                File.Delete(temp);
        }
    }

    return collected;
}

IronBarcodeのアプローチ:

using IronBarCode;

public List<string> ExtractBarcodesFromPdf(string pdfPath)
{
    return BarcodeReader.Read(pdfPath)
        .Select(r => r.Value)
        .ToList();
}

PdfiumViewerへの依存関係、ページレンダリングループ、DPI設定、一時ファイルの作成、およびクリーンアップブロックはすべて削除されました。 IronBarcodeはPDFファイルからバーコードをネイティブに読み取り、すべてのページを自動的に処理します。

バーコードの生成

ZXing.NetのライターはSystem.Drawing.Imagingを使って保存する必要があります。 IronBarcodeは組み込みの出力メソッドを持つGeneratedBarcodeを返します。

ZXing .NETアプローチ:

using ZXing;
using ZXing.Common;
using ZXing.Windows.Compatibility;
using System.Drawing;
using System.Drawing.Imaging;

public void WriteCode128(string content, string outputPath)
{
    var writer = new BarcodeWriter
    {
        Format = BarcodeFormat.CODE_128,
        Options = new EncodingOptions
        {
            Width = 400,
            Height = 120,
            Margin = 10
        }
    };

    using var bitmap = writer.Write(content);
    bitmap.Save(outputPath, ImageFormat.Png);
}

IronBarcodeのアプローチ:

using IronBarCode;

public void WriteCode128(string content, string outputPath)
{
    BarcodeWriter.CreateBarcode(content, BarcodeEncoding.Code128)
        .ResizeTo(400, 120)
        .SaveAsPng(outputPath);
}

ファイルに保存する代わりにバイナリ出力が必要な場合、返されるMemoryStreamの基本機能は必要ありません。

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

ZXing.NetIronBarcodeノート
new BarcodeReader()静的 - インスタンスなしBarcodeReader.Read(...)は静的な呼び出しです
reader.Options.PossibleFormats = new List<BarcodeFormat> { ... }不要自動検出機能は50種類以上のフォーマットに対応しています。
reader.Options.TryHarder = trueSpeed = ReadingSpeed.Balanced精度の調整はBarcodeReaderOptionsで行います
reader.Decode(bitmap)BarcodeReader.Read(imagePath).FirstOrDefault()ファイルパスを渡す — Bitmapの構築は必要ありません
reader.DecodeMultiple(bitmap)BarcodeReader.Read(imagePath)常にコレクションを返します。 never null
result.Textresult.Value物件名が変更されました
result.BarcodeFormatresult.Format物件名が変更されました
BarcodeFormat.QR_CODEBarcodeEncoding.QRCode列挙型の命名規則の変更
BarcodeFormat.CODE_128BarcodeEncoding.Code128列挙型の命名規則の変更
BarcodeFormat.EAN_13BarcodeEncoding.EAN13列挙型の命名規則の変更
BarcodeFormat.DATA_MATRIXBarcodeEncoding.DataMatrix列挙型の命名規則の変更
BarcodeFormat.PDF_417BarcodeEncoding.PDF417列挙型の命名規則の変更
new BarcodeWriter { Format = ..., Options = new EncodingOptions { ... }}BarcodeWriter.CreateBarcode(data, encoding)静的ファクトリ、オプションなしオブジェクト
Bitmapを返します.SaveAsPng(path) / .ToPngBinaryData()GeneratedBarcodeに組み込みの出力があります
EncodingOptions { Width, Height }.ResizeTo(width, height)フルエントサイズ測定法
PDFはサポートされていませんBarcodeReader.Read("file.pdf")ネイティブPDFサポート、全ページ

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

第1号:バーコードリーダーのインスタンス化パターン

ZXing.Net: 呼び出し側はresult.Textを読み取ります。

**解決策:**インスタンス化を完全に削除する。 完全なパターンを静的呼び出しに置き換えます。

// Before: reader creation + format config + bitmap + decode + result.Text
// After:
var result = BarcodeReader.Read(imagePath).FirstOrDefault();
var value = result?.Value ?? string.Empty;

new BarcodeReader()をコードベースで検索し、すべてのインスタンスを見つけます。 それぞれが削除されるだけで、リファクタリングは行われません。

問題2:PossibleFormatsブロックの削除

**ZXing .NET:**すべてのデコード呼び出しの前に reader.Options.PossibleFormats = new List が続きます<BarcodeFormat>{ ... }`割り当て。 これらのリストは多くの場合長く、プロジェクトごとに異なる。

解決策:PossibleFormats割り当てブロックを完全に削除します。 IronBarcodeはフォーマットの自動検出を実行します。 フォーマットリストは受け付けられませんし、必要もありません。 フォーマットリストに加えてSpeed = ReadingSpeed.Balancedを設定し、精度を調整します。

問題3:バインディングパッケージのクリーンアップ

ZXing.Net: System.Drawing.Bitmapを入力タイプとして参照しています。 SixLabors.ImageSharp.Image<Rgba32>を参照します。 どちらのパターンも、バインディングパッケージを削除すると機能しなくなります。

**解決策:**両方のバインディングパッケージを削除し、すべての画像読み込みコードを置き換えてください。 IronBarcodeのImage<t>の構築は必要ありません。 もっぱらusing System.Drawing;インポートも削除できます。

問題4:result.Textからresult.Valueへの変換

ZXing.Net: デコードされたバーコード値はresult.Textを介してアクセスされます。 バーコード形式はresult.BarcodeFormatを介してアクセスされます。

解決策: コードベース全体でresult.Formatに置き換えます。 どちらの変更も動作の違いがない単純なプロパティ名の変更です。

ZXing .NET移行チェックリスト

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

変更を加える前に、コードベースを監査して、ZXing for .NET参照をすべて見つけてください。

grep -r "using ZXing" --include="*.cs" .
grep -r "new BarcodeReader" --include="*.cs" .
grep -r "PossibleFormats" --include="*.cs" .
grep -r "BarcodeFormat\." --include="*.cs" .
grep -r "reader\.Decode\|reader\.DecodeMultiple" --include="*.cs" .
grep -r "result\.Text\|result\.BarcodeFormat" --include="*.cs" .
grep -r "new BarcodeWriter\|writer\.Write\|EncodingOptions" --include="*.cs" .
grep -r "PdfiumViewer\|PdfDocument\.Load" --include="*.cs" .
grep -r "using System\.Drawing" --include="*.cs" .
SHELL

どのファイルがZXingバインディングパッケージ(Windows対ImageSharp)を参照しているかを文書化し、System.Drawing.BitmapがZXing入力のためにのみ使用されている場所を記録します。 Dockerfile(存在する場合)を確認してlibgdiplusのインストールを確認します。

コード更新タスク

  1. PdfiumViewer NuGetパッケージを削除します
  2. IronBarcode NuGetパッケージをインストールします
  3. アプリケーションのスタートアップにIronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY";を追加します
  4. すべてのusing IronBarCode;に置き換えます
  5. すべてのnew BarcodeReader()のインスタンス化を削除します
  6. すべてのreader.Options.PossibleFormats = ...のブロックを削除します
  7. BarcodeReader.Read(imagePath).FirstOrDefault()に置き換えます
  8. BarcodeReader.Read(imagePath)に置き換えます
  9. result.Valueに置き換えます
  10. result.Formatに置き換えます
  11. BarcodeEncoding.Xの同等のもに更新します 12.new BarcodeWriter { Format = ..., Options = new EncodingOptions { ... を置き換えます }}with BarcodeWriter.CreateBarcode(data, encoding).ResizeTo(w, h)
  12. writer.Write(data) + .ToPngBinaryData()に置き換えます
  13. ZXing.Netのビットマップ読み込みのためだけに存在していたすべてのusing System.Drawing;インポートを削除します
  14. PDFの回避策として実装されていたPdfiumViewerのページレンダリングループをすべて削除します。
  15. Linux上でlibgdiplusを削除します

移行後のテスト

アプリケーションが以前に検出するように設定されていたすべてのバーコード形式が正常に検出されたことを確認します。 以前はPossibleFormatsリストから除外されていたバーコード形式を含む画像でテストし、自動検出がそれらを正しくピックアップすることを確認します。

  • 負荷をかけた状態で並行処理パスを実行し、競合状態やnull結果がないことを確認します。 アプリケーションが PdfiumViewer を介して PDF を処理した場合は、同じ PDF 入力を提供し、バーコードの値が一致することを確認してください。 生成されたバーコード(Code 128、QRコードなど)が正しい出力形式と寸法であることを確認してください。 LinuxまたはDockerデプロイメントで、libgdiplusを使用せずに画像の読み取りとPDFの読み取りが機能することを確認します。
  • 全てのテストSuiteを実行し、出力を移行前のベースラインと比較する

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

スレッドセーフティの負担を排除: IronBarcodeの静的APIは、スレッドごとのインスタンスパターンを完全に排除します。 インスタンス化するリーダーもなく、スレッドごとにフォーマットリストを設定する必要もなく、ThreadLocalプールを管理する必要もありません。 同じ呼び出しは、シングルスレッド環境と高並行環境の両方で正しく動作し、並行処理の正しさは、呼び出し元ごとに委ねられるのではなく、ライブラリによって提供されます。

自動フォーマット検出: PossibleFormatsリストを削除することで、開発中に予期されていなかったバーコード形式を含むドキュメントで発生するサイレントミスの失敗カテゴリーが排除されます。 外部パートナーからの文書を処理するアプリケーションや、進化し続けるバーコード規格に対応するアプリケーションは、信頼性を維持するためにフォーマットリストのメンテナンスを必要としなくなりました。

ネイティブPDF処理: PdfiumViewerのレンダリングループ(ページ列挙、DPI設定、一時ファイルのライフサイクル、クリーンアップコードなど)は完全に削除されます。 以前はPDFバーコードを処理するために2つのライブラリ(ZXing .NETとPDFレンダラー)が必要だったアプリケーションが、今では1つのライブラリで処理できるようになりました。 デプロイされる依存関係が減少することで、ビルドとデプロイの両方のプロセスが簡素化されます。

単一のクロスプラットフォームパッケージ: WindowsとLinuxの展開におけるバインディングパッケージの区別がなくなります。 同じBarcodeReader.Read(path)呼び出しは、すべてのターゲットプラットフォームで同一にコンパイルされ、動作するため、画像読み込みコードのプラットフォーム条件を排除し、クロスプラットフォームの開発とコンテナ化のワークフローを簡素化します。

**インフラストラクチャ コードの削減:**この移行の最も重要な成果は、ZXing .NET統合に存在していた周辺インフラストラクチャ (ビットマップ読み込みブロック、フォーマット リスト、PdfiumViewer レンダリング ループ、ThreadLocal プール) が削除されたことです。これらはバーコード処理のためではなく、ライブラリのアーキテクチャ要件を満たすために存在していました。 移行後に残るのは、バーコードのロジックそのものです。 検出率やスキャンシナリオに関するより詳細な情報については、 ZXing .NETとIronBarcodeスキャナーの比較記事でより包括的な分析が提供されています。

ご注意: Ghostscript, PDFium, ZXing.NET, iTextは、それぞれの所有者の登録商標です。 このサイトは、Artifex Software、Chromium Project、Google、ZXing.NET、またはiText Groupと提携しておらず、承認もされておらず、スポンサーもされていません。すべての製品名、ロゴ、およびブランドはそれぞれの所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。
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日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。