在 .NET 应用程序中,使用 Aspose.BarCode 图书馆创建 39 代码和 39 的完整 ASCII 条码. 此指南提供步骤指示、 C# 编码样本和个性化提示.

引入

本文解释了如何创建代码39和代碼39完整的ASCII条形码用于资产管理、存储跟踪和使用 Aspose.BarCode for .NET 的其他应用程序.

什么是代码39和代号39完整的ASCII条码?

代码39是一个广泛使用的1D条码,支持顶级字母、数字和几个符号 - 理想的资产标签、存储系统、图书馆管理和身份证.

快速启动(最小例子)

下面的最小例子表明如何在C#中创建一个基本代码39条码#:

using Aspose.BarCode.Generation;
var generator = new BarcodeGenerator(EncodeTypes.Code39, "ABC1234");
generator.Save("asset-code39.png", BarCodeImageFormat.Png);

原則

  • Visual Studio 2019 或以后
  • .NET 6.0+ 或 .NET Framework 4.6.2+
  • Aspose.BarCode 为 .NET (NuGet)
  • 基本的C#知识
PM> Install-Package Aspose.BarCode 

步骤实施

第39章 例子:

using Aspose.BarCode.Generation;
BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.Code39, "ASSET2025");
gen.Save("asset-code39.png", BarCodeImageFormat.Png);

代码 39 完整 ASCII (扩展) 示例:

BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.Code39Extended, "Asset#1234_ABC");
gen.Save("asset-code39ext.png", BarCodeImageFormat.Png);

定制条形码的出现

  • 查看数字: csgen.Parameters.Barcode.Code39.EnableChecksum = true;
  • 酒吧高度/宽度: csgen.Parameters.Barcode.BarHeight.Pixels = 80; gen.Parameters.Barcode.XDimension.Pixels = 2;
  • 色彩/背景: csgen.Parameters.Barcode.BarColor = Color.DarkGreen; gen.Parameters.Barcode.BackColor = Color.White;
  • 主条目: csgen.Parameters.CaptionBelow.Visible = true;
  • 全 ASCII 模式: EncodeTypes.Code39Extended

支持的输出格式

  • PNG,JPEG,BMP —印刷和网页
  • TIFF — 高级/档案
  • SVG,EMF — 可扩展图形

麻烦解决与常见问题

  • 行李箱不扫描?- 确保只使用有效的字符(A-Z, 0-9, - $ % . / + 基本代码 39 的空间).

  • 对于特殊字符,请使用 Code39Extended.

  • 查看错误吗?- 启用或禁用支票,以匹配您的扫描仪配置.

  • 小标签不适合吗?- 调整字符串高度和XD尺寸;使用代码39以上的Code128以获得较少的密码.

FAQ

**Q:代码39和完整ASCII39之间的区别是什么?**答:标准代码 39 只支持一个有限的字符集. 完整 ASCII 模式(扩展) 允许通过将其编码为两个符号序列,所有 AS CII 的字体.**Q:检查数字是强制性的吗?**答:在代码39中是可选的,只有当您的工作流或扫描仪需要时才能启用.

使用案例和应用程序

  • 资产和设备标签
  • 图书馆与学校管理
  • Inventory / 存储室跟踪
  • 工业和ID标志

最佳实践:快速参考表

提示不要
卡车使用 A-Z, 0-9, -.$%./+ (基本)使用基本模式下载
全 ASCII使用代码39扩展到符号预期符号在基本模式
输出格式SVG/PNG 为 CRISP 输出印刷低 JPG
查看数字只有在需要时才能可随机

结论

代码39是资产、存储和图书馆条码的背景。Aspose.BarCode for .NET 为每个场景提供灵活的选项 Aspose.BarCode API 参考 更先进的条形码功能.

高级自定义选项

动态条码内容生成

在实际项目中,条码内容往往来源于数据库或实时计算。可以通过字符串插值或 String.Format 动态生成,例如:

string assetId = GetAssetIdFromDb();
string barcodeText = $"ASSET-{assetId:D6}"; // ASSET-000123
var gen = new BarcodeGenerator(EncodeTypes.Code39Extended, barcodeText);

这样即使在批量生成时也能保持每个条码唯一。

条码图像后处理

生成的条码图像可以直接保存为文件,也可以在内存中进一步处理,例如添加水印、合并到PDF或进行颜色转换。使用 MemoryStream 配合 System.Drawing 示例:

using (var ms = new MemoryStream())
{
    gen.Save(ms, BarCodeImageFormat.Png);
    using var bmp = new Bitmap(ms);
    using var g = Graphics.FromImage(bmp);
    g.DrawString("公司内部", new Font("Arial", 10), Brushes.Red, new PointF(5, bmp.Height - 20));
    bmp.Save("asset-with-watermark.png", ImageFormat.Png);
}

此方式适用于需要在条码旁边添加说明文字或品牌标识的场景。

性能优化与批量生成

使用内存流批量生成

如果一次性生成数千甚至上万条码,频繁的磁盘 I/O 会拖慢速度。推荐使用 MemoryStream 将图像保存在内存中,再统一写入磁盘或上传到云存储。

var list = new List<string>{"A001","A002","A003"};
foreach (var code in list)
{
    var gen = new BarcodeGenerator(EncodeTypes.Code39, code);
    using var ms = new MemoryStream();
    gen.Save(ms, BarCodeImageFormat.Png);
    // 这里可以把 ms.ToArray() 写入数据库或压缩成 zip 包
}

多线程生成建议

.NET 的 Parallel.ForEach 能够充分利用多核 CPU,加速批量生成。但要注意 BarcodeGenerator 实例不要跨线程共享,最好在每个循环体内部创建。

Parallel.ForEach(list, code =>
{
    var gen = new BarcodeGenerator(EncodeTypes.Code39Extended, code);
    gen.Save($"{code}.png", BarCodeImageFormat.Png);
});

通过上述方式,生成 10,000 条码只需几秒钟即可完成。

常见错误深度剖析

检查位导致的扫描失败

启用检查位后,条码宽度会略微增加。如果扫描设备的解码阈值设置得太低,可能会出现读取错误。解决方案是:

  1. 根据扫描仪手册调节对比度阈值;
  2. 适当增加 BarHeightXDimension
  3. 在不需要强校验的场景下关闭 EnableChecksum

字符集不匹配的处理

使用基本 Code39 时,字符只能是 A‑Z、0‑9 以及 - $ % . / +。如果误将中文或其他特殊符号放入,会直接抛出 ArgumentException。此时应改用 EncodeTypes.Code39Extended,它会把任意 ASCII(包括空格)映射为两字符序列,从而避免异常。

图像模糊与分辨率

打印机分辨率低于 203 DPI 时,细条可能出现锯齿。可以通过增大 BarHeight 或使用矢量格式(SVG、EMF)来避免。矢量格式在放大或缩小时保持锐利,是高质量标签的首选。

通过上述高级自定义、性能优化及错误排查技巧,开发者能够在 .NET 环境下高效、可靠地生成符合业务需求的 Code39 与 Code39Extended 条码。

More in this category