跳至頁尾內容
與其他組件的比較

QRCoder.NET 與 IronBarcode:C# 條碼庫對比

Spire.Barcode 與 IronBarcode:型別規範、PDF 支援和定價比較

Spire.Barcode 在讀取時需指定條碼型別:scanner.Scan(path, BarCodeType.Code128)。 如果您處理的文件中可能包含任何格式的條碼,您必須先撰寫格式檢測迴圈才能提取值。 這個單一的 API 決策會影響您如何使用 Spire.Barcode 建立條碼掃描工作流程,值得在您承諾之前充分理解。

了解 Spire.Barcode

Spire.Barcode 是由 E-iceblue 開發的商業 .NET 條碼程式庫,E-iceblue 是一家中國軟體公司,也生產 Spire.Doc、Spire.XLS 和 Spire.PDF 產品線。 該程式庫支援跨多種 1D 和 2D 符號體系的條碼生成和讀取,旨在與更廣泛的 E-iceblue 文件處理生態系統整合。

E-iceblue 發布了兩個套件:FreeSpire.Barcode 免費提供和 Spire.Barcode 作為商業產品。 免費套件是一個永久限制的產品,具有有意的限制而不是限時試用。 商業套件解鎖完整的符號體系集並移除免費層中存在的限制,但需要從任何正在使用的其他 Spire 產品中單獨購買授權。

Spire.Barcode 的關鍵建築特徵包括:

  • 強制性 BarCodeType 參數:每次呼叫 BarcodeScanner.Scan() 都需要 BarCodeType 列舉值。 沒有只接受檔案路徑並自動執行格式檢測的重載。
  • 設定物件生成模型:條碼生成集中在一個可變的 BarcodeSettings 物件上,該物件傳遞給 BarCodeGenerator 實例,需要多次屬性指定才能產生任何輸出。
  • 無原生 PDF 支援:Spire.Barcode 無法直接從 PDF 檔案中讀取條碼。 基於 PDF 的工作流程需要一個單獨的 Spire.PDF 套件、一個單獨的授權,並由開發者撰寫的手動頁面和影像提取程式碼。
  • FreeSpire.Barcode 免費層限制:免費版應用大型評估水印於生成的條碼上,有意降低掃描性能,限制可用的符號體系集,並需要從 E-iceblue 獲取的註冊金鑰以壓制警告對話方框。
  • E-iceblue 生態系統整合:已經使用 Spire.Doc 或 Spire.XLS 的團隊可能會發現 API 熟悉和潛在的拼包定價有益。 使用 Spire.Barcode 的團隊未受生態系統受益,需承擔完整的單產品授權成本。
  • 返回型別:BarcodeScanner.Scan() 返回 string[],不攜帶格式元資料。 檢測到的型別不包含在結果中。

型別規範要求

Spire.Barcode 的 BarcodeScanner.Scan() 沒有只接受檔案路徑的重載。 每次讀取操作都要求呼叫程式碼提前宣告條碼格式。 對於單格式工作流程,這是可行的,但對於混合格式文件處理,它會產生候選迴圈:

// Spire.Barcode: multi-format detection iterates through candidate types
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;
    }
}
// Spire.Barcode: multi-format detection iterates through candidate types
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;
    }
}
Imports Spire.Barcode

Dim scanner As New BarcodeScanner()
Dim candidates = {BarCodeType.Code128, BarCodeType.QRCode, BarCodeType.DataMatrix, BarCodeType.EAN13, BarCodeType.PDF417}

Dim foundValue As String = Nothing
For Each type In candidates
    Dim found As String() = scanner.Scan("barcode.png", type)
    If found.Length > 0 Then
        foundValue = found(0)
        Exit For
    End If
Next
$vbLabelText   $csharpLabel

新增到候選陣列中的每個型別都是一次額外的掃描通過。 列表中缺失的任何格式都會被靜默丟失。 開發者有責任維護完整的型別清單,並在新格式進入工作流程時重新測試。

理解IronBarcode

IronBarcode 是由 Iron Software 開發的商業 .NET 條碼程式庫。 它通過靜態 API 模型提供條碼讀取和生成,無需實例管理。 該程式庫作為單個 NuGet 套件提供,包括原生 PDF 和影像處理支援,無需額外依賴。

IronBarcode 的讀取引擎在單次掃描中執行跨 50 多個符號的自動格式檢測。 由 BarcodeReader.Read() 返回的結果物件包括檢測到的格式、解碼值以及上下文元資料,例如對於 PDF 資源的頁碼和影像資源內的邊界座標。

IronBarcode的關鍵特性包括:

  • 自動格式檢測:BarcodeReader.Read() 無需型別參數。 程式庫在掃描過程中識別符號,並將其包括在結果物件中。
  • 單套件 PDF 支援:PDF 檔案被 BarcodeReader.Read() 直接接受,不需要任何其他 NuGet 套件、授權或手動頁面提取程式碼。
  • 流暢生成 API:BarcodeWriter.CreateBarcode() 是一個靜態工廠方法,返回一個可連結的物件,允許在單個表達式中進行尺寸調整、樣式設置及儲存。
  • 以完整功能運行的試用模式:IronBarcode 的試用來自與已授權產品相同的套件,提供完整的閱讀速度、完整的符號支援和完整的功能集。 試用模式下生成的輸出帶有小型邊緣水印; 讀取行為不受影響。
  • Tuning 使用的 BarcodeReaderOptions讀取速度、多條碼檢測、影像預處理和預期符號過濾器可以配置,無需切換程式庫產品。
  • 包含元資料的結果物件:BarcodeResults 集合中的每個結果公開 PageNumber 和影像區域資料。

特性比較

下表總結了 Spire.Barcode 和IronBarcode的高階差異:

特性 Spire.Barcode IronBarcode
條碼讀取 是(需要 BarCodeType) 是(自動檢測)
條碼生成
自動格式檢測
原生 PDF 支援 否(需要 Spire.PDF)
免費層 FreeSpire.Barcode(受限) 試用模式(全功能)
符號計數 約 38(商業) 50+
授權模型 按席次分層和訂閱 永久性,附加支援為選項

詳細特性比較

特性 Spire.Barcode IronBarcode
讀取
自動格式檢測
需要 BarCodeType
返回格式元資料
每個圖像多條碼
讀取速度控制 是(BarcodeReaderOptions)
ML 協助錯誤更正
生成
API 模型 設定物件 + 生成器 靜態工廠與流暢連結
自訂徽標的 QR 碼 僅商業層 所有層
輸出格式 影像(PNG、JPEG、BMP) PNG、JPEG、BMP、SVG、HTML、資料流
流暢連結
PDF支持
從 PDF 讀取條碼 需要 Spire.PDF 原生,無需額外套件
結果中的頁碼 手動跟蹤
需要額外授權 是(Spire.PDF)
平台
.NET Framework
.NET Core / .NET 5+
Docker/Linux
符號體系
1D (Code128, Code39, EAN, UPC)
2D (QR, DataMatrix, PDF417)
總符號計數 約 38(商業) 50+
授權
免費層 FreeSpire.Barcode(有水印,性能降低) 試用模式(全速,小水印)
免費層需註冊
授權模型 按席次永久 + 訂閱 永久性,附加續期為選項
定價起點 $999/年(站點訂閱) $749(Lite,永久)

條碼讀取

Spire.Barcode 方法

Spire.Barcode 的 BarcodeScanner.Scan() 在每次呼叫時需要 BarCodeType 參數。 當格式已知並有保證時,單一型別呼叫是適當的:

// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);

foreach (string value in results)
{
    Console.WriteLine(value);
}
// Spire.Barcode — type is mandatory
BarcodeScanner scanner = new BarcodeScanner();
string[] results = scanner.Scan("barcode.png", BarCodeType.Code128);

foreach (string value in results)
{
    Console.WriteLine(value);
}
Imports Spire.Barcode

Dim scanner As New BarcodeScanner()
Dim results As String() = scanner.Scan("barcode.png", BarCodeType.Code128)

For Each value As String In results
    Console.WriteLine(value)
Next
$vbLabelText   $csharpLabel

當格式未知時,唯一可用的方法是迭代體系候選型別。每次迭代都是一次完整的掃描,每個缺失於列表中的格式會被靜默忽略。 結果是 string[],其不含型別資訊,所以基於格式的下游路由需要呼叫者進行附加的狀態管理。

IronBarcode方法

IronBarcode 的 BarcodeReader.Read() 不需要型別參數。 程式庫在單次通過中自動檢測所有支援符號體系的格式。 從影像中讀取條碼 是單次方法呼叫,無論源中包含多少種不同的格式:

// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");

foreach (var result in results)
{
    Console.WriteLine($"{result.Format}: {result.Value}");
}
// IronBarcode: automatic format detection
var results = BarcodeReader.Read("barcode.png");

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

' IronBarcode: automatic format detection
Dim results = BarcodeReader.Read("barcode.png")

For Each result In results
    Console.WriteLine($"{result.Format}: {result.Value}")
Next
$vbLabelText   $csharpLabel

每個結果物件都包括 Value 和位置元資料。 基於格式的下游路由不需要額外狀態 - 型別已存在於結果中。

免費層限制

Spire.Barcode 免費層

FreeSpire.Barcode 在生成的條碼影像中應用大水印。 水印覆蓋條碼,使其不適合生產使用,並隱藏生成質量的有效評估。 在免費版本中,有意降低掃描性能,這意味著在評估期間進行的傳輸量測量不代表商業 Spire.Barcode 性能。 免費套件還需要從 E-iceblue 獲取的註冊金鑰,在執行期間壓制警告對話框。 免費層中的可用符號集是商業提供中的一個子集。 這些限制共同意味著基於 FreeSpire.Barcode 的評估不準確代表商業產品的交付。

IronBarcode試用模式

IronBarcode 的試用是使用無授權金鑰的已授權套件。 讀取以全速運行,具備完整的符號支援,無行為限制。 讀取速度和準確性選項 在試用和許可模式下表現完全相同。 試用模式下生成的條碼輸出在影像邊緣攜帶小水印; 不會遮蔽條碼本身。 在評估IronBarcode期間測量的行為即出貨到生產環境的行為。

方面 FreeSpire.Barcode IronBarcode 試用
生成輸出上的水印 大水印,覆蓋條碼 小水印,僅影像邊緣
讀取性能 有意降低 全速
符號支援 付費版本的有限子集 全套(50+ 種類)
需要註冊 是(免費金鑰來自 E-iceblue)
功能可用 有限子集 完整功能集
時間限制 None 30 天

PDF 條碼支援

Spire.Barcode 方法

Spire.Barcode 沒有原生的 PDF 讀取能力。 要從 PDF 文件中提取條碼,開發者必須安裝單獨的 Spire.PDF 套件,購買單獨的 Spire.PDF 授權,並寫手動頁面迭代和影像提取程式碼,才能開始條碼掃描:

// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;

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

var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
    var images = page.ExtractImages();
    foreach (var image in images)
    {
        // BarCodeType is still required for each scan call
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}
// Spire.Barcode + Spire.PDF: separate package and license required
using Spire.Pdf;

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

var scanner = new BarcodeScanner();
foreach (PdfPageBase page in pdf.Pages)
{
    var images = page.ExtractImages();
    foreach (var image in images)
    {
        // BarCodeType is still required for each scan call
        string[] results = scanner.Scan(image, BarCodeType.QRCode);
    }
}
Imports Spire.Pdf

Dim pdf As New PdfDocument()
pdf.LoadFromFile("document.pdf")

Dim scanner As New BarcodeScanner()
For Each page As PdfPageBase In pdf.Pages
    Dim images = page.ExtractImages()
    For Each image In images
        ' BarCodeType is still required for each scan call
        Dim results As String() = scanner.Scan(image, BarCodeType.QRCode)
    Next
Next
$vbLabelText   $csharpLabel

此模式需要兩個 NuGet 套件、兩份授權協議和開發者編寫的頁面管理程式碼。 如果條碼嵌入在 PDF 中的向量內容而不是光柵影像中,那麼影像提取方法可能會完全錯過它們。

IronBarcode方法

IronBarcode 原生處理 PDF 檔案,無需任何額外依賴。 從 PDF 文件中讀取條碼,使用與影像檔案相同的 BarcodeReader.Read() API,僅需一次方法呼叫。 頁碼包含在每個結果物件中:

// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");

foreach (var barcode in results)
{
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}");
}
// IronBarcode: native PDF reading from the same Read() method
var results = BarcodeReader.Read("document.pdf");

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

' IronBarcode: native PDF reading from the same Read() method
Dim results = BarcodeReader.Read("document.pdf")

For Each barcode In results
    Console.WriteLine($"Page {barcode.PageNumber}: {barcode.Format} = {barcode.Value}")
Next
$vbLabelText   $csharpLabel

無需手動頁面提取、無需第二個套件、無需額外購買授權。

生成API

Spire.Barcode 方法

Spire.Barcode 的生成模型集中在可變的 BarcodeSettings 配置物件上。 開發者初始化設定,單獨設置屬性,將設定物件傳遞給 BarCodeGenerator,然後呼叫 GenerateImage()

// Spire.Barcode generation
using Spire.Barcode;

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

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
// Spire.Barcode generation
using Spire.Barcode;

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

BarCodeGenerator generator = new BarCodeGenerator(settings);
Image barcodeImage = generator.GenerateImage();
barcodeImage.Save("barcode.png", ImageFormat.Png);
Imports Spire.Barcode
Imports System.Drawing
Imports System.Drawing.Imaging

Dim settings As New BarcodeSettings()
settings.Type = BarCodeType.Code128
settings.Data = "12345678"
settings.ShowText = True
settings.TextMargin = 5
settings.BarHeight = 60
settings.Unit = GraphicsUnit.Pixel

Dim generator As New BarCodeGenerator(settings)
Dim barcodeImage As Image = generator.GenerateImage()
barcodeImage.Save("barcode.png", ImageFormat.Png)
$vbLabelText   $csharpLabel

可變設置物件意味著配置可以在多次生成操作中共用實例時意外共享。 生成器類新增了一個實例化步驟,但不帶自己的配置邏輯。

IronBarcode方法

IronBarcode 使用靜態工廠方法,允許選擇性的流暢連結。 無需管理設置物件和生成器實例:

//IronBarcodegeneration
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
//IronBarcodegeneration
using IronBarCode;

BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .SaveAsPng("barcode.png");

// With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128)
    .ResizeTo(400, 100)
    .SaveAsPng("barcode.png");
Imports IronBarCode

' IronBarcode generation
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .SaveAsPng("barcode.png")

' With sizing:
BarcodeWriter.CreateBarcode("12345678", BarcodeEncoding.Code128) _
    .ResizeTo(400, 100) _
    .SaveAsPng("barcode.png")
$vbLabelText   $csharpLabel

帶自訂徽標的 QR 碼在所有IronBarcode授權層中可用:

var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
var qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest);
qr.AddBrandLogo("logo.png");
qr.SaveAsPng("qr-with-logo.png");
Dim qr = QRCodeWriter.CreateQrCode("https://example.com", 500, QRCodeWriter.QrErrorCorrectionLevel.Highest)
qr.AddBrandLogo("logo.png")
qr.SaveAsPng("qr-with-logo.png")
$vbLabelText   $csharpLabel

定價

Spire.Barcode 已發布的定價涵蓋內部使用的站點授權和 OEM 部署層:

許可 價格 部署
站點授權(僅限內部使用) $1,398 單一地點
站點訂閱(1 年更新/支援) $999/年 單一地點
開發者 OEM 訂閱 $3,395/年 面向公眾的 / 雲端 / Docker
站點 OEM 訂閱 $10,187/年 面向公眾的 / 雲端 / Docker(最多 10 位開發者)

只有 OEM 層允許部署到面向公眾的網站、Docker 或雲端應用。 站點(非 OEM)層限於單一地點的內部使用。 如果還需要 Spire.PDF 來提取 PDF 條碼,那麼該授權是額外的成本。

IronBarcode 授權 以四種永久層級使用:

許可 價格 開發者
Lite $749 1
Plus $1,499 3
專屬 $2,999 10
無限制 $5,999 無限制

所有層級都是永久的,可以選擇新增年度支援和更新訂閱。 Spire.Barcode 的站點訂閱對於一個五位開發者的團隊每年支付 $999 以獲得更新和支援; 相當於IronBarcode的專屬層可覆蓋最多十位開發者,一次性支付 $2,999,無需更新。

API對映參考

Spire.Barcode IronBarcode
new BarcodeScanner() 靜態 BarcodeReader.Read()
scanner.Scan(path, BarCodeType.X) BarcodeReader.Read(path)
BarCodeType.Code128(必需參數) 自動檢測; 不需要對應
string[] results BarcodeResults 集合
results[0](字串) results[0].Value(字串)
new BarcodeSettings() 參數至 BarcodeWriter.CreateBarcode()
settings.Type = BarCodeType.Code128 BarcodeEncoding.Code128 作為第二個參數
settings.Data = "value" CreateBarcode() 的第一個參數
new BarCodeGenerator(settings) 不需要; 靜態工廠取代這一部分
generator.GenerateImage() + image.Save() .SaveAsPng(path).SaveAsJpeg(path)
Spire.PDF(用於 PDF 讀取) 不需要; 內建原生 PDF 支援
Spire.License.LicenseProvider.SetLicenseKey("key") IronBarCode.License.LicenseKey = "key"

當團隊考慮從 Spire.Barcode 遷移到IronBarcode時

混合格式文件處理

經常從單一已知條碼格式開始的團隊會發現隨著時間的推移格式多樣性增長。一個最初以 Code128 標籤開始的倉儲應用可能會收到使用 DataMatrix、GS1-128 或 QR 碼的供應商的出貨。 每一個進入工作流程的新格式都需要更新型別猜測迴圈中候選陣列,重新測試檢測邏輯,並確認現有格式未被迭代順序取代。 當格式多樣性達到造成該迴圈維護開銷成為重複開發成本的地步時,團隊會評估自動檢測是否完全消除這一負擔。

PDF 整合

大量文件應用經常會遇到必須從 PDF 檔案而不是獨立影像中提取條碼的時刻。 在 Spire.Barcode 的工作流程中,此過渡需要購買 Spire.PDF 授權,整合第二個套件,以及在開始條碼讀取之前編寫頁面迭代和圖像提取基礎設施。 那些在最初購買時未預見此需求的團隊發現自己在管理兩項產品許可和兩個 API 表面,對於概念上屬於條碼讀取的任務。 發現 PDF 支援要求單獨購買是一個常見的重新評估產品選擇的觸發器。

免費度評估限制

評估過 FreeSpire.Barcode 並隨後購買商業授權的團隊有時會發現商業產品的行為與其評估所建議的不同。 這是有意為之:免費層會有意降低讀取性能並限制符號集,這意味著在評估期間進行的性能基準測試和格式覆蓋測試不會轉移到商業部署。 當一個團隊在購買後發現這一不一致時,他們經常尋找其試用行為能代表生產行為的替代品。

減少產品數量

標準化其技術堆疊的組織有時會發現 Spire.Barcode 是 E-iceblue 產品中日益增長的庫存的一部分,每一個都帶有自己的授權成本和續約周期。 如果對 Spire.Barcode 的主要需求是在文件處理流水線中進行條碼讀取 - 而不是與 Spire.Doc 或 Spire.XLS 的深入整合 - 團隊會評估一個單獨的條碼程式庫是否會減少授權複雜性和支援表面積。

常見的遷移考慮因素

移除 BarCodeType 參數

Spire.Barcode 程式碼庫中的每個 scanner.Scan() 呼叫都帶有 BarCodeType 參數。 用 BarcodeReader.Read() 替換這些呼叫會完全移除型別參數。 型別猜測迴圈 - 迭代候選 BarCodeType 值的 foreach 塊 - 可以完全刪除; 單一的 BarcodeReader.Read() 呼叫取代了整個迴圈。

更新返回型別

Spire.Barcode 的 Scan() 返回 string[]。IronBarcode返回一個 BarcodeResults 集合。 分配給 string[] 或將結果傳遞給預期該型別的方法的調用點需要更新。 作為數字陣列提取值使用 .Select(r => r.Value).ToArray(); 存取第一個結果使用 .First()?.Value

移除 Spire.PDF 套件

如果安裝 Spire.PDF 僅為了支持從 PDF 檔案提取條碼,它可以在遷移到IronBarcode後移除。 所有 using Spire.Pdf; 導入和手動頁面迭代塊均被單一的 BarcodeReader.Read("file.pdf") 呼叫取代。 如果 Spire.PDF 用於條碼提取以外的其他文件操作,它應被保留,只替換與條碼相關的程式碼路徑。

命名空間變更

using Spire.Barcode; 替換為 using IronBarCode;BarCodeType 列舉被 BarcodeEncoding 用於生成時替換,讀取時不需要對應。 授權初始化從 Spire.License.LicenseProvider.SetLicenseKey() 變更為在應用啟動時進行單個 IronBarCode.License.LicenseKey 屬性指定。

額外的IronBarcode能力

下面的IronBarcode特性未在以上比較中涵蓋:

  • 批次影像讀取BarcodeReader.Read() 接受文件路徑的陣列、Stream 物件和 Bitmap 實例,不需手動在輸入集合上迴圈即可實現批次處理。
  • BarcodeReaderOptions讀取速度、多條碼檢測、最大候選數量和影像增強預處理可通過傳遞的單一選項物件配置到 Read()
  • SVG 和 HTML 輸出:BarcodeWriter.CreateBarcode() 支援 .SaveAsSvg().SaveAsHtmlFile() 除了光柵影像格式之外,允許網頁可嵌入條碼輸出。
  • 帶徽標的 QR 碼:QRCodeWriter.CreateQrCode() 支援 AddBrandLogo() 在所有授權層中允許在 QR 碼中心合成自訂影像而不影響在適當錯誤更正級別的掃描可靠性。
  • 流和字節陣列輸出:生成的條碼可以導出為 Streambyte[] 以供直接儲存或 HTTP 响應寫入,無需中間檔案。
  • GS1-128 和結構化符號體系:IronBarcode 包括對於 Spire.Barcode 商業層中不可用的結構化 GS1 符號體系的支援。

.NET相容性和未來準備

IronBarcode 支持.NET Framework4.6.2 及更高版本, .NET Core 3.1, 及目前的 .NET 發行。 該程式庫在 Windows、Linux 和 macOS 上進行測試,並在 Docker 容器中運行,不需額外的本地依賴配置。 Spire.Barcode 也支援跨平台 .NET 部署,但其 Linux 和 Docker 配置可能會根據所用版本需要額外的原生程式庫設置。IronBarcode的定期發行節奏確保 C# 語言新功能和 .NET 運行改善與平台相容性更新一同整合。

結論

Spire.Barcode 和IronBarcode在條碼讀取問題上採取根本不同的立場。 Spire.Barcode 將格式知識置於呼叫者之上 - 每個掃描操作要求開發者提前聲明符號體系,這在閉合格式工作流中可行,但在開放格式工作流中是一個維護負擔。IronBarcode將格式檢測放在程式庫內,無需型別參數,並作為結果的一部分返回檢測到的格式。

Spire.Barcode 是處理單一保證條碼格式應用的合理選擇,尤其是在團隊已經投資於 E-iceblue 產品生態中。 設定物件生成模型對於偏好顯式配置的開發者來說是熟悉的,且對於單一開發者項目商業授權具競爭力。 團隊可以在每次呼叫中保證 BarCodeType.Code128 不需為必需型別參數支付任何實際代價。

IronBarcode 更適用於格式多樣性不可預測或增長、PDF 條碼提取是主要需求且評估準確性重要的應用。 試用以全生產速度運行,帶全符號集,使在評估期間進行的性能基準和格式覆蓋測試直接適用於生產部署。 原生 PDF 支援消除需要二次程式庫及相關授權負擔。 對於考慮將IronBarcode作為 Spire.Barcode 替代方案的團隊,Spire.Barcode 替代概覽 提供了比較的額外背景。

最終決定取決於格式可預測性和工作流程範圍。 一個標準化 Code128 標籤且無 PDF 資源文件的倉儲系統沒有實用原因偏好IronBarcode的自動檢測。 一個處理外部供應商條碼的文件處理流水線,處理混合符號體系,並從 PDF 附件讀取,會發現必需的型別參數和兩個程式庫的 PDF 要求是IronBarcode消除的持續維護成本。

常見問題

什麼是 Spire.Barcode?

Spire.Barcode 是一個 .NET 條碼程式庫,用於在 C# 應用程式中生成和讀取條碼。它是開發者在選擇 .NET 項目條碼方案時考慮的幾個替代方案之一。

Spire.Barcode 和 IronBarcode 之間的主要區別是什麼?

IronBarcode 使用靜態、無狀態的 API,無需實例管理,而 Spire.Barcode 通常需要在使用前建立和配置實例。IronBarcode 還提供原生 PDF 支援、自動格式檢測及在所有環境中的單鍵授權。

IronBarcode 是否比 Spire.Barcode 更容易取得授權?

IronBarcode使用一個覆蓋開發和生產部署的單一授權金鑰。相比於將SDK金鑰與運行時金鑰分開的授權系統,這簡化了CI/CD管道和Docker配置。

IronBarcode 是否支持 Spire.Barcode 所支持的所有條碼格式?

IronBarcode支持超過30種條碼符號,包括QR Code、Code 128、Code 39、DataMatrix、PDF417、Aztec、EAN-13、UPC-A、GS1等。格式自動檢測意味著不需要顯式的格式枚舉。

IronBarcode支持原生PDF條碼讀取嗎?

是的。IronBarcode可以直接從PDF文件中讀取條碼,使用BarcodeReader.Read("document.pdf"),無需單獨的PDF渲染程式庫。每頁結果包括頁碼、條碼格式、值和置信分數。

IronBarcode 如何與 Spire.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:在Package Manager Console中運行 'Install-Package IronBarCode',或在CLI中運行 'dotnet add package IronBarCode'。不需要額外的SDK安裝程式或運行時文件。

我能否在購買前評估 IronBarcode,與 Spire.Barcode 不同?

可以。IronBarcode的試用模式返回完整解碼的條碼值——只有生成的輸出圖像上有水印。您可以在自己的文件上評估讀取準確性,然後再決定購買。

Spire.Barcode 與 IronBarcode 的定價差異是什麼?

IronBarcode起價為$749,為單開發者所適用的永久授權,覆蓋開發和生產。價格詳情和批量選項可在IronBarcode授權頁面獲得。無需單獨的運行時授權。

從 Spire.Barcode 遷移到 IronBarcode 是否簡單直接?

從 Spire.Barcode 遷移到 IronBarcode 主要涉及將基於實例的 API 調用替換為 IronBarcode 的靜態方法、移除授權樣板及更新結果屬性名稱。大多數遷移涉及減少程式碼而不是增加程式碼。

IronBarcode可以生成帶有Logo的QR碼嗎?

可以。QRCodeWriter.CreateQrCode().AddBrandLogo("logo.png") 可以原生嵌入品牌圖像進QR碼,並可配置錯誤更正。也支持通過ChangeBarCodeColor() 生成彩色QR碼。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

Iron 支援團隊

我們線上24小時,每週5天。
聊天
電子郵件
給我打電話