2017-01-02 10 views
0

)HEXからPDF417バーコードを作成することはできますか?私はZXingで何か試しましたが、私の場合はエンコードされた文字列で動作しません。ZXing.Net PDF417バーコード(HEX

HEX: fe-30-09-33-31-37-30-31-30-32-30-31-f9-20-01-34-fe-30-01-20-fc-20-06 

他の発電機は、この(https://stackoverflow.com/a/39471232/3236231)を行うことができますが、今、このソリューションは、数千ドルの費用がかかります。 ZXingは私のすべてのニーズに合っていますが、私のデータを使用するための方法を見つけることはできません。予想されるように以下のコードは動作するはず

答えて

2

[Test] 
    public void Hex2Pdf417() 
    { 
    var hexStr = "fe3009333137303130323031f9200134fe300120fc2006"; 
    var byteArray = Enumerable.Range(0, hexStr.Length/2).Select(x => Convert.ToByte(hexStr.Substring(x * 2, 2), 16)).ToArray(); 
    var byteArrayAsString = new String(byteArray.Select(b => (char)b).ToArray()); 

    // encode the string as PDF417 
    var writer = new BarcodeWriter 
    { 
     Format = BarcodeFormat.PDF_417, 
     Options = new PDF417EncodingOptions 
     { 
      Height = 200, 
      Width = 200, 
      Margin = 10 
     } 
    }; 
    var bitmap = writer.Write(byteArrayAsString); 

    // try to decode the PDF417 
    var reader = new BarcodeReader 
    { 
     Options = new DecodingOptions 
     { 
      PossibleFormats = new List<BarcodeFormat> 
      { 
       BarcodeFormat.PDF_417 
      }, 
      PureBarcode = true 
     } 
    }; 
    var result = reader.Decode(bitmap); 

    // make sure, the result is the same as the original hex 
    var resultBackToBytes = result.Text.Select(c => (byte)c).ToArray(); 
    var resultAsHexString = String.Join("", resultBackToBytes.Select(b => b.ToString("x2"))); 

    Assert.That(resultAsHexString, Is.EqualTo(hexStr)); 
    } 
+0

CP850から「81」のようないくつかのHEXがエラーをスロー:検出 非符号化可能なキャラクタ(ユニコード:132) またiは復号場合バーコードここではonline-barcode-reader.inliteresearch.com、それは保存されたHEXデータが元のHEXではないことを示します。 "FE"は "5F"として保存されます。 – user3236231

+1

いくつかの小さなエラーのため、ZXing.Netの現在のバージョン0.14ではすべての状況でコードが正しく動作しません。 – Michael

+0

ありがとう!これは、ソースコードの最新バージョンと完全に動作しています! https://github.com/micjahn/ZXing.Net/から自己コンパイル! – user3236231

関連する問題