【问题标题】:Base64 image doesn't display on Render PDF from RDLC reportBase64 图像不显示在 RDLC 报告中的 Render PDF 上
【发布时间】:2019-08-12 23:20:08
【问题描述】:

我正在尝试在 RDLC 报告中使用参数(@CustomerSign)显示图像(base64 字符串)(我正在从报告中呈现 PDF 文件,我正在查看 PDF 文件) p>

我已将图像属性配置如下:

选择图片来源: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

【问题讨论】:

  • 我不明白你为什么使用 base64 字符串参数:这张图片的来源是什么?它是在数据库中还是在文件系统中?
  • @tezzo: 是的..它的数据库
  • 您使用的是什么数据库管理系统?您的图像是存储为 base64 字符串还是其他格式(即:blob、图像)?您可以使用 DataSources 传递此图像吗(未经测试,但很奇怪您可以设置 source = database 然后 value = parameter)?
  • @tezzo:我使用的是 MS SQL Server,是的,我的图像存储为 base64 字符串,好吧,让我尝试设置 DataSource
  • @tezzo: 但是如何使用 DataSource 呢?

标签: c# image base64 rdlc dynamic-rdlc-generation


【解决方案1】:

对图片的支持非常有限,this MSDN article 讨论了您可以做什么。

从不能将它们嵌入报告中的问题来看似乎有些明显。但是您可以指定一个外部数据库作为源。请注意您必须设置的 EnableExternalImages 属性,如 MSDN 文章所述。似乎要走的路,问题不够详细,您可能必须在代码中提供一个合适的表格,其中包含所需的图像。

【讨论】:

  • 没有external dbase作为source的选项请查看链接文章。
  • 我认为您将“外部”选项与“数据库”选项混淆了。外部是棘手的,因为它意味着使用 URL。 OP 询问是否使用绑定到报告字段或参数的数据库选项。
【解决方案2】:

首先,检查 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))

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

【讨论】:

    【解决方案3】:
    =System.Convert.FromBase64String(Parameters!Logo.Value)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多