Neodynamic Barcode Professional 與 IronBarcode:C# 條碼庫對比
Neodynamic 的條碼讀取器 SDK 無法讀取二維碼。 即使您同時購買了 Neodynamic SDK,仍然可能無法讀取配套產生器產生的相同二維碼。 這種矛盾——一個支援 QR Code、DataMatrix、PDF417 和 Aztec 格式的條碼產生器,卻搭配一個不支援這些格式的閱讀器——定義了使用 Neodynamic 條碼工具的實際體驗,並為接下來與IronBarcode的比較奠定了基礎。
了解新動態條碼
Neodynamic 透過兩個完全獨立的商業產品提供條碼功能:用於產生條碼功能的 Barcode Professional SDK 和用於讀取條碼的 Barcode Reader SDK。 每個產品都以獨立的 NuGet 套件形式分發,需要單獨購買,並帶有獨立的許可證金鑰。 一個既需要產生又需要讀取的專案必須獨立地整合這兩個軟體包,透過單獨的更新週期來維護這兩個軟體包,並在應用程式啟動時配置這兩個軟體包。
條碼專業SDK是生成元件。 它支援多種符號體系,包括線性格式(Code 128、Code 39、EAN-13、UPC-A、Codabar、ITF)和二維格式(QR Code、DataMatrix、PDF417、Aztec)。 此 SDK 使用基於實例的 API:首先建立一個 BarcodeInfo 對象,為其賦值,然後呼叫 GetImage() 產生一個 System.Drawing.Image 對象,並透過標準 System.Drawing.Imaging 管道儲存該物件。該 SDK 依賴 System.Drawing,這限制了跨平台部署。
條碼讀取器 SDK 是讀取元件。 它接受 System.Drawing.Bitmap,並且只傳回一維符號體系的結果。 此閱讀器不支援二維碼、DataMatrix、PDF417、Aztec 以及所有其他二維格式。 當提交二維條碼時,SDK 不會傳回任何結果——它不會拋出異常,而只是產生一個空的結果集。 使用 Neodynamic 產品建構生成工作流程後發現此限制的團隊會發現,恢復 2D 讀取功能需要添加 Neodynamic 生態系統以外的第三個庫。
新動態條碼的關鍵架構特性:
-產生和讀取分別使用不同的產品:使用這兩種功能的項目需要兩個 NuGet 套件、兩次購買和兩個許可證金鑰。
-產生二維碼卻無法讀取二維碼:條碼專業 SDK 可以產生 QR 碼、DataMatrix、PDF417 和 Aztec 格式,但配套的條碼閱讀器 SDK 無法讀取這些格式中的任何一種。
-基於實例的產生 API:產生需要建構一個 BarcodeInfo 物件並指派屬性,然後再呼叫 GetImage()。
- System.Drawing 依賴:兩個 SDK 都依賴
System.Drawing,這限制了在 Linux 和容器環境中部署,除非進行額外的配置。 -僅支援一維條碼讀取範圍:條碼讀取器 SDK 支援 Code 128、EAN-13、UPC-A、Code 39、Codabar、Interleaved 2 of 5 和 MSI/Plessey。 不包含2D格式。 -不支援原生 PDF:兩個 SDK 都無法直接從 PDF 文件中讀取條碼; 需要單獨的影像擷取步驟。 -不支援自動格式偵測:讀取器根據其支援的格式而不是影像內容來推斷格式。
拆分式 SDK 架構
購買了兩個 Neodynamic SDK 的專案必須在啟動時配置兩個獨立的許可證區塊。這兩個許可證塊 LicenseOwner 和 LicenseKey 使用不同的命名空間和類名,並且彼此之間互不感知:
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;
// Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.LicenseKey = "GEN-KEY";
// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
// Neodynamic: two products, two license configurations
using Neodynamic.SDK.Barcode;
using Neodynamic.SDK.BarcodeReader;
// Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company";
BarcodeInfo.LicenseKey = "GEN-KEY";
// Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company";
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY";
Imports Neodynamic.SDK.Barcode
Imports Neodynamic.SDK.BarcodeReader
' Neodynamic: two products, two license configurations
' Generation license (Barcode Professional SDK)
BarcodeInfo.LicenseOwner = "Company"
BarcodeInfo.LicenseKey = "GEN-KEY"
' Reader license — separate purchase, separate key
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner = "Company"
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey = "READ-KEY"
這種模式在每個環境(開發、測試和生產)中都會重複出現,每當產品升級或更新時都必須保持這種模式。
了解 IronBarcode
IronBarcode 是由 Iron Software 開發的商業 .NET 條碼庫,它透過一個 NuGet 套件在單一授權下提供條碼產生和讀取功能。 此函式庫使用靜態 API 模型:產生透過 BarcodeWriter.CreateBarcode() 執行,讀取透過 BarcodeReader.Read() 執行。 這兩種方法都適用於所有支援的符號體系,無需特定格式的程式碼路徑。
IronBarcode 的建置不依賴 System.Drawing,因此無需特定於平台的配置即可部署在 Linux、macOS 和 Docker 容器中。 該庫可以直接從圖像檔案、圖像流和 PDF 文件中讀取條碼,無需對 PDF 來源進行單獨的圖像提取步驟。
IronBarcode的主要特點:
-產生和讀取的單一軟體包:一個 NuGet 套件、一個許可證密鑰和一個配置區塊涵蓋所有條碼操作。
-統一的一維和二維支援:同一個 API 可以讀取和產生 Code 128、EAN-13、QR Code、DataMatrix、PDF417、Aztec 和 50 多種其他符號系統。
-靜態流暢 API: BarcodeWriter.CreateBarcode() 傳回一個可鍊式呼叫的結果; BarcodeReader.Read() 接受文件路徑、流和 PDF 文件。
-自動格式偵測:讀取器可從影像內容識別符號,而無需呼叫者指定預期格式。
-無需 System.Drawing 依賴:在 Linux 和容器中進行跨平台部署無需額外的本機程式庫配置。
-原生 PDF 讀取:直接讀取嵌入在 PDF 文件中的條碼,傳回條碼值以及頁碼元資料。
-非同步和批次處理: BarcodeReader.ReadAsync() 和多頁批次操作支援高吞吐量伺服器工作負載。
功能比較
下表總結了Neodynamic產品與IronBarcode產品之間最主要的差異:
| 特點 | Neodynamic 條碼專業版 | 新動力條碼閱讀器 | IronBarcode |
|---|---|---|---|
| 條碼生成 | 是 | 無 | 是 |
| 一維條碼讀取 | 無 | 是 | 是 |
| QR 圖條碼讀取 | 無 | 無 | 是 |
| 所需產品 | 1(僅限一代) | 1(僅供閱讀) | 1(兩者) |
| 需要許可證密鑰 | 每購買一件產品,即可獲得 1 件。 | 每購買一件產品,即可獲得 1 件。 | 共 1 人 |
| 原生 PDF 條碼讀取 | 無 | 無 | 是 |
| 系統繪圖依賴項 | 是 | 是 | 無 |
詳細功能比較
| 特點 | Neodynamic 條碼專業版 | 新動力條碼閱讀器 | IronBarcode |
|---|---|---|---|
| 世代 | |||
| 代碼 128 生成 | 是 | 不適用 | 是 |
| EAN-13 / UPC-A 代 | 是 | 不適用 | 是 |
| 代碼 39 生成 | 是 | 不適用 | 是 |
| 二維碼生成 | 是 | 不適用 | 是 |
| DataMatrix 生成 | 是 | 不適用 | 是 |
| PDF417 生成 | 是 | 不適用 | 是 |
| 阿茲特克世代 | 是 | 不適用 | 是 |
| 閱讀 | |||
| 代碼 128 讀數 | 不適用 | 是 | 是 |
| EAN-13 / UPC-A 讀取 | 不適用 | 是 | 是 |
| 代碼 39 讀數 | 不適用 | 是 | 是 |
| Codabar 閱讀 | 不適用 | 是 | 是 |
| QR 圖碼讀取 | 不適用 | 不 | 是 |
| DataMatrix 讀取 | 不適用 | 不 | 是 |
| PDF417 閱讀 | 不適用 | 不 | 是 |
| 阿茲特克語 | 不適用 | 不 | 是 |
| 自動格式偵測 | 不適用 | 無 | 是 |
| 輸入來源 | |||
| 影像檔輸入 | 是 | 是 | 是 |
| PDF文件輸入 | 無 | 無 | 是 |
| 流輸入 | 是 | 是 | 是 |
| 平台和許可 | |||
| 系統繪圖依賴項 | 是 | 是 | 無 |
| Linux/Docker 支援 | 限額 | 限額 | 是 |
| .NET Standard 2.0 | 是 | 是 | 是 |
| .NET 8 / .NET 9 | 是 | 限額 | 是 |
| 需要 NuGet 套件 | 每件商品1件 | 每件商品1件 | 共 1 人 |
| 需要許可證密鑰 | 每件商品1件 | 每件商品1件 | 共 1 人 |
閱讀格式支持
這兩個 Neodynamic SDK 和IronBarcode之間的讀取格式差異是本次比較中最顯著的技術差異。
新動力學條碼閱讀器方法
Neodynamic條碼閱讀器僅支援線性條碼。 當向讀取器提交二維條碼時,SDK 傳回空結果集或 null 結果集。 沒有引發異常,也沒有錯誤訊息表明發生了什麼。 使用此 SDK 的團隊通常會在部署呼叫讀取器讀取二維碼影像的程式碼後發現此限制,並觀察到結果集合始終為空。
在使用 Neodynamic Reader 的程式庫中,常見的防禦模式是明確檢查,當預期為 2D 格式時引發異常:
// 新動力條碼閱讀器 SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var results = BarcodeReader.Read(bitmap);
// Results will be null or empty — QR codes are not recognised by this SDK
if (results == null || !results.Any())
{
throw new NotSupportedException(
"Neodynamic Barcode Reader does not support QR codes");
}
return results.First().Value;
}
// 新動力條碼閱讀器 SDK: QR code reading is not supported
using Neodynamic.SDK.BarcodeReader;
using System.Drawing;
public string ReadQrCode(string imagePath)
{
using var bitmap = new Bitmap(imagePath);
var results = BarcodeReader.Read(bitmap);
// Results will be null or empty — QR codes are not recognised by this SDK
if (results == null || !results.Any())
{
throw new NotSupportedException(
"Neodynamic Barcode Reader does not support QR codes");
}
return results.First().Value;
}
Imports Neodynamic.SDK.BarcodeReader
Imports System.Drawing
Public Function ReadQrCode(imagePath As String) As String
Using bitmap As New Bitmap(imagePath)
Dim results = BarcodeReader.Read(bitmap)
' Results will be null or empty — QR codes are not recognised by this SDK
If results Is Nothing OrElse Not results.Any() Then
Throw New NotSupportedException("Neodynamic Barcode Reader does not support QR codes")
End If
Return results.First().Value
End Using
End Function
僅使用 Neodynamic Reader SDK 無法完成此方法。 NotSupportedException 不是一種變通方法,而是讀者對 2D 輸入所能提供的唯一誠實回應。
IronBarcode方法
IronBarcode 透過同一個 BarcodeReader.Read() 呼叫讀取所有支援的條碼系統。 系統會根據影像內容自動偵測格式。 二維碼、Code 128 條碼和 DataMatrix 條碼都使用相同的呼叫碼:
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417 — all handled automatically
var result = BarcodeReader.Read(imagePath).FirstOrDefault();
return result?.Value;
}
using IronBarCode;
public string ReadQrCode(string imagePath)
{
// QR codes, DataMatrix, PDF417 — all handled automatically
var result = BarcodeReader.Read(imagePath).FirstOrDefault();
return result?.Value;
}
Imports IronBarCode
Public Function ReadQrCode(imagePath As String) As String
' QR codes, DataMatrix, PDF417 — all handled automatically
Dim result = BarcodeReader.Read(imagePath).FirstOrDefault()
Return If(result?.Value, Nothing)
End Function
呼叫者未指定預期格式。IronBarcode可識別條碼並傳回其值。 有關影像讀取選項(包括多條碼檢測和影像預處理)的完整詳細信息,請參閱影像條碼讀取指南。
條碼生成
Neodynamic Barcode Professional 和IronBarcode都能夠產生一維和二維條碼。 差別在於 API 風格和依賴項大小,而不是輸出能力。
新動態條碼專業方法
Neodynamic 的產生 API 是基於實例的。 建構一個 BarcodeInfo 對象,分別賦值其屬性,並呼叫 GetImage() 傳回一個 System.Drawing.Image。 然後使用 System.Drawing.Imaging.ImageFormat 枚舉保存影像:
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
using Neodynamic.SDK.Barcode;
// Configure license first
BarcodeInfo.LicenseOwner = "Your Company";
BarcodeInfo.LicenseKey = "YOUR-KEY";
// Build the barcode through property assignment
var barcode = new BarcodeInfo();
barcode.Value = "12345678";
barcode.Symbology = Symbology.Code128;
barcode.TextAlign = BarcodeTextAlignment.BelowCenter;
barcode.Dpi = 300;
// Get image and save via System.Drawing
System.Drawing.Image image = barcode.GetImage();
image.Save("output.png", System.Drawing.Imaging.ImageFormat.Png);
Imports Neodynamic.SDK.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging
' Configure license first
BarcodeInfo.LicenseOwner = "Your Company"
BarcodeInfo.LicenseKey = "YOUR-KEY"
' Build the barcode through property assignment
Dim barcode As New BarcodeInfo()
barcode.Value = "12345678"
barcode.Symbology = Symbology.Code128
barcode.TextAlign = BarcodeTextAlignment.BelowCenter
barcode.Dpi = 300
' Get image and save via System.Drawing
Dim image As Image = barcode.GetImage()
image.Save("output.png", ImageFormat.Png)
該 SDK 提供合法的自訂選項,包括 DPI 控制、文字對齊、顏色設定和靜默區大小。 這些功能對於需要精確實體尺寸的列印工作流程非常有用。 發電能力本身是完整的; 促使人們遷移的限制因素在於閱讀方面,而不是生成方面。
IronBarcode方法
IronBarcode採用流暢的靜態方法。 編碼和資料作為參數傳遞給 BarcodeWriter.CreateBarcode(),輸出格式以傳回物件的方法名稱表示。 無需導入 System.Drawing:
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("output.png");
using IronBarCode;
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
.SaveAsPng("output.png");
Imports IronBarCode
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
.SaveAsPng("output.png")
對於二維條碼生成,專用的 QRCodeWriter 類別提供了特定於二維碼的其他選項:
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
.SaveAsPng("qrcode.png");
using IronBarCode;
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High)
.SaveAsPng("qrcode.png");
Imports IronBarCode
QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.High) _
.SaveAsPng("qrcode.png")
有關產生具有尺寸和註釋選項的一維條碼的指導,請參閱建立一維條碼指南。 有關二維條碼的建立(包括 DataMatrix 和 PDF417),請參閱二維條碼建立指南。
授權和產品結構
對於建構既需要產生又需要讀取的系統而言,授權模式是兩種選擇之間最實際的差異之一。
新動力學方法
Neodynamic 的條碼功能分為兩個獨立授權的產品。 條碼專業 SDK 涵蓋條碼生成,條碼讀取器 SDK 涵蓋條碼讀取。 每款產品都需要單獨購買,並配有單獨的許可證金鑰。 購買這兩款產品的團隊必須維護兩個 LicenseOwner / LicenseKey 配置區塊,追蹤兩個不同的續約日期,並在出現問題時處理兩個不同的支援管道。
條碼專業 SDK 的單開發者授權價格約為 245 美元。 條碼讀取器 SDK 需要單獨付費。因此,一個既需要產生條碼又需要讀取一維條碼的項目,對於單一開發人員來說,總支出可能接近或超過 500 美元。 需要 2D 讀取的項目,無論價格如何,Neodynamic 產品都無法滿足這一要求——必須添加第三個庫。 請參閱IronBarcode 支援的條碼格式頁面,以了解單一統一授權涵蓋的完整清單。
IronBarcode方法
IronBarcode 以單一產品出售,它涵蓋所有條碼操作——產生和讀取所有支援的條碼符號——只需一個許可證金鑰即可完成。 沒有單獨的閱讀器許可證,沒有單獨的生成器許可證,2D 格式支援也不收取額外費用。 許可證密鑰在應用程式啟動時設定一次,無需其他配置:
IronBarCode.License.LicenseKey = "YOUR-KEY";
IronBarCode.License.LicenseKey = "YOUR-KEY";
Imports IronBarCode
IronBarCode.License.LicenseKey = "YOUR-KEY"
IronBarcode Lite 單一開發者版本售價為 749 美元,涵蓋所有功能。 有關目前定價等級和批量選項,請參閱IronBarcode 許可頁面。
API 對應參考。
| 新動態 API | IronBarcode等效物 | 筆記 |
|---|---|---|
BarcodeInfo.LicenseOwner = "..." |
IronBarCode.License.LicenseKey = "key" |
單把鑰匙即可取代擁有者鑰匙對。 |
BarcodeInfo.LicenseKey = "..." |
(part of single key above) | 沒有單獨的所有者字段 |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseOwner |
(removed) | 不需要 |
Neodynamic.SDK.BarcodeReader.BarcodeReader.LicenseKey |
(removed) | 不需要 |
new BarcodeInfo() |
BarcodeWriter.CreateBarcode(data, encoding) |
靜態方法,無實例 |
barcode.Value = data |
CreateBarcode 的第一個參數 |
施工期間透過 |
barcode.Symbology = Symbology.Code128 |
BarcodeEncoding.Code128 |
第二個參數 |
barcode.Symbology = Symbology.QRCode |
BarcodeEncoding.QRCode |
全程支援往返行程 |
barcode.GetImage().Save(path, ImageFormat.Png) |
.SaveAsPng(path) |
Fluent,沒有 ImageFormat 枚舉 |
BarcodeReader.Read(bitmap) |
BarcodeReader.Read(imagePath) |
文件路徑替換點陣圖對象 |
result.Value |
result.Value |
相同的屬性名稱 |
throw new NotSupportedException(...) 用於二維碼 |
BarcodeReader.Read(imagePath) |
替換為標準讀取調用 |
當團隊考慮從 Neodynamic Barcode 遷移到IronBarcode時
二維碼讀取要求
導致 Neodynamic 團隊轉向IronBarcode的最常見情況是,他們發現 Barcode Professional SDK 產生的二維碼無法被 Barcode Reader SDK 讀取。 建立產品標籤系統、庫存管理工具或文件追蹤工作流程的團隊通常會將生成和讀取作為更大系統中的獨立階段來實現。 當首先使用 Barcode Professional 建立生成過程時,只有在嘗試讀取元件時,讀取器的限制才會顯現出來。 到那時,該專案已經承諾使用 Neodynamic 進行生成,而添加第三個庫來涵蓋 2D 閱讀會引入版本管理的複雜性,而統一的 SDK 則不會出現這種情況。
降低產品複雜性
有些團隊遷移並非因為存在特定的格式差異,而是因為維護兩個獨立產品來實現概念上單一的功能所帶來的開銷,成為了反覆出現的摩擦點。 .csproj 檔案中包含兩個軟體包,需要進行兩次許可證續訂,需要查閱兩套發行說明,並且在應用 .NET 或 Windows 更新時可能出現兩種不相容性——所有這些額外的開銷並沒有帶來單一統一軟體包無法提供的功能。在進行 .NET 升級依賴項審核的團隊通常會發現 Neodynamic 的雙軟體包架構有簡化的可能。
PDF條碼處理
處理包含條碼的 PDF 文件的應用程式代表了 Neodynamic SDK 同時無法滿足需求的場景。 產生 SDK 和讀取器 SDK 都無法開啟 PDF 檔案並從其頁面中提取條碼值。 處理貨運清單、發票文件、醫療記錄或任何在 PDF 中嵌入條碼的文件工作流程的團隊,必須在進行任何讀取之前實施中間影像擷取步驟。 此提取步驟需要額外的庫,這意味著該專案已經存在第三個依賴項,以解決單一IronBarcode安裝即可消除的限制。
讀寫格式的一致性
大規模運行條碼工作流程的團隊有時會發現,生成和讀取之間格式支援的不一致會造成測試和驗證問題。 當一個系統為一個目的產生二維碼,並為另一個目的讀取不同格式類型的二維碼時,生成器支援的內容與讀取器支援的內容之間的差異會在往返測試中造成差距。 生成和讀取共享同一個庫和同一個支援格式清單的系統更容易驗證。 驗證產生的條碼是否可以成功讀取,變成了單庫操作,而不是多庫整合測試。
常見的遷移考量
雙包裝移除
從 Neodynamic 遷移需要刪除以下兩個 NuGet 套件:Neodynamic.SDK.Barcode 和 Neodynamic.SDK.BarcodeReader。 必須從 .csproj 檔案中刪除這兩個指令,並且必須從來源檔案中刪除對應的 using 指令。 對每個運行 dotnet remove package 就足夠了; 兩者之間沒有需要額外清理的共享相依性。
雙許可證配置清理
兩個許可證配置區塊(一個用於 BarcodeInfo,一個用於 Neodynamic.SDK.BarcodeReader.BarcodeReader)都被一個 IronBarCode.License.LicenseKey 賦值所取代。 此分配在應用程式啟動時執行一次,通常在 Program.cs 或應用程式的依賴注入引導程式中執行。任何儲存 Neodynamic 許可證金鑰的設定檔或環境變數都可以在遷移驗證後停用。
NotSupportedException 移除
在開發過程中遇到 2D 讀取限制的程式碼庫通常包含佔位符方法,這些方法會拋出 NotSupportedException 錯誤,用於讀取 QR 碼或 DataMatrix 碼。 這些方法並非權宜之計,而是坦誠地承認該功能先前並不存在。遷移到IronBarcode後,每個此類方法體都替換為標準的 BarcodeReader.Read(imagePath) 呼叫。 無需特殊處理; 系統會自動偵測格式。
IronBarcode的其他功能
除了核心對比點之外,IronBarcode 還提供了一些 Neodynamic 產品所沒有的功能:
-原生 PDF 條碼讀取: BarcodeReader.Read("document.pdf") 直接從 PDF 文件讀取條碼,返回條碼值以及頁碼信息,無需中間圖像提取。
-非同步批次處理: BarcodeReader.ReadAsync() 支援非阻塞讀取,適用於伺服器端工作負載並發處理大量影像或文件。
-機器學習錯誤校正:IronBarcode應用以機器學習為基礎的錯誤校正技術,從損壞、部分遮蔽或低解析度的條碼影像中恢復值,這些影像的標準解碼器會傳回空結果。
-多條碼偵測:一次 BarcodeReader.Read() 呼叫即可傳回影像中存在的所有條碼,包括同時包含 1D 和 2D 條碼的混合格式影像。
-將條碼新增至 PDF :IronBarcode可直接將條碼影像寫入現有的 PDF 文檔,而無需單獨的 PDF 庫。
-影像預處理選項:可在閱讀器上配置亮度校正、旋轉處理和降噪功能,以提高在困難條件下拍攝的影像的辨識率。
.NET相容性與未來準備
IronBarcode 支援 .NET Standard 2.0、.NET Framework 4.6.2 及更高版本、.NET Core 3.1 以及所有目前的 .NET 版本,包括 .NET 8 和 .NET 9。該庫不依賴 System.Drawing,這意味著它無需修改即可在 Linux 和 Docker 容器中運行。 由於 Neodynamic 條碼閱讀器 SDK 對 .NET 8 和 .NET 9 的兼容性有限,因為它依賴 System.Drawing,並且在非 Windows 環境中,該依賴項需要額外的本機庫配置。IronBarcode會定期更新,與 .NET 的發布節奏保持一致,並且作為積極開發的一部分,它始終保持與 .NET 10(預計於 2026 年底發布)的兼容性。
結論
Neodynamic 條碼專業 SDK 和 Neodynamic 條碼讀取器 SDK 共同構成了一個分離式產品模型,其中條碼產生和讀取是兩個獨立的商業產品,具有各自獨立的功能邊界。 此生成器支援二維碼、DataMatrix、PDF417 和 Aztec 格式。 讀者並不知道。 這種不對稱性並非小問題——這意味著這兩款產品無法為任何需要讀取二維條碼的應用形成完整的條碼工作流程,也意味著行動支付、藥品追蹤、運輸物流和文件處理中最常用的格式不在讀取器的功能範圍內。
如果只需產生條碼,Neodynamic Barcode Professional 是合理的選擇。 此 SDK 可在各種符號系統中產生高品質輸出,支援 DPI 控制和特定於列印的自訂,並與更廣泛的 Neodynamic ThermalLabel 生態系統整合。 對於僅部署 Windows 系統且只需要一維條碼讀取的團隊,也可以使用條碼讀取器 SDK,而不會遇到其格式限制。 在如此狹窄的操作範圍內——僅生成圖像,或僅讀取 Windows 上的 1D 圖像——Neodynamic 的產品能夠實現其所描述的功能。
當專案需要產生和讀取條碼、工作流程的任何部分涉及 2D 格式、PDF 文件是條碼輸入的來源,或為了進行依賴關係管理而優先選擇單包架構時,IronBarcode 是合適的選擇。 統一的許可模式、對 System.Drawing 的依賴以及對所有受支援符號體系的自動格式檢測,使其適用於跨平台應用程式、雲端部署以及處理來自不同來源的混合條碼格式的系統。
兩者之間的選擇最終歸結為 Neodynamic 閱讀器中的格式邊界是否會影響相關項目的問題。 對於工作流程僅限於在 Windows 系統上產生和讀取一維條碼的團隊來說,可能永遠不會遇到這種限制。 對於需要在同一系統的生成端和讀取端都使用二維碼的團隊來說,Neodynamic 產品系列內部的界線是無法逾越的,無論選擇哪個產品,都需要不同的函式庫。
常見問題解答
什麼是Neodynamic Barcode Professional?
Neodynamic Barcode Professional 是一個 .NET 條碼庫,用於在 C# 應用程式中產生和讀取條碼。它是開發人員在為 .NET 專案選擇條碼解決方案時評估的幾個替代方案之一。
Neodynamic Barcode Professional 和 IronBarcode 的主要差異是什麼?
IronBarcode 使用靜態、無狀態的 API,無需實例管理,而 Neodynamic Barcode Professional 通常需要在使用前建立和設定實例。 IronBarcode 還提供原生 PDF 支援、自動格式偵測以及跨所有環境的單金鑰許可。
IronBarcode 的授權許可比 Neodynamic Barcode Professional 更容易取得嗎?
IronBarcode 使用單一授權金鑰,同時涵蓋開發和生產部署。與將 SDK 金鑰與執行時間金鑰分開的授權系統相比,這簡化了 CI/CD 管線和 Docker 配置。
IronBarcode 是否支援 Neodynamic Barcode Professional 支援的所有條碼格式?
IronBarcode 支援超過 30 種條碼符號體系,包括 QR 碼、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1 等等。格式自動偵測功能意味著無需明確枚舉格式。
IronBarcode是否支援原生PDF條碼讀取?
是的。 IronBarcode 可以直接從 PDF 檔案讀取條碼,使用 `BarcodeReader.Read("document.pdf")` 方法,無需單獨的 PDF 渲染庫。每頁的讀取結果包括頁碼、條碼格式、數值和置信度評分。
與 Neodynamic Barcode Professional 相比,IronBarcode 在批量處理方面有何不同?
IronBarcode 的靜態方法是無狀態的,且天然執行緒安全,因此可以直接使用 Parallel.ForEach,而無需進行執行緒層級實例管理。所有定價層級均無吞吐量上限。
IronBarcode支援哪些.NET版本?
IronBarcode 在單一 NuGet 套件中支援 .NET Framework 4.6.2+、.NET Core 3.1 以及 .NET 5、6、7、8 和 9。平台目標包括 Windows x64/x86、Linux x64 和 macOS x64/ARM。
如何在.NET專案中安裝IronBarcode?
透過 NuGet 安裝 IronBarcode:在程式包管理器控制台中執行“Install-Package IronBarCode”,或在命令列介面中執行“dotnet add package IronBarCode”。無需其他 SDK 安裝程式或運行時檔案。
與 Neodynamic 不同,我可以在購買前評估 IronBarcode 嗎?
是的。 IronBarcode 的試用模式會傳回完整的解碼條碼值-只有產生的輸出影像才會有浮水印。您可以在購買前,用自己的文件測試讀取準確率。
Neodynamic Barcode Professional 和 IronBarcode 的價格有什麼不同?
IronBarcode 的永久單開發者許可證起價為 749 美元,涵蓋開發和生產環境。定價詳情和大量許可選項請造訪 IronBarcode 授權頁面。無需單獨的運行時許可證。
從 Neodynamic Barcode Professional 遷移到 IronBarcode 是否簡單?
從 Neodynamic Barcode Professional 遷移到 IronBarcode 主要涉及將基於實例的 API 呼叫替換為 IronBarcode 的靜態方法、移除許可相關的樣板代碼以及更新結果屬性名稱。大多數遷移工作都是減少程式碼,而不是增加程式碼。
IronBarcode 能產生帶有 logo 的二維碼嗎?
是的。 `QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png")` 可以將品牌圖片原生嵌入二維碼中,並支援設定糾錯功能。此外,它還支援透過 `ChangeBarCodeColor()` 函數建立彩色二維碼。

