C#中的Data Matrix生成器——完整教程及程式碼範例
Data Matrix條碼將大量編碼資料壓縮在小的實體區域中,因此成為標示藥品、標記電子元件及在空間有限的庫存管理系統中追蹤物品的首選。 這份教程將帶您了解如何使用IronBarcode在C#中生成Data Matrix條碼、自訂其外觀、編碼不同的資料型別,並將其匯出為各種檔案格式——所有這些都具備簡單且準備上線的程式碼。
什麼使Data Matrix條碼特別?
Data Matrix條碼是2D符號,透過排列成行列的黑白點來編碼資料。 不像傳統的線性條碼如UPC或EAN,它們可以在小至10 x 10模塊的空間中儲存多達2,335個字母數字或3,116個數字。 內建的Reed-Solomon錯誤校正使得即使條碼符號受損達到30%,仍能被現代條碼掃描器精確讀取。
這些特性使得Data Matrix非常適合標記小型部件、郵政條碼和電子元件,以及在醫療和物流中心進行標示。 醫療行業依賴GS1 Data Matrix標準追蹤藥物,製造商則在生產線中嵌入這些條碼以識別全球的物品。因為單一條碼可以保存大量資料,現在它們被國際上使用於尋求完整應用程式可追溯性的行業。
ISO/IEC 16022標準管理Data Matrix編碼,定義了IronBarcode預設使用的ECC200變體。 ECC200提供最有效的錯誤校正以及所有Data Matrix版本中最大的資料容量,是新實施方案的理想選擇。
| 格式 | 型別 | 最大字元數 | 錯誤校正 | 典型用例 |
|---|---|---|---|---|
| Data Matrix (ECC200) | 2D | 2,335 字母數字 | Reed-Solomon (~30%) | 製藥、電子、物流 |
| QR Code | 2D | 4,296 字母數字 | Reed-Solomon (最高30%) | URL、行銷、支付 |
| UPC-A | 1D | 12位數字 | None | 零售產品識別 |
| Code 128 | 1D | 約50個字元 | 僅校驗和 | 運輸、一般物流 |
如何在C#專案中安裝條碼庫?
使用NuGet套件管理器安裝IronBarcode僅需不到一分鐘。 在Visual Studio中打開套件管理器控制臺並運行:
Install-Package BarCode

另外,您可以在NuGet套件管理器的GUI中搜尋Iron Software的BarCode。 安裝後,將命名空間新增到您的C#檔案中:
using IronBarCode;
using IronBarCode;
Imports IronBarCode
這就是所有需要的設置。 IronBarcode依循ISO/IEC 16022標準,內部處理所有複雜的Data Matrix編碼,讓您專注於應用程式邏輯。 有關其他設置選項,如離線安裝或自訂套件來源,請參閱<IronBarcode安裝指南和進階NuGet安裝頁面。
支援的目標框架
IronBarcode支援.NET 10、.NET 8、.NET 6、.NET 5、.NET標準2.0和.NET Framework 4.6.2及更高版本。 如果您的專案以這些框架之一為目標,NuGet套件將無需額外配置安裝。
如何生成您的第一個Data Matrix條碼?
生成Data Matrix條碼只需要一行程式碼:
// Create a Data Matrix barcode with product information
var myBarcode = BarcodeWriter.CreateBarcode("PROD-12345-2024", BarcodeWriterEncoding.DataMatrix);
// Save as a high-quality PNG image
myBarcode.SaveAsImage("product-label.png");
// Create a Data Matrix barcode with product information
var myBarcode = BarcodeWriter.CreateBarcode("PROD-12345-2024", BarcodeWriterEncoding.DataMatrix);
// Save as a high-quality PNG image
myBarcode.SaveAsImage("product-label.png");
' Create a Data Matrix barcode with product information
Dim myBarcode = BarcodeWriter.CreateBarcode("PROD-12345-2024", BarcodeWriterEncoding.DataMatrix)
' Save as a high-quality PNG image
myBarcode.SaveAsImage("product-label.png")
此程式碼建立了一個編碼文字PROD-12345-2024的Data Matrix條碼, 並將其保存為PNG檔。參數BarcodeWriterEncoding.DataMatrix指示IronBarcode使用Data Matrix格式。 生成的條碼自動應用ECC200規範,其中包含內建的錯誤校正,確保在真實世界中可靠掃描。
條碼輸出

要在應用程式中立即使用,將條碼擷取為點陣圖或直接匯出為PDF:
// Get barcode as a bitmap for direct display in a UI control
var barcodeBitmap = myBarcode.ToBitmap();
// Save as PDF for document integration
myBarcode.SaveAsPdf("barcode-document.pdf");
// Get barcode as a bitmap for direct display in a UI control
var barcodeBitmap = myBarcode.ToBitmap();
// Save as PDF for document integration
myBarcode.SaveAsPdf("barcode-document.pdf");
' Get barcode as a bitmap for direct display in a UI control
Dim barcodeBitmap = myBarcode.ToBitmap()
' Save as PDF for document integration
myBarcode.SaveAsPdf("barcode-document.pdf")
IronBarcode支援匯出為PNG、JPEG、BMP、GIF、TIFF、SVG和PDF格式。 您還可以建立並刻印條碼到現有的PDF文件,以將它們嵌入購買訂單、發票或運輸清單中。
Data Matrix條碼可以編碼哪些資料型別?
Data Matrix支援多種編碼模式,每一種模式均為不同字元集進行了優化。 IronBarcode根據您提供的內容自動選擇最有效的模式:
// Encode alphanumeric product codes
var productCode = BarcodeWriter.CreateBarcode("ABC-123-XYZ", BarcodeWriterEncoding.DataMatrix);
productCode.SaveAsImage("product-code.png");
// Encode numeric serial numbers (numeric mode uses less space)
var serialNumber = BarcodeWriter.CreateBarcode("987654321098765", BarcodeWriterEncoding.DataMatrix);
serialNumber.SaveAsImage("serial-number.png");
// Encode URLs for product landing pages or support portals
var urlCode = BarcodeWriter.CreateBarcode("https://example.com/product/12345", BarcodeWriterEncoding.DataMatrix);
urlCode.SaveAsImage("url-datamatrix.png");
// Encode Unicode text for international applications
var unicodeBarcode = BarcodeWriter.CreateBarcode("製品-2024-東京", BarcodeWriterEncoding.DataMatrix);
unicodeBarcode.SaveAsImage("unicode-datamatrix.png");
// Encode alphanumeric product codes
var productCode = BarcodeWriter.CreateBarcode("ABC-123-XYZ", BarcodeWriterEncoding.DataMatrix);
productCode.SaveAsImage("product-code.png");
// Encode numeric serial numbers (numeric mode uses less space)
var serialNumber = BarcodeWriter.CreateBarcode("987654321098765", BarcodeWriterEncoding.DataMatrix);
serialNumber.SaveAsImage("serial-number.png");
// Encode URLs for product landing pages or support portals
var urlCode = BarcodeWriter.CreateBarcode("https://example.com/product/12345", BarcodeWriterEncoding.DataMatrix);
urlCode.SaveAsImage("url-datamatrix.png");
// Encode Unicode text for international applications
var unicodeBarcode = BarcodeWriter.CreateBarcode("製品-2024-東京", BarcodeWriterEncoding.DataMatrix);
unicodeBarcode.SaveAsImage("unicode-datamatrix.png");
Imports System
' Encode alphanumeric product codes
Dim productCode = BarcodeWriter.CreateBarcode("ABC-123-XYZ", BarcodeWriterEncoding.DataMatrix)
productCode.SaveAsImage("product-code.png")
' Encode numeric serial numbers (numeric mode uses less space)
Dim serialNumber = BarcodeWriter.CreateBarcode("987654321098765", BarcodeWriterEncoding.DataMatrix)
serialNumber.SaveAsImage("serial-number.png")
' Encode URLs for product landing pages or support portals
Dim urlCode = BarcodeWriter.CreateBarcode("https://example.com/product/12345", BarcodeWriterEncoding.DataMatrix)
urlCode.SaveAsImage("url-datamatrix.png")
' Encode Unicode text for international applications
Dim unicodeBarcode = BarcodeWriter.CreateBarcode("製品-2024-東京", BarcodeWriterEncoding.DataMatrix)
unicodeBarcode.SaveAsImage("unicode-datamatrix.png")
數字資料使用一種緊湊的編碼模式,與字母數字文字相比可減小條碼的大小。 二進位編碼處理特殊字元和Unicode文字,無需手動配置。 IronBarcode自動選擇最有效的編碼模式,因此您無需顯式指定。
輸出
在這裡,所有四種資料型別均已成功編碼為有效的Data Matrix條碼。

欲了解編碼選項和字元集支援的更多資訊,請參考IronBarcode編碼文件和條碼資料型別參考。
如何自訂Data Matrix條碼的外觀?
IronBarcode提供一整套條碼自訂選項來控制大小、顏色、註釋和邊距:
// Create barcode with custom styling
var customBarcode = BarcodeWriter.CreateBarcode("CUSTOM-2024", BarcodeWriterEncoding.DataMatrix);
// Set specific dimensions in pixels
customBarcode.ResizeTo(500, 500);
// Adjust colors for special label requirements
customBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);
customBarcode.ChangeBackgroundColor(IronSoftware.Drawing.Color.LightGray);
// Add human-readable text below the barcode symbol
customBarcode.AddAnnotationTextBelowBarcode("Product: CUSTOM-2024");
// Set margins to preserve the required quiet zone
customBarcode.SetMargins(10);
customBarcode.SaveAsImage("custom-datamatrix.png");
// Create barcode with custom styling
var customBarcode = BarcodeWriter.CreateBarcode("CUSTOM-2024", BarcodeWriterEncoding.DataMatrix);
// Set specific dimensions in pixels
customBarcode.ResizeTo(500, 500);
// Adjust colors for special label requirements
customBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);
customBarcode.ChangeBackgroundColor(IronSoftware.Drawing.Color.LightGray);
// Add human-readable text below the barcode symbol
customBarcode.AddAnnotationTextBelowBarcode("Product: CUSTOM-2024");
// Set margins to preserve the required quiet zone
customBarcode.SetMargins(10);
customBarcode.SaveAsImage("custom-datamatrix.png");
' Create barcode with custom styling
Dim customBarcode = BarcodeWriter.CreateBarcode("CUSTOM-2024", BarcodeWriterEncoding.DataMatrix)
' Set specific dimensions in pixels
customBarcode.ResizeTo(500, 500)
' Adjust colors for special label requirements
customBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue)
customBarcode.ChangeBackgroundColor(IronSoftware.Drawing.Color.LightGray)
' Add human-readable text below the barcode symbol
customBarcode.AddAnnotationTextBelowBarcode("Product: CUSTOM-2024")
' Set margins to preserve the required quiet zone
customBarcode.SetMargins(10)
customBarcode.SaveAsImage("custom-datamatrix.png")
這些自訂有助於符合公司品牌需求或特定的標籤標準。 方法ResizeTo保持正確的模組比例,這對於Data Matrix在任何掃描器距離的可讀性至關重要。 顏色變化適應特殊的印刷過程或基板的限制,如彩色標籤或金屬材料。 由SetMargins設置的安靜區域邊距符合ISO/IEC 16022規範中定義的最小空白需求。

選擇合適的條碼大小
Data Matrix條碼的最小可讀尺寸取決於掃描器和列印解析度。 對於通用掃描,建議模組尺寸至少為0.3 mm。 在300 DPI印刷解析度下,500像素的條碼約為42 mm平方——足以進行可靠的手持掃描。 對於較小的標籤,增加DPI或減少資料載荷以將符號保持在可掃尺寸範圍內。
如何批量生成多個條碼?
批量生成減少了在生產運行、運輸標籤或序列化庫存中建立大量Data Matrix程式碼的工作:
// Generate barcodes for a batch of products
string[] productIds = { "PROD-001", "PROD-002", "PROD-003", "PROD-004", "PROD-005" };
foreach (string id in productIds)
{
var batchBarcode = BarcodeWriter.CreateBarcode(id, BarcodeWriterEncoding.DataMatrix);
batchBarcode.ResizeTo(150, 150);
batchBarcode.AddAnnotationTextBelowBarcode(id);
// Save each barcode with a unique filename
string filename = $"barcode_{id.Replace("-", "_")}.png";
batchBarcode.SaveAsImage(filename);
}
// Generate barcodes for a batch of products
string[] productIds = { "PROD-001", "PROD-002", "PROD-003", "PROD-004", "PROD-005" };
foreach (string id in productIds)
{
var batchBarcode = BarcodeWriter.CreateBarcode(id, BarcodeWriterEncoding.DataMatrix);
batchBarcode.ResizeTo(150, 150);
batchBarcode.AddAnnotationTextBelowBarcode(id);
// Save each barcode with a unique filename
string filename = $"barcode_{id.Replace("-", "_")}.png";
batchBarcode.SaveAsImage(filename);
}
' Generate barcodes for a batch of products
Dim productIds As String() = {"PROD-001", "PROD-002", "PROD-003", "PROD-004", "PROD-005"}
For Each id As String In productIds
Dim batchBarcode = BarcodeWriter.CreateBarcode(id, BarcodeWriterEncoding.DataMatrix)
batchBarcode.ResizeTo(150, 150)
batchBarcode.AddAnnotationTextBelowBarcode(id)
' Save each barcode with a unique filename
Dim filename As String = $"barcode_{id.Replace("-", "_")}.png"
batchBarcode.SaveAsImage(filename)
Next
這種模式適合需要大批量標籤集的大型物流和醫療工作流程,每個標籤與唯一標識符相關聯。 對於網路應用程式,將條碼直接印在PDF文件上或以位元組陣列流式傳輸可在無需保存中間文件的情況下進行實時標籤生成。

大型批次的異步和多執行緒處理
當生成成千上萬的條碼時,同步處理成為瓶頸。 IronBarcode提供異步和多執行緒處理能力,允許您在多個CPU核心上並行生成條碼。 對於一批10,000個標籤,並行處理可比逐一迴圈顯著縮短總生成時間。
對於高吞吐量場景,考慮使用<IronBarcode的PDF標識API將條碼分組到PDF頁中,而不是保存成千上萬的單獨圖像文件,這可能會在Windows和Linux部署上建立文件系統負擔。
如何讀取和驗證Data Matrix條碼?
生成條碼只是工作流程的一半——驗證掃描器能否正確讀取它們是關閉質量迴圈的關鍵。IronBarcode內建條碼讀取器,讓您在生成圖像後立即進行解碼:
// Generate a barcode
var generated = BarcodeWriter.CreateBarcode("VERIFY-2024", BarcodeWriterEncoding.DataMatrix);
generated.SaveAsImage("verify-test.png");
// Read it back to confirm correct encoding
var results = BarcodeReader.Read("verify-test.png");
foreach (var result in results)
{
Console.WriteLine($"Decoded value: {result.Value}");
Console.WriteLine($"格式: {result.Barcode類型}");
}
// Generate a barcode
var generated = BarcodeWriter.CreateBarcode("VERIFY-2024", BarcodeWriterEncoding.DataMatrix);
generated.SaveAsImage("verify-test.png");
// Read it back to confirm correct encoding
var results = BarcodeReader.Read("verify-test.png");
foreach (var result in results)
{
Console.WriteLine($"Decoded value: {result.Value}");
Console.WriteLine($"格式: {result.Barcode類型}");
}
Imports System
' Generate a barcode
Dim generated = BarcodeWriter.CreateBarcode("VERIFY-2024", BarcodeWriterEncoding.DataMatrix)
generated.SaveAsImage("verify-test.png")
' Read it back to confirm correct encoding
Dim results = BarcodeReader.Read("verify-test.png")
For Each result In results
Console.WriteLine($"Decoded value: {result.Value}")
Console.WriteLine($"格式: {result.Barcode類型}")
Next
這種反向驗證模式在受監管行業中特別有價值,如製藥業,其中DSCSA法規要求處方藥包裝上的序列化條碼既要能夠機器讀取,又要符合格式。 在生成流水線中運行讀回檢查可在標籤進入生產線之前捕獲編碼錯誤。
對於更高階的讀取場景,請參見<IronBarcode閱讀文件和從PDF讀取條碼指南。
常見掃描相容性考量
不同掃描器固件版本對Data Matrix符號的解讀容忍度在隔離區和模塊對比度方面各異。針對舊有的手持掃描器,增加模塊大小,使用高對比的黑白顏色,並將隔離區保持至少兩個模塊寬。GS1應用程式標識指南提供了在單個Data Matrix符號內編碼供應鏈標識符(如批號、到期日和GTIN)的模式。
您的下一步是什麼?
使用IronBarcode在C#中生成Data Matrix條碼遵循統一的模式:安裝NuGet套件,調用BarcodeWriterEncoding.DataMatrix,應用所需的自訂,然後匯出為目標格式。 相同的API處理從單條碼原型到高容量批次管道的一切。
以下是進一步探索的推薦路徑:
- 探索條碼閱讀:IronBarcode閱讀指南涵蓋了從圖像、PDF和實時相機流中解碼條碼。
- 嘗試其他2D格式: IronBarcode還利用相同API生成QR程式碼、PDF417、Aztec和所有主要的1D格式。
- 將條碼嵌入文件中: PDF標籤教程展示了如何在程式上將條碼新增到現有的PDF中。
- 以異步處理進行規模化: 請參閱異步和多執行緒指南以對大型批次工作進行並行化。
- 檢查授權:IronBarcode授權頁面列出了從開發者到OEM再分發的選項。
開始免費試用,測試所有功能無需限制,或瀏覽完整的IronBarcode文件,獲取詳細的API參考和其他程式碼範例。
常見問題
什麼是Data Matrix條碼?
Data Matrix條碼是由ISO/IEC 16022標準管理的2D符號,能在小格內編碼多達2,335個字母數字字元或3,116個數位數字。通常用於藥品標籤、電子產品標記和庫存管理。
如何在C#中生成Data Matrix條碼?
使用您的資料字串和BarcodeWriterEncoding.DataMatrix調用BarcodeWriter.CreateBarcode,然後對結果調用SaveAsImage或SaveAsPdf。IronBarcode自動處理ECC200編碼和錯誤校正。
使用IronBarcode生成Data Matrix的好處有哪些?
IronBarcode可以在一行程式碼中生成ECC200 Data Matrix條碼,自動處理編碼模式選擇,並匯出至PNG、PDF、SVG等格式,不需要額外的依賴。
IronBarcode能否將Data Matrix條碼匯出到不同的文件格式?
可以。IronBarcode將Data Matrix條碼匯出為PNG、JPEG、BMP、GIF、TIFF、SVG和PDF。您也可以將條碼直接蓋章在現有的PDF文件上。
IronBarcode能否自定義Data Matrix條碼?
可以。IronBarcode提供ResizeTo調整尺寸,ChangeBarCodeColor和ChangeBackgroundColor修改顏色,AddAnnotationTextBelowBarcode為人可讀文字新增注釋,SetMargins調整靜置區域。
Data Matrix條碼特別適合哪個行業?
Data Matrix條碼廣泛用於藥品業以滿足DSCSA合規,電子產品用於元件識別,物流用於包裹跟蹤,醫療保健用於符合GS1的藥品標籤。
IronBarcode生成哪個版本的Data Matrix?
IronBarcode預設生成ECC200 Data Matrix條碼。ECC200是當前ISO/IEC 16022標準版本,提供最高資料容量和Reed-Solomon錯誤校正。
為何選用Data Matrix條碼而不是其他2D碼?
Data Matrix條碼因其在小物理面積上的高資料密度、能承受多達30%符號損壞的Reed-Solomon錯誤校正以及在全球受規管行業中得到認可的ISO/IEC標準化而受到青睞。




