使用ZXing.Net

时间:2017-08-10 01:32:25

标签: c# barcode zxing.net

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

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

enter image description here

最近我们被要求将格式更改为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);

enter image description here

但是,如果我们将条形码格式更改为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);

任何建议都将受到赞赏。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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;

但是原来的解决方法是在字符串https://github.com/micjahn/ZXing.Net/wiki/Generating-GS1-DataMatrix-and-GS1-Code128-barcodes的开头手动添加FNC1字符