从RDLC报告中的Render PDF上不显示Base64图像

我正在尝试使用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]而不是图像,并没有给出错误!

可能是什么问题?

我也尝试过: 如何将PNG图像(作为内存流)渲染到.NET ReportViewer报表界面上

对图像的支持非常有限, 这篇MSDN文章讨论了你可以做什么。

从将问题嵌入报告中的问题看起来有点显而易见。 但您可以指定外部dbase作为源。 请注意必须设置的EnableExternalImages属性,如MSDN文章所述。 似乎要走的路,问题不够详细,您可能需要在代码中提供包含所需图像的合适表格。

首先,检查Visual Studio输出窗口。 调试时,您应该出现任何RDLC错误。

例如,我收到一条错误消息,说我传递了无效的base64字符串。

如果你看到:

警告:图像“Image”的ImageData属性值为“= Convert.From …”,这不是有效的ImageData。 (rsInvalidDatabaseImageProperty)

这似乎意味着抛出exception,因此表达式没有进行评估,并作为原始文本传递(因此此消息表明原始文本不是有效的图像数据)。 输出窗口中的上一行应包含导致问题的实际错误。

在我的情况下,按照你正在使用的模式(谢谢),我的问题最终是我的数据库中的base64以data:image/png;base64,为前缀data:image/png;base64,因为它是从html图像元素中提取和写入的。

要删除该前缀,请将我的RDLC表达式转换为:

 =Convert.FromBase64String(CStr(Parameters!Base64.Value).Substring(22)) 

我建议从数据库中提取一个64字符串并确认它确实可以用作图像。 尝试将其放入base64图像查看器中(例如: https : //codebeautify.org/base64-to-image-converter )。 (虽然在我的情况下,我猜这不会有帮助,因为即使使用该前缀,该网站仍然有用。)