跳至页脚内容
USING IRONBARCODE

在ASP.NET Core Web 应用程序中生成条形码

将条形码生成集成到 ASP.NET 网络应用程序中,可为库存管理、产品跟踪和文档自动化提供强大的功能。 本教程演示如何在.NET Core项目中使用IronBarCode生成条码——这是一个支持超过30种格式的条码库,包括二维码、数据矩阵、Code 128和UPC A。

以下快捷示例显示如何创建一个Code 128条码,并将其作为PNG图像从MVC控制器操作返回:

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

public IActionResult GenerateBarcode(string data)
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128);
    barcode.ResizeTo(400, 120);
    barcode.AddBarcodeValueTextBelowBarcode();
    byte[] barcodeBytes = barcode.ToPngBinaryData();
    return File(barcodeBytes, "image/png");
}
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

public IActionResult GenerateBarcode(string data)
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128);
    barcode.ResizeTo(400, 120);
    barcode.AddBarcodeValueTextBelowBarcode();
    byte[] barcodeBytes = barcode.ToPngBinaryData();
    return File(barcodeBytes, "image/png");
}
$vbLabelText   $csharpLabel

开始您的免费试用以便跟随下面的完整教程代码示例。

如何在.NET Core项目中安装条码库?

将条码生成功能添加到ASP.NET Core Web应用程序中需要安装IronBarCode NuGet包。 打开 Visual Studio,使用软件包管理器控制台安装依赖项:

Install-Package BarCode

该包兼容.NET Core 6、7、8、10及更新版本,以及.NET Framework 4.6.2+。 该库会自动处理所有依赖项,无需额外的条码字体或系统配置。 安装后,将命名空间引用添加到控制器或服务文件中:

using IronBarCode;
using IronBarCode;
$vbLabelText   $csharpLabel

支持哪些.NET版本和平台?

IronBarCode支持所有现代.NET运行时:

  • .NET 10, 9, 8, 7, 6——完全支持的LTS和STS发布
  • .NET Framework 4.6.2+——遗留应用支持
  • 部署目标——Windows、Linux、macOS、Docker、Azure、AWS
  • 移动目标——通过.NET MAUI支持Android和iOS

无需外部GD库、本机编解码器或条码字体安装。 该库完全自包含并内部解决所有编码逻辑。

如何将命名空间添加到控制器?

安装NuGet包后,在需要生成条码的任何控制器、服务或Razor Page模型顶部引用IronBarCode命名空间:

using IronBarCode;
using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
$vbLabelText   $csharpLabel

这条BarcodeReader,以及用于生成和读取条码的所有支持类型。

如何在ASP.NET Core Web应用程序中生成条码?

在MVC控制器中创建条码涉及使用IronBarCode的BarcodeWriter类。 以下示例演示了一个完整的控制器操作,根据用户提供的网址或文本创建一个Code 128条码:

using IronBarCode;
using Microsoft.AspNetCore.Mvc;

public class BarcodeController : Controller
{
    public IActionResult GenerateBarcode(string data)
    {
        // Generate barcode from input data
        GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
            data,
            BarcodeWriterEncoding.Code128);
        barcode.ResizeTo(400, 120);
        barcode.AddBarcodeValueTextBelowBarcode();
        // Return as image for display in browser
        byte[] barcodeBytes = barcode.ToPngBinaryData();
        return File(barcodeBytes, "image/png");
    }
}
using IronBarCode;
using Microsoft.AspNetCore.Mvc;

public class BarcodeController : Controller
{
    public IActionResult GenerateBarcode(string data)
    {
        // Generate barcode from input data
        GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
            data,
            BarcodeWriterEncoding.Code128);
        barcode.ResizeTo(400, 120);
        barcode.AddBarcodeValueTextBelowBarcode();
        // Return as image for display in browser
        byte[] barcodeBytes = barcode.ToPngBinaryData();
        return File(barcodeBytes, "image/png");
    }
}
$vbLabelText   $csharpLabel

输出条形码图像

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像1 - 生成的条码

BarcodeWriter.CreateBarcode()方法接受条码数据作为第一个参数,编码格式作为第二个参数。 这种方法根据用户输入或数据库值动态创建条码。

要将条码图像保存到项目文件夹中,请使用SaveAsImage()方法:

barcode.SaveAsImage("wwwroot/images/generated-barcode.png");
barcode.SaveAsImage("wwwroot/images/generated-barcode.png");
$vbLabelText   $csharpLabel

该库支持多种输出格式,包括 PNG、GIF、BMP、SVG 和 JPEG。 您也可以将条码作为HTML导出,直接嵌入到网页中。

如何将条码作为文件下载返回?

为了将条码返回为可下载的文件而不是内嵌图像,在响应中设置Content-Disposition头:

public IActionResult DownloadBarcode(string data)
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128);
    barcode.ResizeTo(400, 120);
    byte[] pdfBytes = barcode.ToPdfBinaryData();
    return File(pdfBytes, "application/pdf", "barcode.pdf");
}
public IActionResult DownloadBarcode(string data)
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128);
    barcode.ResizeTo(400, 120);
    byte[] pdfBytes = barcode.ToPdfBinaryData();
    return File(pdfBytes, "application/pdf", "barcode.pdf");
}
$vbLabelText   $csharpLabel

这种模式对于运输标签生成、产品标签工作流程以及任何终端用户需要直接保存或打印条码文档的场景非常有用。

Web 应用程序支持哪些 BarCode 类型?

IronBarCode支持超过30种格式。 以下是如何创建最常用类型的详细信息:

二维码生成

// Create QR Code with custom size
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode(
    "https://example.com/product/12345",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium);
qrCode.SaveAsPng("product-qr.png");
// Create QR Code with custom size
GeneratedBarcode qrCode = QRCodeWriter.CreateQrCode(
    "https://example.com/product/12345",
    500,
    QRCodeWriter.QrErrorCorrectionLevel.Medium);
qrCode.SaveAsPng("product-qr.png");
$vbLabelText   $csharpLabel

输出 QR 代码

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像2 - 与ASP .NET条码生成相关的6个图像中的第2个

QR 代码生成支持纠错级别,该级别可确定代码在可读状态下可被损坏的程度。 对于预期会有物理磨损的打印二维码应用,请使用 "中 "或 "高"。 了解更多关于二维码定制选项的信息。

数据矩阵和其他 2D 格式

// Create Data Matrix barcode
GeneratedBarcode dataMatrix = BarcodeWriter.CreateBarcode(
    "DMX-2024-001",
    BarcodeWriterEncoding.DataMatrix);
dataMatrix.SaveAsGif("datamatrix.gif");
// Create Data Matrix barcode
GeneratedBarcode dataMatrix = BarcodeWriter.CreateBarcode(
    "DMX-2024-001",
    BarcodeWriterEncoding.DataMatrix);
dataMatrix.SaveAsGif("datamatrix.gif");
$vbLabelText   $csharpLabel

输出数据矩阵

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像3 - 生成的数据矩阵

数据矩阵 BarCode 适用于需要紧凑、高密度编码的场景。 该库还生成PDF417、Aztec和MaxiCode格式。 与线性格式相比,这些二维条形码类型存储的数据要多得多,同时还能保持可靠的扫描精度。

线性条形码(UPC、EAN、Code 39)

// Create UPC-A barcode for retail products
GeneratedBarcode upcBarcode = BarcodeWriter.CreateBarcode(
    "012345678905",
    BarcodeWriterEncoding.UPCA);
upcBarcode.SaveAsPng("upc-barcode.png");
// Create UPC-A barcode for retail products
GeneratedBarcode upcBarcode = BarcodeWriter.CreateBarcode(
    "012345678905",
    BarcodeWriterEncoding.UPCA);
upcBarcode.SaveAsPng("upc-barcode.png");
$vbLabelText   $csharpLabel

输出

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像4 - 生成的条码

UPC A和EAN条码包含自动校验和验证,防止在条码生成过程中出现编码错误。 有关支持格式的完整列表,请参阅条码格式参考

如何自定义和样式化条码图像?

为Web应用程序设计条码涉及调整颜色、字体、边距和注释。 流畅的 API 使定制变得简单:

GeneratedBarcode styledBarcode = BarcodeWriter.CreateBarcode(
    "STYLED-2024",
    BarcodeWriterEncoding.Code128);
// Apply styling
styledBarcode.ResizeTo(450, 150);
styledBarcode.SetMargins(20);
styledBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);
styledBarcode.AddAnnotationTextAboveBarcode("Product ID:");
styledBarcode.AddBarcodeValueTextBelowBarcode();
// Export to multiple formats
styledBarcode.SaveAsPng("styled-barcode.png");
styledBarcode.SaveAsPdf("styled-barcode.pdf");
GeneratedBarcode styledBarcode = BarcodeWriter.CreateBarcode(
    "STYLED-2024",
    BarcodeWriterEncoding.Code128);
// Apply styling
styledBarcode.ResizeTo(450, 150);
styledBarcode.SetMargins(20);
styledBarcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);
styledBarcode.AddAnnotationTextAboveBarcode("Product ID:");
styledBarcode.AddBarcodeValueTextBelowBarcode();
// Export to multiple formats
styledBarcode.SaveAsPng("styled-barcode.png");
styledBarcode.SaveAsPdf("styled-barcode.pdf");
$vbLabelText   $csharpLabel

有风格的 BarCode 图像

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像5 - 输出样式条码

SetMargins()方法在条码周围添加空白以提高扫描器可读性。 您可以调整注释文本的字体设置,改变字体家族和字体大小,并广泛地自定义条码样式。 该库使用系统字体渲染文本,而无需外部条码字体。

如何在Razor视图中直接嵌入条码?

对于ASP.NET MVC视图,以Base64字符串的形式生成条码,可以实现无需将文件保存到磁盘的直接HTML嵌入:

public IActionResult DisplayBarcode()
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
        "INV-2024-0042",
        BarcodeWriterEncoding.Code128);
    string base64Image = barcode.ToDataUrl();
    ViewBag.BarcodeImage = base64Image;
    return View();
}
public IActionResult DisplayBarcode()
{
    GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
        "INV-2024-0042",
        BarcodeWriterEncoding.Code128);
    string base64Image = barcode.ToDataUrl();
    ViewBag.BarcodeImage = base64Image;
    return View();
}
$vbLabelText   $csharpLabel

显示条形码

ASP .NET条码生成:为您的Web应用程序构建一个条码生成器:图像6 - 在浏览器中显示的条码

在Razor视图中,将其显示在<div>元素内:

<div class="barcode-container">
    <img src="@ViewBag.BarcodeImage" alt="Generated Barcode" />
</div>
<div class="print-actions">
    <button onclick="window.print()">Print Barcode</button>
</div>
<div class="barcode-container">
    <img src="@ViewBag.BarcodeImage" alt="Generated Barcode" />
</div>
<div class="print-actions">
    <button onclick="window.print()">Print Barcode</button>
</div>
HTML

这种方法消除了将条码图像保存到文件系统的需要,保持Web服务无状态。 完整的API参考记录了所有可用的方法和属性。

如何在ASP.NET Core中读取和扫描条码?

读取上传的图像或文件流中的条码是通过BarcodeReader类处理的。 这在接收工作流程、退货处理以及任何需要在服务器端解码扫描条码的场景中都很有用:

using IronBarCode;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

public class BarcodeScanController : Controller
{
    public IActionResult ScanBarcode(IFormFile uploadedImage)
    {
        using var stream = uploadedImage.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        if (results.Count > 0)
        {
            string decodedValue = results[0].Value;
            return Ok(new { barcode = decodedValue });
        }
        return BadRequest("No barcode detected in image.");
    }
}
using IronBarCode;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

public class BarcodeScanController : Controller
{
    public IActionResult ScanBarcode(IFormFile uploadedImage)
    {
        using var stream = uploadedImage.OpenReadStream();
        var results = BarcodeReader.Read(stream);
        if (results.Count > 0)
        {
            string decodedValue = results[0].Value;
            return Ok(new { barcode = decodedValue });
        }
        return BadRequest("No barcode detected in image.");
    }
}
$vbLabelText   $csharpLabel

System.Drawing.Bitmap对象。 它会自动检测条码格式并返回BarcodeResult对象的集合,每个对象都包含解码值、格式类型和在图像中的位置。 当多个条码出现在单一图像中时——例如在仓库货架照片上——读取器返回集合中的所有检测值,而不仅仅是第一个。

对于高吞吐量的ASP.NET应用程序而言,性能也是值得考虑的。 读取器支持兴趣区域扫描,在分析前将图像裁剪为特定像素矩形。 当条码总是出现在已知区域时,这能显著减少处理时间。

对于调整对比度以适应低质量图像或调节检测灵敏度等高级场景,请参阅条码读取文档

如何在ASP.NET中将条码导出为PDF?

在PDF文档中直接嵌入条码是运输标签、仓库标签和法规文件的常见需求。 IronBarCode支持直接保存为PDF格式:

GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
    "SHIP-2024-99471",
    BarcodeWriterEncoding.Code128);
barcode.ResizeTo(500, 150);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.SaveAsPdf("shipping-label.pdf");
GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(
    "SHIP-2024-99471",
    BarcodeWriterEncoding.Code128);
barcode.ResizeTo(500, 150);
barcode.AddAnnotationTextAboveBarcode("Shipping Label");
barcode.AddBarcodeValueTextBelowBarcode();
barcode.SaveAsPdf("shipping-label.pdf");
$vbLabelText   $csharpLabel

对于多条码PDF文档——例如一页的产品标签——分别生成每个条码并使用PDF库进行合并。 IronPDF集成指南解释了如何在现有PDF模板上盖章条码,这对于向预设计标签布局添加条码非常有用。

SaveAsPdf()方法还接受输出尺寸,以便渲染的PDF页面与标签打印机所需的物理标签大小相匹配。

如何处理条码生成错误和验证?

不同格式的条码编码规则是不同的。 例如,UPC-A要求正好为11或12位数字,EAN-13要求正好为12或13位,而Code 128在标准尺寸下的可读输出有48个字符的实用限制。 传递无效数据会引发IronBarCodeEncoderException

在控制器操作中显式处理编码错误:

public IActionResult SafeGenerate(string data, string format)
{
    try
    {
        var encoding = Enum.Parse<BarcodeWriterEncoding>(format, true);
        GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, encoding);
        return File(barcode.ToPngBinaryData(), "image/png");
    }
    catch (IronBarCodeEncoderException ex)
    {
        return BadRequest($"Encoding error: {ex.Message}");
    }
    catch (ArgumentException ex)
    {
        return BadRequest($"Unknown format: {ex.Message}");
    }
}
public IActionResult SafeGenerate(string data, string format)
{
    try
    {
        var encoding = Enum.Parse<BarcodeWriterEncoding>(format, true);
        GeneratedBarcode barcode = BarcodeWriter.CreateBarcode(data, encoding);
        return File(barcode.ToPngBinaryData(), "image/png");
    }
    catch (IronBarCodeEncoderException ex)
    {
        return BadRequest($"Encoding error: {ex.Message}");
    }
    catch (ArgumentException ex)
    {
        return BadRequest($"Unknown format: {ex.Message}");
    }
}
$vbLabelText   $csharpLabel

在生产环境中,在调用CreateBarcode()之前,验证输入数据的长度和字符集。 IronBarCode文档提供了每种支持的条码类型的格式特定编码约束。

您的下一步是什么?

使用IronBarCode构建ASP.NET条码生成器提供了一种可在.NET Core Web应用程序中创建、样式化和导出条码图像的可靠解决方案。 该库可自动处理复杂的编码标准,同时通过开发人员友好的 API 提供广泛的自定义功能。 无论是为移动扫描生成QR码、为工业应用生成数据矩阵条码,还是为零售生成UPC码,IronBarCode都可直接与ASP.NET MVC控制器和Razor页面集成。

探索这些资源以进一步了解:

您可以在免费评估期内测试完整功能集。 对于生产部署和商业用途,请查看许可选项以选择符合您项目需求的适当许可。 该库支持位图和矢量导出,每个版本都保持在Windows、Linux、Android和iOS部署目标之间的兼容性。

有关疑问、与其他.NET条码库的基准测试、或企业集成支持,请访问IronBarCode支持门户

立即开始使用 IronBarcode。
green arrow pointer

常见问题解答

IronBarcode在ASP.NET Core中支持哪些条形码格式?

IronBarcode支持超过 30 种条形码格式,包括 QR 码、Data Matrix、Code 128、UPC-A、EAN-13、Code 39、PDF417、Aztec、MaxiCode、ITF 等。它同时支持一维线性条形码和二维矩阵条形码。

如何从ASP.NET MVC 控制器中将生成的条形码作为图像返回?

调用 BarcodeWriter.CreateBarcode() 并传入数据和编码格式,然后使用 ToPngBinaryData() 获取字节数组,并通过控制器操作中的 File(bytes, 'image/png') 返回该数组。

IronBarcode能否读取ASP.NET中上传图片中的条形码?

是的。可以使用 `BarcodeReader.Read()` 方法,并传入一个 `IFormFile` 流来解码用户上传图片中的条形码。读取器会将所有检测到的条形码返回为一个 `BarcodeResult` 对象集合。

如何在不保存文件的情况下将条形码嵌入Razor视图中?

调用 barcode.ToDataUrl() 获取 Base64 数据 URL 字符串,将其分配给 ViewBag,并在Razor视图中将其作为 img 元素的 src 属性呈现。

IronBarcode支持哪些.NET版本?

IronBarcode支持.NET 6、7、8、9、10 和.NET Framework 4.6.2+。它可在 Windows、Linux、macOS、Docker、Azure、AWS、Android 和 iOS 上运行。

在ASP.NET中如何处理无效条形码数据?

将 BarcodeWriter.CreateBarcode() 函数用 try-catch 语句包裹起来,以捕获 IronBarCodeEncoderException 异常。在编码之前,根据格式特定的约束条件验证输入长度和字符集,以防止出现异常。

IronBarcode能否将条形码导出为PDF格式?

是的。对任何 GeneratedBarcode 对象调用 SaveAsPdf() 方法即可生成 PDF 文件。该方法接受输出路径和可选的页面尺寸(用于匹配实际标签尺寸)。

使用IronBarcode是否需要条形码字体?

不IronBarcode是一个独立的程序,它在内部处理所有编码和渲染工作。无需条形码字体、GD 库或额外的系统配置。

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

钢铁支援团队

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