1

我们使用 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。 https://stackoverflow.com/a/43575418/823247

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);

任何建议将被认真考虑。

4

2 回答 2

1

而不是“(char)29”,您必须使用值“(char)0x00F1”作为组分隔符。

于 2017-08-10T07:09:28.623 回答
0

有一种更简单的方法可以通过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

于 2021-03-16T10:17:35.857 回答