我有一个Crystal Report,其中一个类作为数据源。我有一个字节数组,我传递一个位图,但它不打印在Crystal Report上。请参阅下面的代码。
var d = new Label();
var eanCreator = new CreateEan();
var bf = new BinaryFormatter();
using (var ms = new MemoryStream())
{
bf.Serialize(ms, eanCreator.createBitmap(1.5f, "1234567890"));
var byteArray = ms.ToArray();
var ld = new LabelData
{
PartNumber = "123",
EanData = byteArray
};
d.SetDataSource(new List<LabelData> {ld});
d.PrintOptions.PrinterName = @"\\SERVER\Printer";
d.PrintToPrinter(1, false, 0, 0);
}
打印出来,除图像外的所有数据都存在。我正在使用一个类创建一个EAN条形码,这部分正确呈现给一个图像文件,但只是在Crystal Reports中无法识别它。
答案 0 :(得分:2)
此方法与您的代码类似。我一直使用这种方法将图像发送到Crystal Reports而没有任何问题。
public static byte[] ConvertImageToByte(Image Value)
{
if (Value != null)
{
MemoryStream fs = new MemoryStream();
((Bitmap)Value).Save(fs, ImageFormat.Jpeg);
byte[] retval= fs.ToArray();
fs.Dispose();
return retval;
}
return null;
}
答案 1 :(得分:0)
为了能够在报表上显示图像,当您拉出数据集的图像字段时,它必须是CR中的 IBlobFieldObject 。我很难做到这一点。 最终,我从报表中删除了数据集(通过“数据库专家”)并重新添加了它。还要确保将您的Image字段设置为DataSet中的byte []。