跳至页脚内容
USING IRONBARCODE

C# 数据矩阵生成器——包含代码示例的完整教程

数据矩阵条形码将大量的编码数据压缩到一个很小的物理区域内,因此成为药品标签、电子元件标记以及在空间有限的库存管理系统中跟踪物品的首选。 本教程将引导您了解如何使用IronBarcode在 C# 中生成 Data Matrix 条形码,自定义其外观,编码不同的数据类型,并将其导出为各种文件格式——所有这些都使用简单易懂、可用于生产的代码完成。

立即开始使用 IronBarcode。
green arrow pointer

数据矩阵条形码有何特别之处?

数据矩阵条形码是二维符号,它将数据编码到排列成行和列的黑白点阵网格中。 与传统的线性条形码(如 UPC 或 EAN)不同,它们可以在 10 x 10 个模块大小的空间内存储多达 2,335 个字母数字字符或 3,116 个数字。 由于内置的​​里德-所罗门纠错功能,即使符号损坏高达 30%,现代条形码扫描器也能准确读取它们。

这些特性使得 Data Matrix 成为标记小型零件、邮政条形码和电子元件的理想选择,也适用于医疗保健和物流中心的标签制作。 医疗保健行业依赖GS1数据矩阵标准进行药品追踪,而制造商则将其嵌入生产线,用于在全球范围内识别产品。由于单个条形码可以存储大量数据,因此如今已被国际上各个行业广泛采用,以实现完整的应用追溯。

ISO/IEC 16022 标准规范了数据矩阵编码,定义了IronBarcode默认使用的 ECC200 变体。 ECC200 提供所有 Data Matrix 版本中最有效的纠错能力和最大的数据容量,使其成为新部署的正确选择。

数据矩阵与常用条形码格式
翻译格式 翻译类型 最大字符数 错误纠正 典型用例
数据矩阵(ECC200) 二维 2,335 个字母数字 里德-所罗门(约30%) 医药、电子、物流
二维码 二维 4,296 个字母数字 里德-所罗门(高达 30%) 网址、营销、支付
UPC-A 1D 12位数字 零售产品标识
Code 128 1D 约50个字符 仅校验和 航运、一般物流

如何在 C# 项目中安装条形码库?

使用NuGet包管理器安装IronBarcode只需不到一分钟。 在 Visual Studio 中打开软件包管理器控制台并运行:

Install-Package BarCode

C# 数据矩阵生成器: IronBarcode完整指南:图 1 - 与 C# 数据矩阵生成器: IronBarcode完整指南相关的 5 张图片中的第 1 张

或者,在NuGet包管理器 GUI 中搜索Iron Software的BarCode 。 安装完成后,将命名空间添加到您的 C# 文件中:

using IronBarCode;
using IronBarCode;
$vbLabelText   $csharpLabel

这就是全部的准备工作了。 IronBarcode按照 ISO/IEC 16022 标准在内部处理所有复杂的 Data Matrix 编码,因此您可以专注于应用程序逻辑。 有关离线安装或自定义包源等其他设置选项,请参阅IronBarcode安装指南高级NuGet安装页面

支持的目标框架

IronBarcode 的目标平台为.NET 10、 .NET 8、 .NET 6、 .NET 5、 .NET Standard 2.0 和.NET Framework 4.6.2 及更高版本。 如果您的项目面向这些框架中的任何一个,则NuGet包无需额外配置即可安装。

如何创建您的第一个数据矩阵条形码?

生成 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");
$vbLabelText   $csharpLabel

这段代码会创建一个数据矩阵条形码,编码文本为 PROD-12345-2024,并将其保存为 PNG 文件。参数 BarcodeWriterEncoding.DataMatrix 指示IronBarcode使用数据矩阵格式。 生成的条形码会自动应用 ECC200 规范,该规范包含内置纠错功能,可确保在实际条件下可靠扫描。

条形码输出

C# 数据矩阵生成器: IronBarcode完整指南:图 2 - 第一个条形码输出

如需立即在应用程序中使用,请将条形码检索为位图或直接导出为 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");
$vbLabelText   $csharpLabel

IronBarcode支持导出为 PNG、JPEG、BMP、GIF、TIFF、SVG 和 PDF 格式。 您还可以创建条形码并将其添加到现有的 PDF 文档中,以便将其嵌入到采购订单、发票或发货清单中。

数据矩阵条形码可以编码哪些数据类型?

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");
$vbLabelText   $csharpLabel

数字数据采用紧凑的编码模式,与字母数字文本相比,可减小条形码尺寸。 二进制编码无需手动配置即可处理特殊字符和Unicode文本。 IronBarcode会自动选择最有效的编码模式,因此您无需明确指定。

输出

这里,所有四种数据类型都已成功编码为有效的 Data Matrix 条形码。

C# 数据矩阵生成器: IronBarcode完整指南:图 3 - 使用 4 种不同数据类型创建的数据矩阵条形码

要深入了解编码选项和字符集支持,请参阅IronBarcode编码文档条形码数据类型参考

如何自定义数据矩阵条形码的外观?

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");
$vbLabelText   $csharpLabel

这些定制化服务有助于满足企业品牌推广要求或特定标签标准。 ResizeTo 方法保持了正确的模块比例,这对于在任何扫描仪距离下 Data Matrix 的可读性至关重要。 颜色变化是为了适应特殊的印刷工艺或承印物限制,例如彩色标签或金属材料。 SetMargins 设置的静默区裕度满足 ISO/IEC 16022 规范中定义的最小空白要求。

C# 数据矩阵生成器: IronBarcode完整指南:图 4 - 自定义数据矩阵输出

选择合适的条形码尺寸

Data Matrix 条形码的最小可读尺寸取决于扫描器和打印分辨率。 对于一般用途的扫描,建议使用至少 0.3 毫米的模块尺寸。 在 300 DPI 打印分辨率下,500 像素的条形码尺寸约为 42 毫米见方——足以满足可靠的手持扫描需求。 对于较小的标签,增加 DPI 或减少数据有效载荷,使符号保持在可扫描的尺寸范围内。

如何批量生成多个条形码?

批量生成功能减少了创建大量数据矩阵码(用于生产运行、运输标签或序列化库存)所需的工作量:

// 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);
}
$vbLabelText   $csharpLabel

这种模式适用于需要大量标签集的物流和医疗保健工作流程,每个标签集都与一个唯一的标识符相关联。 对于 Web 应用程序,直接在 PDF 文档上添加条形码或将其作为字节数组进行流式传输,可以实现实时标签生成,而无需保存中间文件。

C# 数据矩阵生成器: IronBarcode完整指南:图 5 - 批量创建数据矩阵条形码

面向大批量数据的异步和多线程处理

当生成数千个条形码时,同步处理会成为瓶颈。 IronBarcode提供异步和多线程处理功能,允许您在多个 CPU 核心上并行生成条形码。 对于 10,000 个标签的批量处理,与顺序循环相比,并行处理可以将总生成时间减少一个数量级。

对于高吞吐量场景,可以考虑使用IronBarcode 的 PDF 冲压 API将条形码分组到 PDF 表格中,而不是保存数千个单独的图像文件,这可能会在 Windows 和 Linux 部署中造成文件系统开销。

如何读取和验证数据矩阵条形码?

生成条形码只是工作流程的一半——验证扫描器能否正确读取条形码才是质量控制闭环的最后一步。IronBarcodeIronBarcode条形码读取器,可让您在生成条形码后立即对其进行解码:

// 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翻译类型}");
}
$vbLabelText   $csharpLabel

这种往返验证模式在受监管的行业(例如制药行业)中尤其有价值,因为《药品供应链安全法案》(DSCSA) 规定处方药包装上的序列化条形码必须既是机器可读的,又是格式正确的。 在生成流程中运行回读检查,可以在标签到达生产线之前捕获编码错误。

对于更高级的读取场景,请参阅IronBarcode读取文档从 PDF 读取条形码指南

常见的扫描兼容性注意事项

不同扫描器固件版本对数据矩阵符号的解读存在差异,对静区和模块对比度的容忍度也不同。如果目标设备是旧款手持扫描器,则应增大模块尺寸,使用高对比度的黑底白字,并确保静区宽度至少为两个模块的宽度。GS1应用标识符指南提供了在单个数据矩阵符号中编码供应链标识符(例如批号、有效期和 GTIN)的模式。

下一步计划是什么?

使用IronBarcode在 C# 中生成 Data Matrix 条形码遵循一致的模式:安装NuGet包,调用 BarcodeWriter.CreateBarcodeBarcodeWriterEncoding.DataMatrix,应用任何所需的自定义项,然后导出为目标格式。 同一个 API 可以处理从单个条形码原型到大批量流水线的所有操作。

以下是进一步推进此项目的推荐路径:

-探索条形码读取IronBarcode读取指南涵盖了从图像、PDF 和实时摄像头流中解码条形码。 -尝试其他 二维 格式: IronBarcode还使用相同的 API 生成QR 码、PDF417、Aztec 和所有主要的 1D 格式。 -在文档中嵌入条形码PDF 盖章教程展示了如何以编程方式向现有 PDF 添加条形码。 -利用异步处理进行扩展:查看异步和多线程指南,以并行化大型批处理作业。 -查看许可IronBarcode许可页面列出了从开发者到 OEM 再分发的各种选项。

开始免费试用,即可不受限制地测试所有功能,或者查看完整的IronBarcode文档,获取详细的 API 参考和其他代码示例。

NuGet 使用 NuGet 安装

PM >  Install-Package BarCode

IronBarcode 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLL

常见问题解答

什么是数据矩阵条码?

数据矩阵条形码是一种符合 ISO/IEC 16022 标准的二维符号,可在很小的网格内编码多达 2335 个字母数字字符或 3116 个数字。它常用于药品标签、电子产品标识和库存管理。

如何在 C# 中生成 Data Matrix 条形码?

调用 BarcodeWriter.CreateBarcode 方法,传入数据字符串和 BarcodeWriterEncoding.DataMatrixIronBarcode,然后对结果调用 SaveAsImage 或 SaveAsPdf 方法。IronBarcode 会自动处理 ECC200 编码和纠错。

使用 IronBarcode 生成数据矩阵有什么好处?

IronBarcode只需一行代码即可生成 ECC200 数据矩阵条形码,自动处理编码模式选择,并可导出为 PNG、PDF、SVG 等格式,无需其他依赖项。

IronBarcode 可以将 Data Matrix 条形码导出为不同的文件格式吗?

IronBarcode的。IronBarcode 可以将 Data Matrix 条形码导出为 PNG、JPEG、BMP、GIF、TIFF、SVG 和 PDF 格式。您还可以直接将条形码添加到现有的 PDF 文档中。

是否可以使用 IronBarcode 自定义数据矩阵条码?

是的。IronBarcode 提供IronBarcode来调整尺寸,ChangeBarCodeColor 和 ChangeBackgroundColor 来调整颜色,AddAnnotationTextBelowBarcode 来添加人类可读的文本,以及 SetMargins 来控制静默区域。

数据矩阵 BarCode 特别适用于哪些行业?

数据矩阵条形码广泛应用于制药行业以符合药品供应链安全法案 (DSCSA) 的要求,电子行业以组件识别为目的,物流行业以包裹追踪为目的,以及医疗保健行业以符合 GS1 标准的药品标签为目的。

IronBarcode生成的是哪个版本的 Data Matrix 数据?

IronBarcode默认生成 ECC200 数据矩阵条码。ECC200 是当前 ISO/IEC 16022 标准版本,提供最高的数据容量和里德-所罗门纠错功能。

为什么使用 Data Matrix 条形码而不是其他二维条码?

数据矩阵条形码因其在小物理占用空间内具有高数据密度、里德-所罗门纠错功能(可承受高达 30% 的符号损坏)以及在全球受监管行业中得到认可的 ISO/IEC 标准化而备受青睐。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我