从 C# 中的字节数组生成 PDF417 条形码
Generating a PDF417 barcode from a Byte array in c#
我需要一种从 字节数组.
生成 PDF417 条形码的方法
我发现了许多可以生成条形码的 SDK,但它们都希望将字符串作为数据而不是字节数组,不幸的是,这是不可能的,因为我需要符合预先存在的标准
提前致谢
根据 Wyatt Earp 的要求,我尝试过的代码。
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Data of the barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string Location)
{
///* Keep Automation Barcode Creator
KeepAutomation.Barcode.Crystal.BarCode KABarcode = new KeepAutomation.Barcode.Crystal.BarCode();
KABarcode.Symbology = KeepAutomation.Barcode.Symbology.PDF417;
KABarcode.PDF417DataMode = KeepAutomation.Barcode.PDF417DataMode.Auto;
KABarcode.CodeToEncode = data;
KABarcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
KABarcode.generateBarcodeToImageFile(Location);
//*/
///* BarcodeLib Creator
BarcodeLib.Barcode.PDF417 barcodeLibBar = new BarcodeLib.Barcode.PDF417();
barcodeLibBar.Data = data;
var BarLibImage = barcodeLibBar.drawBarcode();
BarLibImage.Save(Location);
//*/
///* PQScan.Barcode Creator
PQScan.BarcodeCreator.Barcode PQScanBarcode = new PQScan.BarcodeCreator.Barcode();
PQScanBarcode.BarType = PQScan.BarcodeCreator.BarCodeType.PDF417;
PQScanBarcode.Data = data;
PQScanBarcode.PictureFormat = System.Drawing.Imaging.ImageFormat.Png;
var PQScanImage = PQScanBarcode.CreateBarcode();
PQScanImage.Save(Location);
//*/
}
None 将会构建,因为它们都希望将字符串作为条形码数据,我需要给它们一个 byte[]
不幸的是,我已经从其他 SDK 中删除了代码,但它们都倾向于遵循相同的模式。
我尝试过的 SDK 综合列表是:
- SharpPdf417
- Z星
- PQScan.BarcodeCreator
- TBarcode
- KeepAutomation.Barcode
- 条码库
所有这些SDK都只接受一个字符串作为条码数据,我需要读取的字节数组是输入到这个void中的字节数组,
我无法为您提供确切的字节数组,但它的大小为 454,并且在整个字节数组中使用了几种不同的编码方法。
好吧,您可以将字节数组转换为 ASCII 字符串,然后用它来创建条形码。此条形码的消费者需要知道该字符串被编码为 ASCII,以便转换回来。例如:
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Data of the barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string Location)
{
///* Keep Automation Barcode Creator
KeepAutomation.Barcode.Crystal.BarCode KABarcode = new KeepAutomation.Barcode.Crystal.BarCode();
KABarcode.Symbology = KeepAutomation.Barcode.Symbology.PDF417;
KABarcode.PDF417DataMode = KeepAutomation.Barcode.PDF417DataMode.Auto;
KABarcode.CodeToEncode = System.Text.Encoding.ASCII.GetString(data);
KABarcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
KABarcode.generateBarcodeToImageFile(Location);
//*/
///* BarcodeLib Creator
BarcodeLib.Barcode.PDF417 barcodeLibBar = new BarcodeLib.Barcode.PDF417();
barcodeLibBar.Data = System.Text.Encoding.ASCII.GetString(data);
var BarLibImage = barcodeLibBar.drawBarcode();
BarLibImage.Save(Location);
//*/
///* PQScan.Barcode Creator
PQScan.BarcodeCreator.Barcode PQScanBarcode = new PQScan.BarcodeCreator.Barcode();
PQScanBarcode.BarType = PQScan.BarcodeCreator.BarCodeType.PDF417;
PQScanBarcode.Data = System.Text.Encoding.ASCII.GetString(data);
PQScanBarcode.PictureFormat = System.Drawing.Imaging.ImageFormat.Png;
var PQScanImage = PQScanBarcode.CreateBarcode();
PQScanImage.Save(Location);
//*/
}
谢谢,但由于我需要将其保留在 Wyatt Earps Answer 中已有的格式,所以它对我不起作用,但它似乎对其他人有用。
对我来说,我设法发现 Aspose.Barcode 有一个功能可以让我直接从字节数组生成条形码,而不必转换它。
以下是我使用的代码,以防任何人感兴趣
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Byte data of barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string location)
{
//Define the barcode builder with properties
BarCodeBuilder builder = new BarCodeBuilder()
{
SymbologyType = Symbology.Pdf417,
Rows = 30
};
//Set Data
builder.SetBinaryCodeText(data);
//Generate Barcode
var barcodeBitmap = builder.GenerateBarCodeImage();
//Save it to disk
barcodeBitmap.Save(location);
}
我需要一种从 字节数组.
生成 PDF417 条形码的方法我发现了许多可以生成条形码的 SDK,但它们都希望将字符串作为数据而不是字节数组,不幸的是,这是不可能的,因为我需要符合预先存在的标准
提前致谢
根据 Wyatt Earp 的要求,我尝试过的代码。
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Data of the barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string Location)
{
///* Keep Automation Barcode Creator
KeepAutomation.Barcode.Crystal.BarCode KABarcode = new KeepAutomation.Barcode.Crystal.BarCode();
KABarcode.Symbology = KeepAutomation.Barcode.Symbology.PDF417;
KABarcode.PDF417DataMode = KeepAutomation.Barcode.PDF417DataMode.Auto;
KABarcode.CodeToEncode = data;
KABarcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
KABarcode.generateBarcodeToImageFile(Location);
//*/
///* BarcodeLib Creator
BarcodeLib.Barcode.PDF417 barcodeLibBar = new BarcodeLib.Barcode.PDF417();
barcodeLibBar.Data = data;
var BarLibImage = barcodeLibBar.drawBarcode();
BarLibImage.Save(Location);
//*/
///* PQScan.Barcode Creator
PQScan.BarcodeCreator.Barcode PQScanBarcode = new PQScan.BarcodeCreator.Barcode();
PQScanBarcode.BarType = PQScan.BarcodeCreator.BarCodeType.PDF417;
PQScanBarcode.Data = data;
PQScanBarcode.PictureFormat = System.Drawing.Imaging.ImageFormat.Png;
var PQScanImage = PQScanBarcode.CreateBarcode();
PQScanImage.Save(Location);
//*/
}
None 将会构建,因为它们都希望将字符串作为条形码数据,我需要给它们一个 byte[]
不幸的是,我已经从其他 SDK 中删除了代码,但它们都倾向于遵循相同的模式。
我尝试过的 SDK 综合列表是:
- SharpPdf417
- Z星
- PQScan.BarcodeCreator
- TBarcode
- KeepAutomation.Barcode
- 条码库
所有这些SDK都只接受一个字符串作为条码数据,我需要读取的字节数组是输入到这个void中的字节数组,
我无法为您提供确切的字节数组,但它的大小为 454,并且在整个字节数组中使用了几种不同的编码方法。
好吧,您可以将字节数组转换为 ASCII 字符串,然后用它来创建条形码。此条形码的消费者需要知道该字符串被编码为 ASCII,以便转换回来。例如:
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Data of the barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string Location)
{
///* Keep Automation Barcode Creator
KeepAutomation.Barcode.Crystal.BarCode KABarcode = new KeepAutomation.Barcode.Crystal.BarCode();
KABarcode.Symbology = KeepAutomation.Barcode.Symbology.PDF417;
KABarcode.PDF417DataMode = KeepAutomation.Barcode.PDF417DataMode.Auto;
KABarcode.CodeToEncode = System.Text.Encoding.ASCII.GetString(data);
KABarcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Png;
KABarcode.generateBarcodeToImageFile(Location);
//*/
///* BarcodeLib Creator
BarcodeLib.Barcode.PDF417 barcodeLibBar = new BarcodeLib.Barcode.PDF417();
barcodeLibBar.Data = System.Text.Encoding.ASCII.GetString(data);
var BarLibImage = barcodeLibBar.drawBarcode();
BarLibImage.Save(Location);
//*/
///* PQScan.Barcode Creator
PQScan.BarcodeCreator.Barcode PQScanBarcode = new PQScan.BarcodeCreator.Barcode();
PQScanBarcode.BarType = PQScan.BarcodeCreator.BarCodeType.PDF417;
PQScanBarcode.Data = System.Text.Encoding.ASCII.GetString(data);
PQScanBarcode.PictureFormat = System.Drawing.Imaging.ImageFormat.Png;
var PQScanImage = PQScanBarcode.CreateBarcode();
PQScanImage.Save(Location);
//*/
}
谢谢,但由于我需要将其保留在 Wyatt Earps Answer 中已有的格式,所以它对我不起作用,但它似乎对其他人有用。
对我来说,我设法发现 Aspose.Barcode 有一个功能可以让我直接从字节数组生成条形码,而不必转换它。
以下是我使用的代码,以防任何人感兴趣
/// <summary>
/// Writes the barcode data to a specified location
/// </summary>
/// <param name="data">Byte data of barcode</param>
/// <param name="Location">Location to save barcode</param>
public void Write(byte[] data, string location)
{
//Define the barcode builder with properties
BarCodeBuilder builder = new BarCodeBuilder()
{
SymbologyType = Symbology.Pdf417,
Rows = 30
};
//Set Data
builder.SetBinaryCodeText(data);
//Generate Barcode
var barcodeBitmap = builder.GenerateBarCodeImage();
//Save it to disk
barcodeBitmap.Save(location);
}