是否可以从HEX构建PDF417条形码?我尝试使用ZXing,但在我的情况下它不会使用编码的字符串。
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符合我的所有需求,但我找不到使用我的数据的方法。
答案 0 :(得分:3)
以下代码段应按预期工作:
[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));
}