来自字节数组的Crystal Report图像不打印

时间:2017-05-15 09:41:53

标签: c# crystal-reports

我有一个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中无法识别它。

2 个答案:

答案 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 []。