
C# 從字串產生 BarCode:使用 IronBarcode 的完整教學
將字串資料編碼成條碼影像是庫存系統、零售應用程式和文件管理的基本需求。 本教程展示如何使用IronBarcode從字串值生成條碼,包括從安裝到以多種格式儲存條碼影像、為生產使用進行樣式設定,以及處理來自資料庫資料的大批量生產。
IronBarcode是由Iron Software開發的.NET程式庫,簡化了為建立Windows應用程式、Web服務和雲端托管API的.NET開發人員進行條碼生成和讀取的工作。開始您的免費試用以便跟隨以下的程式碼範例操作。
如何在.NET專案中安裝IronBarcode?
使用.NET CLI或Visual Studio中的NuGet Package Manager安裝IronBarcode只需幾秒鐘。
選項1 -- .NET CLI (建議用於.NET 10):
dotnet add package Barcode
選項2 -- Visual Studio中的NuGet Package Manager Console:
或者,在NuGet Package Manager GUI中搜尋"IronBarcode"並安裝官方套件。 該程式庫針對.NET Framework 4.6.2+以及.NET 5到.NET 10,確保與現代.NET工作負載的相容性。
安裝後,在每個生成或讀取條碼的檔案頂部新增一個using指令:
using IronBarCode;Imports IronBarCode該指令曝光BarcodeEncoding及本指南中涵蓋的其他公共型別。
如何在C#中從字串生成簡單的條碼?
BarcodeWriter.CreateBarcode方法是條碼生成的入口點。 傳入您想要編碼的字串及GeneratedBarcode物件,準備進行儲存或進一步操作。
using IronBarCode;
// Generate a Code 128 barcode from a product SKU string
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
barcode.SaveAsPng("product_barcode.png");Imports IronBarCode
' Generate a Code 128 barcode from a product SKU string
Dim productCode As String = "SKU-78432-A"
Dim barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128)
barcode.SaveAsPng("product_barcode.png")條碼生成輸出

這會從產品字串中建立Code128條碼影像並將其儲存為PNG文件。CreateBarcode方法處理所有編碼的複雜性,因此可以使用最少的程式碼生成條碼影像。 IronBarcode支持儲存到PNG、JPEG、GIF、TIFF、BMP和SVG格式。
該方法還接受可選的寬度和高度參數以控制輸出尺寸,幫助確保在目標環境中的正確掃描質量:
using IronBarCode;
// Specify width and height in pixels for the barcode image
string productCode = "SKU-78432-A";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120);
barcode.SaveAsPng("product_barcode_sized.png");Imports IronBarCode
' Specify width and height in pixels for the barcode image
Dim productCode As String = "SKU-78432-A"
Dim barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128, 400, 120)
barcode.SaveAsPng("product_barcode_sized.png")設置明確的尺寸可在生成熱感標籤印表機標籤時特別有用,因為輸出尺寸必須與標籤紙完全匹配。
IronBarcode支持哪些條碼格式?
IronBarcode支持超過20種不同用途的條碼型別。 選擇正確的格式可確保適當的掃描和應用的資料容量足夠。
using IronBarCode;
string url = "https://ironsoftware.com/csharp/barcode/";
string numericId = "0123456789012";
// QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode)
.SaveAsPng("qrcode.png");
// UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA)
.SaveAsPng("upc_barcode.png");
// PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417)
.SaveAsJpeg("pdf417_barcode.jpeg");Imports IronBarCode
Dim url As String = "https://ironsoftware.com/csharp/barcode/"
Dim numericId As String = "0123456789012"
' QR Code -- best for URLs, text data, and mobile scanning
BarcodeWriter.CreateBarcode(url, BarcodeEncoding.QRCode) _
.SaveAsPng("qrcode.png")
' UPC-A -- required for retail point-of-sale systems (12 digits)
BarcodeWriter.CreateBarcode(numericId, BarcodeEncoding.UPCA) _
.SaveAsPng("upc_barcode.png")
' PDF417 -- suited for documents that need higher data capacity
BarcodeWriter.CreateBarcode("Extended product details here", BarcodeEncoding.PDF417) _
.SaveAsJpeg("pdf417_barcode.jpeg")條碼影像輸出

下表總結了何時使用每種主要格式:
| 格式 | 最佳適用於 | 字元集 |
|---|---|---|
QRCode | 網址、文字、移動掃描 | ASCII + Unicode |
Code128 | 字母數字產品程式碼、運輸標籤 | 完整的ASCII |
UPCA / EAN13 | 零售銷售點系統 | 僅數字 |
PDF417 | 身份證、登機牌、文件 | 二進制資料 |
DataMatrix | 小型標籤、電子產品 | ASCII + Binary |
Aztec | 交通票證、移動登機 | ASCII + Unicode |
完整支持的編碼列表,請參閱IronBarcode條碼型別參考。
如何在C#中自訂和設計條碼影像?
除了基本的條碼生成外,IronBarcode還提供了一個流暢的樣式API,用於調整顏色、新增註釋和調整條碼影像大小,而不需要任何外部影像處理程式庫。
using IronBarCode;
using IronSoftware.Drawing;
string orderNumber = "ORD-2024-00542";
var styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128);
// Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue);
styledBarcode.ChangeBackgroundColor(Color.White);
// Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", new Font("Arial", 12), Color.Black, 5);
styledBarcode.AddBarcodeValueTextBelowBarcode(new Font("Arial", 10), Color.Gray, 5);
// Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150);
styledBarcode.SaveAsPng("styled_order_barcode.png");Imports IronBarCode
Imports IronSoftware.Drawing
Dim orderNumber As String = "ORD-2024-00542"
Dim styledBarcode = BarcodeWriter.CreateBarcode(orderNumber, BarcodeEncoding.Code128)
' Adjust colors to match brand identity
styledBarcode.ChangeBarCodeColor(Color.DarkBlue)
styledBarcode.ChangeBackgroundColor(Color.White)
' Add readable text annotations above and below the bars
styledBarcode.AddAnnotationTextAboveBarcode("Order Number", New Font("Arial", 12), Color.Black, 5)
styledBarcode.AddBarcodeValueTextBelowBarcode(New Font("Arial", 10), Color.Gray, 5)
' Resize to fit a thermal label at 400 x 150 pixels
styledBarcode.ResizeTo(400, 150)
styledBarcode.SaveAsPng("styled_order_barcode.png")樣式化條碼輸出

有哪些樣式屬性可用?
GeneratedBarcode類別提供多個樣式方法:
- 顏色控制 --
ChangeBarCodeColor,IronSoftware.Drawing - 文字註釋 -- 可以用自訂字體、大小和顏色在條碼上方或下方新增文字
- 邊距控制 -- 設置條碼周圍的填充以改善在繁忙標籤上的掃描性能
- 旋轉 -- 將條碼影像旋轉側邊或對角,用於需要縱向佈局的標籤
- 調整大小 -- 在像素中固定寬度和高度,而不扭曲編碼的資料
樣式方法自然地連結在一起,使程式碼保持可讀性,同時生成匹配應用程式視覺設計的條碼影像。 如需更詳細的介紹,請參閱條碼樣式指南。
如何從資料庫資料生成多個條碼?
實際應用程式經常需要為物品集合生成條碼,例如產品目錄、庫存補貨或訂單派送工作流程。 IronBarcode處理批量處理,無需額外配置。
using IronBarCode;
// Data sourced from a database query result
List<string> productIds =
[
"PROD-001-X",
"PROD-002-Y",
"PROD-003-Z",
"PROD-004-W"
];
// Generate one barcode image per product ID
foreach (string productId in productIds)
{
var barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100);
barcode.SaveAsPng($"barcodes/{productId}.png");
}Imports IronBarCode
' Data sourced from a database query result
Dim productIds As New List(Of String) From {
"PROD-001-X",
"PROD-002-Y",
"PROD-003-Z",
"PROD-004-W"
}
' Generate one barcode image per product ID
For Each productId As String In productIds
Dim barcode = BarcodeWriter.CreateBarcode(productId, BarcodeEncoding.Code128, 300, 100)
barcode.SaveAsPng($"barcodes/{productId}.png")
Next輸出條碼

擴展到高容量
上面的迴圈模式可以擴展到數千條記錄,無需修改。 對於高容量條碼生成,IronBarcode支持異步和多執行緒操作,以最大程度提高多核伺服器上的吞吐量。
生成的條碼影像可以嵌入到PDF報告中、列印在標籤上,或儲存在文件管理系統中。 每個影像都將原始字串編碼成條碼掃描儀能解碼回文字的二進制模式。
對於每次運行生成數千個條碼的生產批次任務,請考慮在迴圈開始前預加熱IronBarcode引擎。 對CreateBarcode的第一次調用將初始化內部編碼快取; 同一個過程中後續的調用將更快完成。 將整個批次包裝在單一計時方法中,還可以輕鬆記錄匯總統計資料——生成的條碼總數、任何編碼失敗和經過時間——在批次終止之前。 這種模式可以與背景工作框架如Hangfire或.NET內建的IHostedService進行整合以執行規劃生成任務。
如何以不同的檔案格式儲存和導出條碼?
GeneratedBarcode提供多種儲存方法,涵蓋商業應用中最常用的影像格式:
using IronBarCode;
string value = "EXPORT-TEST-001";
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
// Save to disk in multiple formats
barcode.SaveAsPng("barcode.png"); // Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg"); // Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif"); // Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff"); // Multi-page archival format
barcode.SaveAsBmp("barcode.bmp"); // Uncompressed bitmap
// Export as a byte array for in-memory operations (API responses, database storage)
byte[] pngBytes = barcode.ToStream(Image格式.Png).ToArray();Imports IronBarCode
Dim value As String = "EXPORT-TEST-001"
Dim barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120)
' Save to disk in multiple formats
barcode.SaveAsPng("barcode.png") ' Lossless -- best for print
barcode.SaveAsJpeg("barcode.jpg") ' Compressed -- smaller file size
barcode.SaveAsGif("barcode.gif") ' Compatible with legacy systems
barcode.SaveAsTiff("barcode.tiff") ' Multi-page archival format
barcode.SaveAsBmp("barcode.bmp") ' Uncompressed bitmap
' Export as a byte array for in-memory operations (API responses, database storage)
Dim pngBytes As Byte() = barcode.ToStream(ImageFormat.Png).ToArray()選擇合適的格式取決於下游消費者。 PNG非常適合用於列印就緒的標籤和文件。 JPEG適合儲存空間是限制的應用程式。 要將條碼直接嵌入到PDF文件中,IronBarcode可以程式化地將條碼影像插入或蓋章到PDF中。
ToStream重載在Web API和雲端功能中特別有價值,因為寫入磁碟不是期望的。 字元陣列可以儲存在資料庫BLOB列中,上傳到雲端儲存,或直接流式傳輸到HTTP響應中,無需在文件系統上生成中介文件。
如何在編碼之前驗證字串資料?
並非每個字串都對每種條碼格式有效。 UPC-A要求完全12位數字,EAN-13要求13位,某些1D格式拒絕限定ASCII字元集之外的字元。 傳遞無效資料給IronBarCodeEncodingException。 將調用包裝在try/catch塊中,並在前置驗證輸入,防止在生產中出現未處理的異常:
using IronBarCode;
bool TryCreateBarcode(string value, BarcodeEncoding encoding, string outputPath)
{
if (string.IsNullOrWhiteSpace(value))
{
Console.WriteLine("Value must not be empty.");
return false;
}
try
{
var barcode = BarcodeWriter.CreateBarcode(value, encoding);
barcode.SaveAsPng(outputPath);
return true;
}
catch (IronBarCodeEncodingException ex)
{
Console.WriteLine($"Encoding failed: {ex.Message}");
return false;
}
}
// Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png"); // succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png"); // encoding exceptionImports IronBarCode
Function TryCreateBarcode(value As String, encoding As BarcodeEncoding, outputPath As String) As Boolean
If String.IsNullOrWhiteSpace(value) Then
Console.WriteLine("Value must not be empty.")
Return False
End If
Try
Dim barcode = BarcodeWriter.CreateBarcode(value, encoding)
barcode.SaveAsPng(outputPath)
Return True
Catch ex As IronBarCodeEncodingException
Console.WriteLine($"Encoding failed: {ex.Message}")
Return False
End Try
End Function
' Usage
TryCreateBarcode("SKU-001", BarcodeEncoding.Code128, "output.png") ' succeeds
TryCreateBarcode("NOT-NUMERIC", BarcodeEncoding.UPCA, "output.png") ' encoding exception根據輸入資料選擇合適的格式
當條碼格式可以在運行時配置時,使用一個輔助工具將內容型別映射到適當的編碼可避免無聲失敗:
- 當字串包含網址、電子郵件地址或多字節Unicode字元時,使用
BarcodeEncoding.QRCode。 - 用
BarcodeEncoding.Code128適合一般字母數字串長度達約80個字元。 - 僅當資料純數字且長度固定時,使用
BarcodeEncoding.UPCA。 檢查位由IronBarcode自動計算。 - 當需要在實體小標籤上放置非常短的字母數字串時,使用
BarcodeEncoding.DataMatrix。
在調用CreateBarcode之前新增格式驗證,使錯誤資訊面向使用者,而不是在應用日誌中顯示晦澀的堆棧追蹤資訊。
如何從字串值讀回條碼?
在許多系統中,生成條碼僅僅是工作流程的一半。 使用條碼讀取API使用BarcodeReader.Read將影像解碼回原始字串。
using IronBarCode;
// Read all barcodes from an image file
var results = BarcodeReader.Read("product_barcode.png");
foreach (var result in results)
{
// Output the decoded string value
Console.WriteLine($"Decoded value: {result.Value}");
Console.WriteLine($"格式 detected: {result.BarcodeType}");
}Imports IronBarCode
' Read all barcodes from an image file
Dim results = BarcodeReader.Read("product_barcode.png")
For Each result In results
' Output the decoded string value
Console.WriteLine($"Decoded value: {result.Value}")
Console.WriteLine($"格式 detected: {result.BarcodeType}")
Next這使得很容易建立回溯條碼工作流程——從產品記錄生成條碼,將其儲存到磁片或標籤印表機隊列,然後稍後掃描實體標籤並解碼值以查找記錄。 對於從PDF文件中讀取條碼或即時相機源,IronBarcode提供專用方法和同樣簡單的API。
如何在ASP.NET Core Web API中使用IronBarcode?
IronBarcode可以在ASP.NET Core控制器和最小API處理程式中執行。 最常見的模式是以文件結果或base64編碼的資料URI形式返回條碼影像,以在瀏覽器中呈現。
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", (string value) =>
{
var barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120);
byte[] imageBytes = barcode.ToStream(Image格式.Png).ToArray();
return Results.File(imageBytes, "image/png");
});
app.Run();Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
Dim builder = WebApplication.CreateBuilder(args)
Dim app = builder.Build()
' Minimal API endpoint -- returns a barcode PNG for the given value
app.MapGet("/barcode/{value}", Function(value As String)
Dim barcode = BarcodeWriter.CreateBarcode(value, BarcodeEncoding.Code128, 400, 120)
Dim imageBytes As Byte() = barcode.ToStream(ImageFormat.Png).ToArray()
Return Results.File(imageBytes, "image/png")
End Function)
app.Run()該端點即時生成條碼,針對URL路徑中傳遞的任何值。 對於生產部署,加入快取,使得對同一條碼值的重複請求不會重新生成影像。 請參閱完整的ASP.NET條碼生成教程以獲得更為詳細的步驟,包括依賴注入和響應快取。
您的下一步是什麼?
使用IronBarcode從字串資料在C#中生成條碼很簡單。 流暢的API在提供定製和批量處理的靈活性同時處理條碼編碼的複雜性。 無論目標是用於庫存的簡單Code 128條碼還是適合行動應用的QR Code,IronBarcode都為.NET應用程式提供可靠的條碼功能。
欲更進一步:
- **下載IronBarcode**並在本地運行本指南的程式碼範例
- **購買授權**以便在生產環境中部署 -- 授權從免費試用期開始
- **瀏覽文件**以獲得API參考、高級配置和特定平台說明
- 探索程式碼範例,涵蓋QR code生成、條碼掃描、PDF整合等
- ASP.NET條碼整合 -- 用於在MVC視圖和Razor頁面中渲染條碼的完整指南
- 條碼掃描器整合 -- 從影像、PDF和USB掃描器中讀取條碼C#教程

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


