跳至页脚内容
USING IRONBARCODE

如何使用IronBarcode在 C# 中生成条形码

IronBarcode是一个.NET条码库,可以让您用C#生成和读取条形码,只需几行代码。 您可以创建Code 128、QR码、EAN-13、PDF-417、Data Matrix和其他几十种条码类型,然后导出为PNG、JPEG、TIFF、BMP、PDF或HTML。 本指南为您介绍安装、核心生成模式、样式、导出格式和最佳实践,以便您可以将可靠的条码输出添加到任何.NET应用程序中。

如何使用NuGet包管理器安装条码生成库?

打开 Visual Studio,在软件包管理器控制台中使用此命令安装 NuGet 软件包:

Install-Package BarCode

使用IronBarcode的条码生成C#源代码:图1 - 安装

NuGet包支持.NET 10、.NET 8、.NET 6、.NET Core、.NET Standard和.NET Framework,使其兼容Windows应用程序和跨平台.NET应用程序。 IronBarcode 支持部署到 Docker 容器、Azure 和 Linux 服务器。 在IronBarcode文档页面Iron Software GitHub项目上查找更多详细信息和参考文档。

安装后,您将在项目中看到IronBarCode命名空间。 该库在Windows上不需要其他运行时依赖项——在Linux上,您可能需要按照IronBarcode Linux部署指南中所述安装一些系统库。

如何在C#中生成一个简单的条码图像文件?

只需几行代码即可创建 BarCode 图像。 下面的示例显示了保存 PNG 图像文件的 BarCode 生成:

using IronBarCode;

// Generate a simple barcode and encode the string data
var barcode = BarcodeWriter.CreateBarcode("SKU-78432-X", BarcodeWriterEncoding.Code128);

// Save the barcode as a PNG image file
barcode.SaveAsPng("product-barcode.png");
using IronBarCode;

// Generate a simple barcode and encode the string data
var barcode = BarcodeWriter.CreateBarcode("SKU-78432-X", BarcodeWriterEncoding.Code128);

// Save the barcode as a PNG image file
barcode.SaveAsPng("product-barcode.png");
$vbLabelText   $csharpLabel

BarcodeWriterEncoding的条码格式。 返回的GeneratedBarcode引用提供样式方法和导出选项,可以保存为PNG、JPEG、BMP、TIFF、PDF或HTML。

输出

使用IronBarcode的条码生成C#源代码:图2 - 条码输出

Code128是物流和库存系统的主力条码。 它以紧凑的线性格式编码大写字母、小写字母、数字和特殊字符。 这种条码类型确保在全球的运输设施和零售环境中能够正确扫描。当您使用SaveAsPng()方法时,IronBarcode会自动设置适合屏幕显示和标准打印机的默认分辨率。

对于需要直接从Web端点提供条码图像的应用程序,可以使用ToStream(),而不是保存到磁盘。 流可以直接写入ASP.NET Core中的FileStreamResult

如何创建QR码和其他2D条码类型?

IronBarcode 支持所有主流条形码格式,包括 QR 码和数据矩阵等二维条形码类型。 生成具有类似语法的 QR 代码:

using IronBarCode;

// Create a QR code and encode URL data
var qrCode = BarcodeWriter.CreateBarcode(
    "https://ironsoftware.com/csharp/barcode/",
    BarcodeWriterEncoding.QRCode
);
qrCode.SaveAsPng("website-qr.png");
using IronBarCode;

// Create a QR code and encode URL data
var qrCode = BarcodeWriter.CreateBarcode(
    "https://ironsoftware.com/csharp/barcode/",
    BarcodeWriterEncoding.QRCode
);
qrCode.SaveAsPng("website-qr.png");
$vbLabelText   $csharpLabel

QR 码 BarCode 类型擅长存储 URL 和较大的数据有效载荷。 该库可自动处理纠错,确保条形码即使在部分损坏的情况下仍可扫描。 默认情况下,IronBarcode使用错误更正级别M(中),可从约15%的数据丢失中恢复——您可以将其提升到H级以用于可能被刮伤或部分遮挡的打印条码。

输出

使用IronBarcode的条码生成C#源代码:图3 - QR码输出

对于需要 EAN-13 条形码的零售产品,可生成类似这样的条形码图像:

using IronBarCode;

// Generate an EAN-13 barcode compatible with UPC for retail print applications
var eanBarcode = BarcodeWriter.CreateBarcode("5901234123457", BarcodeWriterEncoding.EAN13);
eanBarcode.SaveAsPng("retail-product.png");
using IronBarCode;

// Generate an EAN-13 barcode compatible with UPC for retail print applications
var eanBarcode = BarcodeWriter.CreateBarcode("5901234123457", BarcodeWriterEncoding.EAN13);
eanBarcode.SaveAsPng("retail-product.png");
$vbLabelText   $csharpLabel

EAN-13是全球零售销售点系统的标准格式。库会自动计算校验位,因此您只需提供有效GTIN-13号码的前12位数字。 如果您提供的校验位不匹配,IronBarcode会抛出描述性异常,而不是静默生成不可读的条码。

输出

使用IronBarcode的条码生成C#源代码:图4 - EAN-13条码输出

除了Code 128、QR码和EAN-13外,库还支持Code 39、Code 93、UPC-A、UPC-E、ITF、Codabar、PDF-417、Aztec和Data Matrix。 支持格式的完整列表可以在IronBarcode条码类型参考页面上找到。

如何创建具有高级造型选项的风格化QR码?

专业条形码生成通常需要高级样式选项来调整颜色和添加注释。 GeneratedBarcode类提供流畅的API和样式方法:

using IronBarCode;
using IronSoftware.Drawing;

// Create a styled barcode with advanced styling options
var styledBarcode = BarcodeWriter
    .CreateBarcode("INV-2025-001847", BarcodeWriterEncoding.Code128)
    .ResizeTo(400, 120)
    .SetMargins(20)
    .ChangeBarCodeColor(Color.DarkBlue)
    .AddAnnotationTextAboveBarcode("Invoice Number:")
    .AddBarcodeValueTextBelowBarcode();

// Verify to ensure proper scanning after styling
bool isReadable = styledBarcode.Verify();
Console.WriteLine($"Barcode verification: {(isReadable ? "PASS" : "FAIL")}");
styledBarcode.SaveAsPng("styled-invoice-barcode.png");
using IronBarCode;
using IronSoftware.Drawing;

// Create a styled barcode with advanced styling options
var styledBarcode = BarcodeWriter
    .CreateBarcode("INV-2025-001847", BarcodeWriterEncoding.Code128)
    .ResizeTo(400, 120)
    .SetMargins(20)
    .ChangeBarCodeColor(Color.DarkBlue)
    .AddAnnotationTextAboveBarcode("Invoice Number:")
    .AddBarcodeValueTextBelowBarcode();

// Verify to ensure proper scanning after styling
bool isReadable = styledBarcode.Verify();
Console.WriteLine($"Barcode verification: {(isReadable ? "PASS" : "FAIL")}");
styledBarcode.SaveAsPng("styled-invoice-barcode.png");
$vbLabelText   $csharpLabel

流畅的 API 可让您在一条语句中使用链式样式方法来调整颜色、设置页边距和添加文本。 Verify()方法指示您的条码是否仍可被机器读取——确保在应用非标准颜色或调整到小尺寸后能在生产中正确扫描。

将条形颜色更改为非常浅的阴影或低对比度的蓝色背景可能会导致条码无法扫描。 在任何颜色更改后始终调用Verify()。 如果验证失败,或者增加对比度或恢复到黑条。 条码样式和自定义指南详细介绍了所有可用的样式方法。

要为整个目录生成具有一致风格的多个条码,请构建一个帮助方法,将您的标准样式链应用于每个GeneratedBarcode实例。 这种方法确保在生成的成千上万张图像中保持统一的边距、字体大小和颜色。

如何将条码导出为不同的图像格式?

针对不同用例生成多种格式的 BarCode 图像。 该库可保存为 PNG、JPEG、BMP、TIFF、PDF 和 HTML 格式:

using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("EXPORT-TEST", BarcodeWriterEncoding.Code128);

// Export barcode images to various formats
barcode.SaveAsPng("barcode.png");           // Web-compatible raster image
barcode.SaveAsJpeg("barcode.jpg");          // Compressed format for email attachments
barcode.SaveAsTiff("barcode.tiff");         // High-quality format for print workflows
barcode.SaveAsPdf("barcode.pdf");           // PDF document output
barcode.SaveAsHtmlFile("barcode.html");     // HTML for inline web embedding

// Get as bitmap stream for web APIs or database storage
System.IO.Stream barcodeStream = barcode.ToStream();
System.Drawing.Bitmap bitmapImage = barcode.ToBitmap();
using IronBarCode;

var barcode = BarcodeWriter.CreateBarcode("EXPORT-TEST", BarcodeWriterEncoding.Code128);

// Export barcode images to various formats
barcode.SaveAsPng("barcode.png");           // Web-compatible raster image
barcode.SaveAsJpeg("barcode.jpg");          // Compressed format for email attachments
barcode.SaveAsTiff("barcode.tiff");         // High-quality format for print workflows
barcode.SaveAsPdf("barcode.pdf");           // PDF document output
barcode.SaveAsHtmlFile("barcode.html");     // HTML for inline web embedding

// Get as bitmap stream for web APIs or database storage
System.IO.Stream barcodeStream = barcode.ToStream();
System.Drawing.Bitmap bitmapImage = barcode.ToBitmap();
$vbLabelText   $csharpLabel

ToStream()方法返回与ASP.NET Core Web API和Blazor应用程序兼容的条码数据。 System.Drawing.Bitmap引用以进一步图像处理。 想要在现有PDF文档上加盖条码,请参阅IronBarcode PDF条码教程

输出

使用IronBarcode的条码生成C#源代码:图5 - PNG条码输出

使用IronBarcode的条码生成C#源代码:图6 - HTML条码输出

选择正确的格式取决于您的下游工作流程。 PNG是无损的,适合用于Web和应用程序UI的默认选择。 TIFF在颜色精确性很重要的印刷生产流水线中受到欢迎。 当您需要一个可以被打印公司直接处理的准备打印文档时,PDF输出非常有用。 HTML输出生成一个包含内嵌base64图像的自包含文件——适用于电子邮件模板和网络门户。

IronBarcode支持哪些跨平台.NET环境?

IronBarcode支持在所有主要.NET平台上生成条码。 部署到

IronBarcode部署平台支持
平台 支持的运行时 典型的使用案例
Windows .NET 10、.NET 8、.NET Framework 4.6.2+ 桌面应用程序、Windows服务、IIS Web服务器
Linux .NET 10、.NET 8、.NET Core 3.1+ Docker容器、AWS Lambda、Azure Functions
macOS .NET 10、.NET 8 开发环境、macOS服务器应用程序
移动设备 .NET MAUI、Xamarin iOS和Android移动应用程序
Azure、AWS、Google 云 无服务器函数、容器化微服务

IronBarcode Docker设置指南提供了有关容器化部署所需系统库的详细信息。 在Linux上运行时,通常需要在Docker镜像中安装libc6-dev。 在Alpine Linux上,所需的软件包略有不同——指南涵盖了Ubuntu/Debian和Alpine Dockerfile。

对于AWS Lambda部署,AWS Lambda部署操作指南解释了如何在部署包中捆绑本地依赖项,并配置内存限制以处理条码渲染工作负载。

如何在.NET中遵循条码生成的最佳实践?

在C#应用程序中生成条码图像时遵循一套一致的实践,可区分在现场可靠扫描的条码与在销售点或仓库地板失败的条码。 以下准则适用于您选择的任何条码格式。

选择适合您的用例的条码格式。选择与您的扫描环境和数据需求相匹配的格式。 对于超过80个字符的URL和数据负载,使用QR码。 在需要将字母数字数据装入紧凑线性符号的库存和物流中使用Code 128。 对于需要在GS1系统中注册的零售产品,使用EAN-13或UPC-A。 IronBarcode的条码格式比较页面提供了所有支持类型以及其容量限制和推荐用例的并列参考。

始终包含足够的安静区。条码周围的空白——称为安静区——与条码本身一样重要。 扫描仪使用它来检测符号的开始和结束位置。 使用SetMargins()方法在每一边至少添加10像素的填充显示,打印输出时至少加2.5毫米。 削减安静区是生产中扫描失败最常见的原因之一。

在任何样式更改后进行验证。在调整颜色、应用渐变、或调整到非标准尺寸后,调用GeneratedBarcode对象。 如果返回false,您的条码将无法在标准硬件上可靠扫描。 要么增加对比度,要么减少样式更改的复杂性。

使用批量生成模式进行高容量输出。如果您的应用程序生成数千个条码——例如产品标签或运输清单——在循环中处理并重用相同的样式配置。 避免在循环内加载字体资产或配置对象,因为这会产生不必要的开销。 IronBarcode批量条码生成示例展示了具有一致输出的高效循环模式。

在多个扫描仪模型和光照条件下测试。条码扫描仪在低对比度颜色、小尺寸模块和打印质量的耐受力上各不相同。 在部署之前,至少使用两种不同的扫描仪类型测试打印条码。 对于屏幕显示的QR码,用手机摄像头在明亮和昏暗光线下测试。 GS1条码验证标准页面提供有关零售条码符号质量分级的权威指导。

尊重数据容量限制。每种条码格式都有最大数据容量。 Code 128在符号变得过于宽而无法在标准标签尺寸上打印之前,可以编码最多约48个字符。 QR码容量取决于错误更正级别——在H级别,最大约为1,273个字母数字字符。 超出容量会迫使库抛出异常或静默地降低质量。 检查Wikipedia上的QR码数据容量参考获取快速容量表。

遵循.NET的dispose模式。IDisposable。 将它们包裹在using语句中以迅速释放非托管资源,尤其是在高吞吐量的网络应用程序中,其中条码生成随着每个请求发生。

了解常见的失败模式也有助于您构建更具抵抗力的生成代码。 扫描失败的三个最常见原因是:安静区不足,条形颜色过于接近背景色,以及条码缩放到低于所选格式的最小模块尺寸。 IronBarcode的Verify()方法在运行时捕捉到所有这三种情况。

要从生成的图像中读取条码——用于往返测试或扫描上传的文件——请参阅IronBarcode条码读取指南。 读取器API在简单性上与写入器API相映,并支持同样广泛的格式范围。

Code 128的ISO/IEC 15417标准QR码的ISO/IEC 18004标准定义了IronBarcode遵循的技术规范。 查看目标条码类型的相关标准有助于您了解库必须在其中工作的约束。

您的下一步是什么?

本指南涵盖了使用IronBarcode在C#中生成条码图像——从NuGet安装到Code 128、QR码和EAN-13生成,包含流畅API的高级样式,多格式导出,跨平台部署和生产最佳实践。

要进一步了解,请探索这些资源:

下载IronBarcode以在您的.NET应用程序中添加条码功能,或开始免费30天试用,在不需要许可证密钥的情况下,在您的环境中生成条码图像。

常见问题解答

如何使用NuGet包管理器安装IronBarcode ?

打开 Visual Studio,导航至“工具”> “NuGet包管理器”>“包管理器控制台”,然后运行: Install-Package BarCode。或者,在NuGet包管理器界面中搜索“ IronBarcode ”,然后单击“安装”。

使用IronBarcode可以生成哪些类型的条形码?

IronBarcode支持生成各种条形码类型,包括 QR 码、Code 128、Code 39、Code 93、UPC-A、UPC-E、EAN-13、EAN-8、PDF-417、Data Matrix、Aztec 等。

IronBarcode 可以生成不同图像格式的条码吗?

是的, IronBarcode可以使用 SaveAsPng、SaveAsJpeg、SaveAsTiff、SaveAsPdf 和 SaveAsHtmlFile 方法生成 PNG、JPEG、BMP、TIFF、PDF 和 HTML 格式的条形码。

IronBarcode与.NET 10 兼容吗?

是的, IronBarcode与.NET 10、 .NET 8、 .NET 6、 .NET Core、 .NET Standard和.NET Framework完全兼容,允许您将条形码生成集成到跨平台应用程序中。

如何使用IronBarcode自定义条形码的外观?

IronBarcode为 GeneratedBarcode 类提供了一个流畅的 API。您可以链式调用 ResizeTo()、SetMargins()、ChangeBarCodeColor()、AddAnnotationTextAboveBarcode() 和 AddBarcodeValueTextBelowBarcode() 等方法来自定义条形码的外观。在设置样式后,务必调用 Verify() 来确认条形码仍然可扫描。

IronBarcode 支持条码读取和扫描吗?

是的, IronBarcode支持使用 BarcodeReader 类及其 Read 方法从图像、PDF 和流中读取和扫描条形码。

您可以使用IronBarcode批量生成条形码吗?

是的, IronBarcode支持批量生成。使用循环遍历数据,对每个数据项调用 `BarcodeWriter.CreateBarcode()`,然后应用标准样式链。为了提高效率,可以在循环外重用配置对象。

IronBarcode 是否有试用版?

是的, IronBarcode提供 30 天免费试用许可。请访问 ironsoftware.com/csharp/barcode/licensing/#trial-license 获取试用密钥,并在评估期间使用所有功能,且无水印。

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

钢铁支援团队

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