C#Zxing编码1d EAN8

时间:2013-10-27 00:34:23

标签: c# zxing

我想使用c#Zxing生成1D EAN8条形码。我只能找到生成二维码的代码示例和文档

      var writer = new BarcodeWriter
  {
     Format = BarcodeFormat.QR_CODE,
     Options = new QrCodeEncodingOptions
     {
        Height = height,
        Width = width
     }
  };
  return writer.Write(textForEncoding);

我可以运行并正常工作,但没有“1DCodeEncodingOptions”或类似命名的函数。我试过了

      var writer = new BarcodeWriter
  {
     Format = BarcodeFormat.EAN_8

  };
  return writer.Write("1234567");

但它会导致索引错误。

编辑:我现在语法正确,但它没有生成正确的条形码,因为我不知道它所期望的大小,并且似乎没有默认值。

使用ZXing; 使用ZXing.OneD

  var writer = new BarcodeWriter
  {
     Format = BarcodeFormat.EAN_8,
        Options = new ZXing.Common.EncodingOptions
        {
            Height = 100,
            Width = 300
        }
  };
  return writer.Write("12345678");

1 个答案:

答案 0 :(得分:1)

12345678不是有效的EAN8条形码。 1234567的校验位为0.有关如何计算校验和的信息,请参阅EAN 8 : How to calculate checksum digit?

ZXing不会阻止你创建无效的条形码(至少在我正在使用的版本0.11中,虽然Codeplex上的当前源看起来像它),但它们不会扫描。扫描程序使用校验和来确保它已正确读取数据。

如果您打算在商业中使用EAN8,则需要从您的国家GS1 Member Organization获取GTIN-8。如果您只打算在商店中销售它们,则应使用限制发行版之一prefixes

如果您不需要将产品放入零售供应链,我建议采用不同的条形码格式。

Interleaved 2 of 5(BarcodeFormat.ITF)非常紧凑,但只能包含数字;它没有任何自我检查,并且存在一个设计缺陷,允许条形码从某些角度被误读。建议您在条形码的顶部和底部放置黑条(称为Bearer Bars)。我在ZXing看不到这个选项。

下一个最紧凑的格式是Code 128(BarcodeFormat.CODE_128),使用代码集C.它在一个模块中编码两个数字(一个六个条和空格的块)。格式是自检(总是有一个检查字符,由扫描仪剥离)。某些扫描仪无法正确处理代码集C.要强制使用代码集B,请使用Code128EncodingOptions代替Common.EncodingOptions并将ForceCodesetB设置为true