在 .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 条码只需几秒钟即可完成。
常见错误深度剖析
检查位导致的扫描失败
启用检查位后,条码宽度会略微增加。如果扫描设备的解码阈值设置得太低,可能会出现读取错误。解决方案是:
- 根据扫描仪手册调节对比度阈值;
- 适当增加
BarHeight或XDimension; - 在不需要强校验的场景下关闭
EnableChecksum。
字符集不匹配的处理
使用基本 Code39 时,字符只能是 A‑Z、0‑9 以及 - $ % . / +。如果误将中文或其他特殊符号放入,会直接抛出 ArgumentException。此时应改用 EncodeTypes.Code39Extended,它会把任意 ASCII(包括空格)映射为两字符序列,从而避免异常。
图像模糊与分辨率
打印机分辨率低于 203 DPI 时,细条可能出现锯齿。可以通过增大 BarHeight 或使用矢量格式(SVG、EMF)来避免。矢量格式在放大或缩小时保持锐利,是高质量标签的首选。
通过上述高级自定义、性能优化及错误排查技巧,开发者能够在 .NET 环境下高效、可靠地生成符合业务需求的 Code39 与 Code39Extended 条码。