在ASP.NET Core Web 应用程序中生成条形码
将条形码生成集成到 ASP.NET 网络应用程序中,可为库存管理、产品跟踪和文档自动化提供强大的功能。 本教程演示如何在.NET Core项目中使用IronBarcode生成条形码——一个支持30多种格式的条形码库,包括QR Code、Data Matrix、Code 128和UPC A。
以下简单示例展示了如何创建 Code 128 条形码,并从 MVC 控制器操作中将其作为 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");
}
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");
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
Public Function GenerateBarcode(data As String) As IActionResult
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128)
barcode.ResizeTo(400, 120)
barcode.AddBarcodeValueTextBelowBarcode()
Dim barcodeBytes As Byte() = barcode.ToPngBinaryData()
Return File(barcodeBytes, "image/png")
End Function
立即开始免费试用,即可跟随以下完整的教程代码示例进行学习。
如何在.NET Core项目中安装条形码库?
将条形码生成功能添加到ASP.NET Core网络应用程序需要安装IronBarcode NuGet包。 打开 Visual Studio,使用软件包管理器控制台安装依赖项:
Install-Package BarCode
该软件包与.NET Core 6、7、8、10 及更高版本以及.NET Framework 4.6.2+ 兼容。 该库会自动处理所有依赖项,无需额外的条形码字体或系统配置。 安装完成后,将命名空间引用添加到控制器或服务文件中:
using IronBarCode;
using IronBarCode;
Imports IronBarCode
支持哪些.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页面模型的顶部引用IronBarCode命名空间:
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
using IronBarCode;
using Microsoft.AspNetCore.Mvc;
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
这个BarcodeReader以及所有支持生成和读取条形码的类型。
如何在ASP.NET Core Web 应用程序中生成条形码?
在MVC控制器中创建条形码需要使用IronBarcode的BarcodeWriter类。 以下示例演示了一个完整的控制器操作,该操作可根据用户提供的 URL 或文本创建 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");
}
}
Imports IronBarCode
Imports Microsoft.AspNetCore.Mvc
Public Class BarcodeController
Inherits Controller
Public Function GenerateBarcode(data As String) As IActionResult
' Generate barcode from input data
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128)
barcode.ResizeTo(400, 120)
barcode.AddBarcodeValueTextBelowBarcode()
' Return as image for display in browser
Dim barcodeBytes As Byte() = barcode.ToPngBinaryData()
Return File(barcodeBytes, "image/png")
End Function
End Class
输出条形码图像

BarcodeWriter.CreateBarcode()方法接受条形码数据作为第一个参数,编码格式作为第二个参数。 这种方法可以根据用户输入或数据库值动态创建条形码。
要将条形码图像保存到项目文件夹中,请使用SaveAsImage()方法:
barcode.SaveAsImage("wwwroot/images/generated-barcode.png");
barcode.SaveAsImage("wwwroot/images/generated-barcode.png");
barcode.SaveAsImage("wwwroot/images/generated-barcode.png")
该库支持多种输出格式,包括 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");
}
Public Function DownloadBarcode(data As String) As IActionResult
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(data, BarcodeWriterEncoding.Code128)
barcode.ResizeTo(400, 120)
Dim pdfBytes As Byte() = barcode.ToPdfBinaryData()
Return File(pdfBytes, "application/pdf", "barcode.pdf")
End Function
这种模式适用于生成货运标签、产品标签工作流程,以及最终用户需要直接保存或打印条形码文档的任何场景。
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");
' Create QR Code with custom size
Dim qrCode As GeneratedBarcode = QRCodeWriter.CreateQrCode( _
"https://example.com/product/12345", _
500, _
QRCodeWriter.QrErrorCorrectionLevel.Medium)
qrCode.SaveAsPng("product-qr.png")
输出 QR 代码

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");
' Create Data Matrix barcode
Dim dataMatrix As GeneratedBarcode = BarcodeWriter.CreateBarcode( _
"DMX-2024-001", _
BarcodeWriterEncoding.DataMatrix)
dataMatrix.SaveAsGif("datamatrix.gif")
输出数据矩阵

数据矩阵 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
输出

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");
Dim styledBarcode As GeneratedBarcode = 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")
有风格的 BarCode 图像

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();
}
Public Function DisplayBarcode() As IActionResult
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode("INV-2024-0042", BarcodeWriterEncoding.Code128)
Dim base64Image As String = barcode.ToDataUrl()
ViewBag.BarcodeImage = base64Image
Return View()
End Function
显示条形码

在Razor视图中,将其显示在 这种方法无需将条形码图像保存到文件系统中,从而保持 Web 服务的无状态性。 完整的 API 参考文档记录了所有可用的方法和属性。 从上传的图片或文件流中读取条形码由 对于高吞吐量的ASP.NET应用程序来说,性能也是值得考虑的因素。 该阅读器支持感兴趣区域扫描,可在分析之前将图像裁剪到特定的像素矩形区域。 当条形码始终出现在图像的已知区域时,这将显著减少处理时间。 对于调整低质量图像对比度或调整检测灵敏度等高级场景,请参阅条形码读取文档。 直接在 PDF 文档中生成嵌入条形码是运输标签、仓库标签和合规文件的常见要求。 IronBarcode支持直接保存为PDF格式: 对于多条形码 PDF 文档(例如,一页产品标签),分别生成每个条形码,然后使用 PDF 库将它们组合起来。 IronPDF集成指南解释了如何在现有PDF模板上盖上条形码,对于向预设计标签布局添加条形码很有用。 条形码编码规则因格式而异。 例如,UPC-A 需要 11 或 12 位数字,EAN-13 需要 12 或 13 位数字,而 Code 128 在标准尺寸下可读输出的实际限制为 48 个字符。 传递无效数据将引发 在控制器操作中显式处理编码错误: 在生产环境中,调用 使用IronBarcode构建ASP.NET条形码生成器为在.NET Core网络应用程序中创建、样式化和导出条形码图像提供了可靠的解决方案。 该库可自动处理复杂的编码标准,同时通过开发人员友好的 API 提供广泛的自定义功能。 无论是为移动扫描生成二维码,用于工业应用的Data Matrix条形码,还是用于零售的UPC码,IronBarcode都可以直接与ASP.NET MVC控制器和Razor页面集成。 探索以下资源,了解更多信息: 在免费试用期内,您可以体验所有功能。 对于生产部署和商业用途,请查看许可选项,选择适合您项目需求的许可证。 该库支持位图和矢量导出,每个版本都保持与 Windows、Linux、Android 和 iOS 部署目标的兼容性。 如有疑问,或需要与.NET的其他条形码库进行基准测试,或需要企业集成支持,请访问IronBarcode支持门户。 IronBarcode支持超过 30 种条形码格式,包括 QR 码、Data Matrix、Code 128、UPC-A、EAN-13、Code 39、PDF417、Aztec、MaxiCode、ITF 等。它同时支持一维线性条形码和二维矩阵条形码。 调用 BarcodeWriter.CreateBarcode() 并传入数据和编码格式,然后使用 ToPngBinaryData() 获取字节数组,并通过控制器操作中的 File(bytes, 'image/png') 返回该数组。 是的。可以使用 `BarcodeReader.Read()` 方法,并传入一个 `IFormFile` 流来解码用户上传图片中的条形码。读取器会将所有检测到的条形码返回为一个 `BarcodeResult` 对象集合。 调用 barcode.ToDataUrl() 获取 Base64 数据 URL 字符串,将其分配给 ViewBag,并在Razor视图中将其作为 img 元素的 src 属性呈现。 IronBarcode支持.NET 6、7、8、9、10 和.NET Framework 4.6.2+。它可在 Windows、Linux、macOS、Docker、Azure、AWS、Android 和 iOS 上运行。 将 BarcodeWriter.CreateBarcode() 函数用 try-catch 语句包裹起来,以捕获 IronBarCodeEncoderException 异常。在编码之前,根据格式特定的约束条件验证输入长度和字符集,以防止出现异常。 是的。对任何 GeneratedBarcode 对象调用 SaveAsPdf() 方法即可生成 PDF 文件。该方法接受输出路径和可选的页面尺寸(用于匹配实际标签尺寸)。 不IronBarcode是一个独立的程序,它在内部处理所有编码和渲染工作。无需条形码字体、GD 库或额外的系统配置。<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>如何在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.");
}
}Imports IronBarCode
Imports Microsoft.AspNetCore.Http
Imports Microsoft.AspNetCore.Mvc
Public Class BarcodeScanController
Inherits Controller
Public Function ScanBarcode(uploadedImage As IFormFile) As IActionResult
Using stream = uploadedImage.OpenReadStream()
Dim results = BarcodeReader.Read(stream)
If results.Count > 0 Then
Dim decodedValue As String = results(0).Value
Return Ok(New With {.barcode = decodedValue})
End If
Return BadRequest("No barcode detected in image.")
End Using
End Function
End ClassSystem.Drawing.Bitmap对象。 它会自动检测条形码格式,并返回一个BarcodeResult对象集合,每个对象包含解码值、格式类型和在图像中的位置。 当多个条形码出现在单个图像中时(例如,在仓库货架照片上),读取器会返回集合中检测到的所有值,而不仅仅是第一个值。如何在ASP.NET中将条形码导出为 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");Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode( _
"SHIP-2024-99471", _
BarcodeWriterEncoding.Code128)
barcode.ResizeTo(500, 150)
barcode.AddAnnotationTextAboveBarcode("Shipping Label")
barcode.AddBarcodeValueTextBelowBarcode()
barcode.SaveAsPdf("shipping-label.pdf")SaveAsPdf()方法也接受输出尺寸,使渲染的PDF页面与标签打印机所要求的物理标签尺寸匹配。如何处理条形码生成错误和验证?
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}");
}
}Imports System
Public Function SafeGenerate(data As String, format As String) As IActionResult
Try
Dim encoding = [Enum].Parse(Of BarcodeWriterEncoding)(format, True)
Dim barcode As GeneratedBarcode = BarcodeWriter.CreateBarcode(data, encoding)
Return File(barcode.ToPngBinaryData(), "image/png")
Catch ex As IronBarCodeEncoderException
Return BadRequest($"Encoding error: {ex.Message}")
Catch ex As ArgumentException
Return BadRequest($"Unknown format: {ex.Message}")
End Try
End FunctionCreateBarcode()之前验证输入数据长度和字符集。 IronBarcode文档提供每种支持的条形码类型的格式特定编码约束。下一步计划是什么?
常见问题解答
IronBarcode在ASP.NET Core中支持哪些条形码格式?
如何从ASP.NET MVC 控制器中将生成的条形码作为图像返回?
IronBarcode能否读取ASP.NET中上传图片中的条形码?
如何在不保存文件的情况下将条形码嵌入Razor视图中?
IronBarcode支持哪些.NET版本?
在ASP.NET中如何处理无效条形码数据?
IronBarcode能否将条形码导出为PDF格式?
使用IronBarcode是否需要条形码字体?




