如何在 SSRS 电子邮件报表中包含内联(未链接)图像



我有多个包含嵌入图像的 SSRS 2008 报表模板,这些模板当前在任何报表管理器预览中都按预期可见(使用呈现扩展插件 HTML 4.0)。但是,我需要将这些报告作为HTML电子邮件发送。

我相信这里的基本/最简单的技术是将图像作为内联 base64 字符串附加到 HTML 中的图像标签。有没有办法在 SSRS 中自动执行此操作,或者实现此结果或类似结果的最佳实践是什么(即将图像作为附件导致不太可互操作的 MHTML 而不是纯 HTML)?

电子邮件必须按原样显示,而不连接到任何外部存储(即发件人托管图像是不可行的)。此外,我们不会使用 SSRS 本身来发送生成的 HTML/电子邮件,因此任何此类性质的限制都无关紧要。

我在想的内联base64示例:

<img src="data:image/png;base64,xxxxxxxx==" alt="Some Image">

实现此目的的最简单方法是按照 MSDN 文档中的说明稍微修改或扩展呈现扩展插件:

编写自定义呈现扩展插件

在决定创建自定义呈现扩展插件之前,您应该 评估更简单的替代方案。您可以:

  1. 创建现有呈现扩展插件的修改版本。
  2. 通过指定设备信息设置自定义渲染输出 对于现有扩展。
  3. 添加自定义格式和演示文稿 通过将 XSL 转换 (XSLT) 与 的输出相结合的功能 XML 呈现格式。

编写自定义呈现扩展插件是 既难做又难学..呈现扩展插件必须 通常支持报表元素的所有可能组合。这 报表对象模型非常广泛(类、接口、方法、 以及必须实现的数百个属性),以及 文档和示例尚未达到可以支持的级别 您将通过一个具有挑战性的开发项目。

如果必须以不包含的格式呈现报表 报告服务,您可以编写自己的托管代码实现 的呈现扩展插件。呈现扩展插件代码必须实现 IRenderingExtension 接口,这是报表所需的 服务器。Microsoft和 随报告服务一起提供,使用一组通用接口。这 确保每个扩展实现类似的功能,并且 降低报表核心中呈现代码的复杂性 服务器。