我有一个带有XRPictureBox组件的XtraReport。一个objectDataSource被馈送到包含数据的报表中。其中一个objectDataSource项名为“ Signature”,其值是从Canvas组件派生的……它是数据URL格式的,base64编码的(可能是PNG)位图数据,如下所示:“ data:image / png; base64, i1234lkj123; k4; l1j34l1kj3j…”
在报表设计器中,我将其作为URL表达式绑定到PictureBox,以指定objectDataSource中的[Signature]项目。
显然,这是不可操作的。该图像未显示在报告中。
如果您的对象以二进制格式存储图像,则需要为XRPictureBox.Image 属性设置一个表达式 。如果您的对象存储了图像的相对或绝对路径,请使用 XRPictureBox.ImageUrl 属性。请注意,默认情况下,通过'file://' 协议指定的图像URL 不会显示在报告中。
图像和其他报表数据存储在SQL表中,并且实体框架用于创建报表的数据源。该图像没有文件地址。如原始帖子中所示,图像以字符串格式存储。那就是我想要绑定到XRPictureBox的东西。您是说如果将它绑定到XRPictureBox.Image属性,它应该可以工作吗?
重点解决方法:
我们的 XRPictureBox 控件不能绑定到将图像存储为Base64 字符串的数据源字段 。有必要将此类字符串转换为字节数组。您可以通过以下方式在XRPictureBox.BeforePrint事件中执行此操作:
private void xrPictureBox1_BeforePrint(object sender, System.Drawing.Printing.PrintEventArgs e) {
string value = GetCurrentColumnValue("Image").ToString();
MemoryStream stream = new MemoryStream(Convert.FromBase64String(value));
(sender as XRPictureBox).Image = Image.FromStream(stream);
}
在附件中,您将找到显示结果的示例视频。请注意,在将字符串转换为字节数组之前,您需要删除开头的' data:image / png; base64, '子字符串。
官方支持永远是最权威最有效的。