0

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

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

1 回答 1

1

12345678 不是有效的 EAN8 条形码。1234567 的校验位为 0。参见EAN 8:如何计算校验和位?了解如何计算校验和。

ZXing 不会阻止您创建无效的条形码(至少在我使用的 0.11 版本中,尽管 Codeplex 上的当前源看起来确实如此),但它们不会扫描。扫描仪使用校验和来确保它已正确读取数据。

如果您打算在商业中使用 EAN8,则需要从您的国家GS1 成员组织获得 GTIN-8 。如果您只打算在商店中出售它们,则应使用受限分发前缀之一。

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

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

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

于 2013-11-11T17:39:24.367 回答