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

all*_*llu 6 html reporting-services

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

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

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

内联base64的例子我在想:

<img src="data:image/png;base64,xxxxxxxx==" alt="Some Image">
Run Code Online (Sandbox Code Playgroud)

all*_*llu 3

看来实现这一点的最简单方法是稍微修改或扩展渲染扩展,如MSDN 文档中所述:

编写自定义渲染扩展

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

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

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

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