2013-10-27 87 views
0

我想用c#Zxing生成一維EAN8條形碼。我只能夠找到的代碼示例和文檔生成二維QR碼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

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)非常緊湊,但只能包含數字;它沒有任何自我檢查,並有一個設計缺陷,使條碼從某些角度被誤讀。建議您在條形碼的頂部和底部放置黑色條(稱爲承載條)。在ZXing中我看不到這個選項。

下一個最緊湊的格式是128碼(BarcodeFormat.CODE_128),使用代碼集C.該編碼在一個模塊(六個條和間隔一個塊)兩個數字。格式是自檢(總是有一個檢查字符,它被掃描儀剝離)。某些掃描儀不能正確處理代碼集C.要強制代碼集B,請使用Code128EncodingOptions代替Common.EncodingOptions,並將ForceCodesetB設置爲true