跳至页脚内容
USING IRONBARCODE

Xamarin 条形码生成器:使用IronBarcode在 C# 中生成条形码

在 Xamarin 应用程序中创建条形码不必复杂或耗时。 借助IronBarcode,开发人员只需几行 C# 代码即可在 Android 和 iOS 平台上生成专业品质的条形码和二维码。 这个.NET条形码库消除了对特定于平台的实现的需求,同时提供了企业级功能,可在您的 Xamarin Forms 或原生 Xamarin 项目中的所有移动设备上保持一致。

本文演示了如何使用IronBarcode在跨平台移动应用程序中实现条形码生成系统。 您将学习如何通过NuGet安装库,生成各种条形码格式(包括二维码),使用颜色和注释自定义外观,以及以多种文件格式导出结果——所有这些都是在保持简洁、易于维护的 C# 代码的同时完成的,该代码可在 Android 和 iOS 上运行。

为什么 Xamarin Forms 需要专业的条形码库?

在 Xamarin.Forms 中从头开始实现条形码生成需要处理复杂的编码算法、管理平台特定的渲染差异,并确保在各种条形码符号体系中都能准确输出。 专业的 .NET 条形码库,例如 IronBarcode,通过提供统一的 API 来消除这些挑战,该 API 通过简单的 C# 方法在内部处理所有技术复杂性。

IronBarcode 支持 30 多种条形码格式,包括 QR 码、Code 128、Code 39、EAN-13、UPC-A、Data Matrix、PDF 417 和 Aztec 码。 每种格式都针对特定使用场景进行了优化。 例如,二维码擅长存储网址和大量文本数据,EAN-13 用于零售产品,而 Code 128 提供高密度字母数字编码。 该库会自动计算校验和,应用适当的纠错级别,并确保符合 GS1 标准,以满足商业应用需求。

IronBarcode的跨平台特性确保无论目标平台是 Android 还是 iOS,您的条形码生成代码都保持不变。 这种一致性不仅限于 Xamarin 应用程序——相同的代码可以在ASP.NET Web 应用程序、桌面软件和 Docker 容器中运行,使其成为具有多样化部署需求的企业的理想选择。 了解更多关于IronBarcode跨平台功能的信息

Xamarin 与.NET MAUI:理解上下文

多年来,Xamarin 一直是微软面向 C# 开发人员的主要跨平台移动开发框架。 虽然微软现在已经过渡到.NET MAUI作为现代继任者,但许多生产应用程序仍然运行在 Xamarin.Forms 和 Xamarin.Android/iOS 上。 IronBarcode可以与这两个框架一起使用,因此本文中显示的模式同样适用于维护 Xamarin 项目或迁移到.NET MAUI。

如果您今天要启动一个全新的移动项目,请考虑使用.NET MAUI和IronBarcode。 IronBarcode .NET MAUI文档涵盖了此处所示的相同功能,并提供了.NET MAUI特定的项目设置步骤。

为什么不从零开始构建条形码逻辑?

编写自定义条形码编码逻辑会带来一些维护风险。 您必须处理特定格式的校验和算法、条形宽度计算、静区要求以及不同硬件供应商之间的扫描仪兼容性。 IronBarcode通过简洁的 API 将所有这些都抽象化了。 IronBarcode API 参考文档记录了每个方法和参数,以便您的团队可以快速找到适合每种场景的工具。

如何在 Xamarin 项目中安装IronBarcode ?

通过 NuGet 包管理器,只需几分钟即可在 Xamarin.Forms 项目中安装 IronBarcode。 打开包含跨平台移动项目的 Visual Studio 解决方案,然后按照以下步骤操作。

在解决方案资源管理器中右键单击您的解决方案,然后选择"管理解决方案的NuGet程序包"。 在"浏览"选项卡中,搜索"IronBarcode"。 选择Iron Software的官方IronBarcode软件包,并将其安装到解决方案中的所有项目中,包括共享项目和两个特定于平台的项目。 您可以查看完整的NuGet包详细信息,了解版本历史记录和依赖项。

或者,您可以使用以下命令打开软件包管理器控制台:

Install-Package BarCode
Install-Package BarCode
SHELL

对于 Android 项目,创建基本条形码不需要额外的权限。 但是,如果您计划将生成的条形码保存到外部存储,请将 WRITE_EXTERNAL_STORAGE 权限添加到您的 AndroidManifest.xml。 请查看Android 专用设置指南,了解详细的平台注意事项。

对于 iOS 项目,如果您要将二维码或条形码保存到照片图库,请将 NSPhotoLibraryAddUsageDescription 键添加到您的 Info.plist 中,并添加适当的面向用户的描述。 iOS条形码设置文档提供了完整的说明。

设置您的许可证密钥

要使用 IronBarcode 的全部功能且不带水印,您需要一个许可证密钥。 您可以获得免费试用许可证,该许可证提供对所有条形码生成功能的完整访问权限,供您评估使用。 在应用程序启动代码中设置一次许可证密钥:

IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
IronBarCode.License.LicenseKey = "YOUR-LICENSE-KEY-HERE";
$vbLabelText   $csharpLabel

如果没有许可证密钥,IronBarcode 将以评估模式运行,生成的条形码上会带有水印。 对于生产应用, Iron Software提供各种许可级别,包括单项目许可、组织级许可和专为移动应用部署设计的 SaaS 分发许可。

如何使用IronBarcode生成您的第一个条形码?

在 Xamarin.Forms 应用程序中使用 IronBarcode 创建您的第一个条形码只需要极少的 C# 代码。 以下示例生成 Code 128 条形码,将其保存为 PNG 格式,并添加人类可读的文本标签:

using IronBarCode;
using System.IO;

string filePath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.Personal),
    "barcode.png");

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeEncoding.Code128);
myBarcode.ResizeTo(500, 200);
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsPng(filePath);
using IronBarCode;
using System.IO;

string filePath = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.Personal),
    "barcode.png");

var myBarcode = BarcodeWriter.CreateBarcode("https://ironsoftware.com", BarcodeEncoding.Code128);
myBarcode.ResizeTo(500, 200);
myBarcode.AddBarcodeValueTextBelowBarcode();
myBarcode.SaveAsPng(filePath);
$vbLabelText   $csharpLabel

BarcodeWriter.CreateBarcode() 方法是条形码生成的主要入口点。 它接受两个参数:要编码的数据和来自 BarcodeEncoding 枚举的条形码格式。 该方法返回一个 GeneratedBarcode 对象,该对象通过流畅的 API 提供广泛的自定义功能。

ResizeTo() 方法调整条形码尺寸,同时保持所选符号体系的适当纵横比和条宽要求。 AddBarcodeValueTextBelowBarcode() 在条形图下方添加人类可读的文本,这是许多零售和库存管理场景所必需的。 查阅完整的BarcodeWriter API 参考文档,了解高级功能。

输出

如何在 Xamarin 中使用IronBarcode生成条形码:图 10 - PDF417 输出

为移动应用生成二维码

要在您的 Xamarin 条形码扫描器应用程序中生成 QR 码,请使用专用的 QRCodeWriter 类。 二维码非常适合移动应用,因为设备摄像头无需专用硬件即可快速扫描它们:

using IronBarCode;

var qrCode = QRCodeWriter.CreateQrCode("SKU-12345|Batch-789|Exp-2025", 500);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);

byte[] barcodeBytes = qrCode.ToPngBinaryData();
using IronBarCode;

var qrCode = QRCodeWriter.CreateQrCode("SKU-12345|Batch-789|Exp-2025", 500);
qrCode.ChangeBarCodeColor(IronSoftware.Drawing.Color.DarkBlue);

byte[] barcodeBytes = qrCode.ToPngBinaryData();
$vbLabelText   $csharpLabel

QRCodeWriter.CreateQrCode() 方法专门用于创建二维码,支持嵌入徽标和颜色自定义。 第二个参数指定二维码的像素大小。 ToPngBinaryData() 方法将生成的二维码转换为字节数组,可用于存储在数据库中或通过网络传输。 查看更多二维码生成示例,了解包含嵌入式徽标等高级配置。

如何处理不同的条形码格式?

IronBarcode 广泛的格式支持使您能够生成 Xamarin.Forms 应用程序所需的条形码类型。 以下示例演示了如何从单个产品代码字符串创建 EAN-13、UPC-A、数据矩阵 和 PDF417 条形码:

using IronBarCode;

string productCode = "012345678905";

// EAN-13 for European retail
var ean13 = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.EAN13);
ean13.SaveAsPng("product_ean13.png");

// UPC-A for North American retail
var upcA = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.UPCA);
upcA.SaveAsJpeg("product_upca.jpg");

// 数据矩阵 for small items with high data density
var dataMatrix = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.数据矩阵);
dataMatrix.SaveAsPdf("product_datamatrix.pdf");

// PDF417 for driver licenses and ID cards
var pdf417 = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.PDF417);
pdf417.SaveAsTiff("product_pdf417.tiff");
using IronBarCode;

string productCode = "012345678905";

// EAN-13 for European retail
var ean13 = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.EAN13);
ean13.SaveAsPng("product_ean13.png");

// UPC-A for North American retail
var upcA = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.UPCA);
upcA.SaveAsJpeg("product_upca.jpg");

// 数据矩阵 for small items with high data density
var dataMatrix = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.数据矩阵);
dataMatrix.SaveAsPdf("product_datamatrix.pdf");

// PDF417 for driver licenses and ID cards
var pdf417 = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.PDF417);
pdf417.SaveAsTiff("product_pdf417.tiff");
$vbLabelText   $csharpLabel

每种条形码符号体系都有其特定的特点和应用场景。 EAN-13 和 UPC-A 仅需输入数字,并自动计算校验位,以确保零售扫描的准确性。 数据矩阵 擅长在最小的空间内编码大量数据,使其成为追踪电子元件和药品的理想选择。 PDF417 支持大容量数据存储,并内置纠错功能,常用于交通运输和身份识别文件。

该库会自动验证输入数据是否符合格式要求,并对无效输入抛出描述性异常。 此验证确保生成的条形码符合国际 ISO 标准,并能与零售和物流中使用的商用条形码阅读器可靠地扫描。 了解更多关于如何为您的具体应用场景选择合适的条形码格式的信息

输出

如何在 Xamarin 中使用IronBarcode生成条形码:图 9 - PDF417 输出

条形码格式比较

下表总结了最常用的条形码格式及其在移动项目中的典型应用:

移动应用条形码格式比较
翻译格式 数据类型 典型用例 条形码编码值
二维码 字母数字、二进制、URL 产品链接、联系卡、支付流程 `QRCode`
Code 128 字母数字 发货标签、库存 `Code128`
EAN-13 数字(13 位) 欧洲零售产品 `EAN13`
UPC-A 数字(12 位) 北美零售产品 `UPCA`
数据矩阵 字母数字、二进制 电子产品、药品、小标签 `数据矩阵`
PDF417 字母数字、二进制 身份证件、登机牌、交通工具 `PDF417`

如何自定义和导出用于移动用户界面的条形码?

IronBarcode提供丰富的自定义选项,以满足您的 Xamarin 应用程序的视觉需求。 以下示例展示了如何应用颜色、添加文本注释以及保存到特定平台的文件位置:

using IronBarCode;
using System.IO;
using Xamarin.Forms;

var barcode = BarcodeWriter.CreateBarcode("CUSTOM-2024", BarcodeEncoding.Code128);

// Apply styling to match your mobile UI
barcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Navy);
barcode.ChangeBackgroundColor(IronSoftware.Drawing.Color.LightGray);
barcode.SetMargins(10);

// Add human-readable annotations
barcode.AddAnnotationTextAboveBarcode("Product ID");
barcode.AddBarcodeValueTextBelowBarcode(new IronSoftware.Drawing.Font("Arial", 12));

// Determine platform-specific save path
string documentsPath;
if (Device.RuntimePlatform == Device.iOS)
{
    documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
}
else // Android
{
    documentsPath = Android.OS.Environment
        .GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads)
        .AbsolutePath;
}

// Export in multiple formats
barcode.SaveAsPng(Path.Combine(documentsPath, "barcode.png"));
barcode.SaveAsPdf(Path.Combine(documentsPath, "barcode.pdf"));
using IronBarCode;
using System.IO;
using Xamarin.Forms;

var barcode = BarcodeWriter.CreateBarcode("CUSTOM-2024", BarcodeEncoding.Code128);

// Apply styling to match your mobile UI
barcode.ChangeBarCodeColor(IronSoftware.Drawing.Color.Navy);
barcode.ChangeBackgroundColor(IronSoftware.Drawing.Color.LightGray);
barcode.SetMargins(10);

// Add human-readable annotations
barcode.AddAnnotationTextAboveBarcode("Product ID");
barcode.AddBarcodeValueTextBelowBarcode(new IronSoftware.Drawing.Font("Arial", 12));

// Determine platform-specific save path
string documentsPath;
if (Device.RuntimePlatform == Device.iOS)
{
    documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
}
else // Android
{
    documentsPath = Android.OS.Environment
        .GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads)
        .AbsolutePath;
}

// Export in multiple formats
barcode.SaveAsPng(Path.Combine(documentsPath, "barcode.png"));
barcode.SaveAsPdf(Path.Combine(documentsPath, "barcode.pdf"));
$vbLabelText   $csharpLabel

样式设置方法让您可以完全控制移动界面中条形码的外观。 可以使用 RGB 值或预定义的颜色常量来指定颜色,以匹配应用程序的主题。 SetMargins() 方法在条形码周围添加填充,防止条形码放置在图像边缘附近时出现扫描问题。

跨平台 Xamarin 开发中的文件处理需要平台感知能力。 iOS 应用应该将文件保存到文档目录或照片图库。 Android 应用通常使用外部存储目录或应用内部数据目录。 该库支持所有主流图像格式——PNG、JPEG、GIF、TIFF、BMP——以及用于文档集成的PDF。 对于更复杂的场景,请查阅条形码导出文档以了解更多输出选项。

在 Xamarin 视图中直接显示条形码

除了保存到文件之外,您还可以通过将生成的条形码转换为 StreamImageSource,直接在 Xamarin 页面中显示条形码。 这样可以避免在仅显示场景下进行不必要的磁盘读写操作:

using IronBarCode;
using System.IO;
using Xamarin.Forms;

var barcode = BarcodeWriter.CreateBarcode("ORDER-99812", BarcodeEncoding.QRCode, 300);
byte[] pngBytes = barcode.ToPngBinaryData();

barcodeImage.Source = ImageSource.FromStream(() => new MemoryStream(pngBytes));
using IronBarCode;
using System.IO;
using Xamarin.Forms;

var barcode = BarcodeWriter.CreateBarcode("ORDER-99812", BarcodeEncoding.QRCode, 300);
byte[] pngBytes = barcode.ToPngBinaryData();

barcodeImage.Source = ImageSource.FromStream(() => new MemoryStream(pngBytes));
$vbLabelText   $csharpLabel

将结果分配给任何 Xamarin 控件,方法是设置其 Source 属性。 这种模式无需文件系统权限即可工作,是订单确认屏幕或票务流程等瞬态显示用例的推荐方法。 更多详情请参阅IronBarcode图像渲染指南

在 Xamarin 中如何处理条形码扫描?

虽然本文重点介绍条形码生成,但许多 Xamarin 应用程序也需要从设备摄像头读取条形码。 IronBarcode包含一个条形码读取 API,其简洁性与生成 API 类似。 IronBarcode条码阅读器文档涵盖了完整的读取工作流程,包括多条码检测和格式过滤。

对于既生成又扫描条形码的 Xamarin 应用程序(例如,仓库收货应用程序),您可以将 BarcodeWriterBarcodeReader 类合并到同一个项目中。 这两个 API 都使用同一个NuGet包,无需任何其他依赖项。 IronBarcode 的完整示例库包含一个扫描生成工作流程,演示了这种组合方法。

错误处理和验证

生产条形码生成应始终包含错误处理,尤其是在对来自用户输入或外部系统的数据进行编码时。 IronBarcode会针对格式违规抛出类型异常——例如,将非数字字符串传递给 EAN-13 编码器。 将生成调用封装在 try-catch 块中,并向用户显示清晰的错误信息,可以提高应用程序的稳定性:

using IronBarCode;

try
{
    var barcode = BarcodeWriter.CreateBarcode(userInputValue, BarcodeEncoding.EAN13);
    barcode.SaveAsPng("output.png");
}
catch (BarcodeException ex)
{
    Console.WriteLine($"Barcode generation failed: {ex.Message}");
}
using IronBarCode;

try
{
    var barcode = BarcodeWriter.CreateBarcode(userInputValue, BarcodeEncoding.EAN13);
    barcode.SaveAsPng("output.png");
}
catch (BarcodeException ex)
{
    Console.WriteLine($"Barcode generation failed: {ex.Message}");
}
$vbLabelText   $csharpLabel

在将用户提供的值传递给条形码编码器之前,务必先验证这些值。 对于 EAN-13 等数字格式,在编码前去除空格和非数字字符。 请查看IronBarcode故障排除部分中的输入验证指南,以了解常见的数据质量问题。

下一步计划是什么?

IronBarcode将 Xamarin 应用程序中复杂的、特定于平台的条形码生成挑战简化为几行 C# 代码。 无论您需要用于移动订单流程的二维码、用于仓库标签的 Code 128 码,还是用于零售产品的 EAN-13 码,该库都提供了一个在 Android 和 iOS 上完全相同的 API,并且在ASP.NET、桌面和服务器环境中也同样适用。

为了进一步巩固你在这里学到的知识,请探索以下资源:

下载IronBarcode并开始免费试用——无需信用卡即可体验所有功能 30 天。 IronBarcode教程合集——扫描、批量生成和PDF集成的分步指南 IronBarcode示例库——提供 40 多个常见条形码任务的复制粘贴代码示例 -许可和定价——移动部署的单开发者、团队和 SaaS 许可选项

  • .NET MAUI迁移指南——如果您要将 Xamarin 项目迁移到现代.NET移动技术栈, IronBarcode无需任何代码更改即可在两种环境中正常运行。

首先安装NuGet包,然后运行上面的第一个示例,以确认您的环境已正确设置。 本文中的格式比较表和自定义示例将为您提供根据应用程序的具体要求定制条形码输出所需的一切信息。

常见问题解答

什么是 Xamarin 条形码生成器?

Xamarin 条形码生成器是一种工具或库,它使 C# 开发人员能够在 Xamarin Android 和 iOS 应用程序中创建IronBarcode和二维码。IronBarcode 通过统一的.NET API 提供此功能。

IronBarcode如何简化Xamarin中的条形码生成?

IronBarcode提供了一个单一的.NET条形码 API,该 API 在 Android 和 iOS 上运行方式完全相同,无需进行平台特定的实现,也无需手动处理编码算法或格式验证。

我可以使用IronBarcode为Android和iOS生成条形码吗?

是的。IronBarcode 支持在 Xamarin 应用程序中为 Android 和 iOS 平台生成条形码,无需更改平台特定的代码即可在不同设备上生成一致的结果。

IronBarcode在Xamarin中支持哪些条形码格式?

IronBarcode支持超过 30 种格式,包括 QR 码、Code 128、Code 39、EAN-13、UPC-A、DataMatrix、PDF417 和 Aztec 码。所有格式均可通过同一个 BarcodeEncoding 枚举进行设置。

IronBarcode是否适用于生产环境的移动应用?

是的。IronBarcode 包含输入验证、符合 ISO 标准的编码、GS1 标准支持以及用于生产版本中无水印IronBarcode的许可证密钥激活功能。

IronBarcode是否同时兼容.NET MAUI和 Xamarin?

是的IronBarcode同时支持 Xamarin 和.NET MAUI。这两个框架使用相同的NuGet包和 API,因此迁移非常简单。

如何在 Xamarin 视图中显示生成的条形码?

对生成的条形码调用 ToPngBinaryData() 以获取字节数组,然后将 ImageSource.FromStream(() => new MemoryStream(bytes)) 赋值给 Xamarin Image 控件的 Source 属性。

我可以在原生 Xamarin 项目以及 Xamarin.Forms 项目中使用IronBarcode吗?

是的。IronBarcode 既可以在 Xamarin.Forms 共享项目中运行,也可以在特定于平台的原生 Xamarin.Android 和 Xamarin.iOS 项目IronBarcode运行。

IronBarcode是否支持自定义条形码样式?

是的。您可以使用 fluent GeneratedBarcode API 更改条形码和背景颜色、设置边距、在条形码上方或下方添加注释文本以及调整字体属性。

如何开始免费试用IronBarcode?

访问 https://ironsoftware.com/csharp/barcode/ 下载免费的 30 天试用许可证密钥。安装NuGet包,在启动代码中设置许可证密钥,即可立即开始生成条形码。

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

钢铁支援团队

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