我试图在RDLC报告中使用参数(@CustomerSign
)显示图像(base64字符串)(我从报告中呈现PDF文件,我看到了PDF文件)
我已经配置了如下图像属性:
选择图像来源:Database
使用此字段:
=Convert.FromBase64String(Parameters!CustomerSign.Value)
使用此MIME类型:image/png
传递参数:
ReportParameter CustomerSign = new ReportParameter("CustomerSign", obj.SignImage);
rptvw.LocalReport.SetParameters(CustomerSign);
但是图像显示红色交叉[X]
而不是图像,并且没有出现错误!
可能是什么问题?
我也尝试过:How can I render a PNG image (as a memory stream) onto a .NET ReportViewer report surface
答案 0 :(得分:2)
对图片的支持非常有限,this MSDN article讨论了您可以做的事情。
从将问题嵌入报告不是一种选择的问题看起来有点明显。但是可以指定外部dbase作为源。请注意必须设置的EnableExternalImages属性,如MSDN文章所述。似乎要走的路,问题不够详细,您可能需要在代码中提供包含所需图像的合适表格。
答案 1 :(得分:1)
首先,检查Visual Studio输出窗口。调试时,您将看到任何RDLC错误。
例如,我收到一条错误消息,说我传递了无效的base64字符串。
如果你看到:
警告:图像“Image”的ImageData属性值为“= Convert.From ...”,这不是有效的ImageData。 (rsInvalidDatabaseImageProperty)
这似乎意味着抛出异常,因此表达式没有进行评估,并作为原始文本传递(因此此消息表明原始文本不是有效的图像数据)。输出窗口中的上一行应包含导致问题的实际错误。
在我的情况下,按照你正在使用的模式(谢谢),我的问题最终是我的数据库中的base64以data:image/png;base64,
为前缀,因为它是从html图像元素中提取和写入的
要删除该前缀,请将我的RDLC表达式转换为:
=Convert.FromBase64String(CStr(Parameters!Base64.Value).Substring(22))
我建议从数据库中提取一个64字符串并确认它确实可以用作图像。尝试将其放入base64图像查看器(例如:https://codebeautify.org/base64-to-image-converter)。 (虽然在我的情况下,我猜这不会有帮助,因为即使使用该前缀,该网站仍然有效。)
答案 2 :(得分:0)
=System.Convert.FromBase64String(Parameters!Logo.Value)