使用 ZXing.Net 生成 GS1-128

Generate GS1-128 using ZXing.Net

我们使用 ZXing.Net 生成代码 128 条码,一切正常。

BarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.CODE_128 };
writer.Write("01950123456789031000012317150801").Save("code128.png", ImageFormat.Png);

最近我们被要求将格式更改为 GS1-128,经过一些研究,我们发现此解决方案使用 FNC1 (ASCII 29) 来编写 DataMatrix GS1。

BarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.DATA_MATRIX };
writer.Write($"{(char)29}019501234567890310000123{(char)29}17150801").Save("gs1datamatrix.png", ImageFormat.Png);

但是,如果我们将条形码格式更改为BarcodeFormat.CODE_128,程序将抛出异​​常显示Bad character in input:

BarcodeWriter writer = new BarcodeWriter { Format = BarcodeFormat.CODE_128 };
writer.Write($"{(char)29}019501234567890310000123{(char)29}17150801").Save("gs1code128.png", ImageFormat.Png);

如有任何建议,我们将不胜感激。

您必须使用值“(char)0x00F1”代替“(char)29”作为组分隔符。

有一种更简单的方法可以通过 Zxing.Net 生成 GS1-128 条形码,而无需手动将字符 FNC1 添加到内容中。

你应该只设置标志 GS1Format = true

barcodeWriterSvg.Format = BarcodeFormat.CODE_128;
barcodeWriterSvg.Options.GS1Format = true;
barcodeWriterSvg.Options.Margin = 64;

var svgImage = barcodeWriterSvg.Write(content);
return svgImage.Content;

但原始解决方案基于手动将 FNC1 字符添加到字符串的开头 https://github.com/micjahn/ZXing.Net/wiki/Generating-GS1-DataMatrix-and-GS1-Code128-barcodes