2012-08-17 30 views
6

Tengo varias plantillas de informes de SSRS 2008 que contienen imágenes incrustadas y estas están actualmente visibles como se esperaba en cualquier vista previa del administrador de informes (usando la extensión de representación HTML 4.0). Sin embargo, necesito que estos informes se envíen como correos electrónicos HTML.¿Cómo incluir imágenes en línea (no vinculadas) en informes de correo electrónico de SSRS?

Creo que la técnica básica/más fácil aquí es adjuntar las imágenes como cadena base64 en línea a las etiquetas de imagen en el HTML. ¿Hay alguna manera de hacer esto automáticamente en SSRS o, alternativamente, cuál es la mejor práctica para lograr este o un resultado similar (es decir, imágenes como archivos adjuntos que resultan en MHTML no demasiado interoperable en lugar de HTML puro)?

El correo electrónico debe mostrarse tal como está sin conectarse a ningún almacenamiento externo (es decir, no es posible alojar las imágenes por el remitente). Además, no utilizaremos el SSRS mismo para enviar los HTML/correos electrónicos resultantes por lo que cualquier restricción de tal naturaleza no es motivo de preocupación.

Ejemplo de la base 64 en línea que estaba pensando:

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

¿Entiendo correctamente que está creando su propio servicio .NET que envía correos periódicamente, y desea utilizar el informe renderizado html para el cuerpo? – Jeroen

+0

Sí, el contenido del informe se proporcionará como un conjunto de bytes a algún componente de terceros que realmente hará el envío de los correos. El componente hace algunas cosas sofisticadas, lo que significa que las funciones de correo electrónico de SSRS no se deben utilizar. – allu

Respuesta

2

Parece ser que la forma más fácil de lograrlo es modificar o ampliar la extensión de representación sólo un poquito como se describe en el MSDN documentation:

escritura extensiones de representación de encargo

Antes de decidirse a crear una extensión de representación personalizada, y ou debería evaluar alternativas más simples. Puede:

  1. Crear una versión modificada de una extensión de representación existente.
  2. Personalice la salida representada especificando la configuración de información del dispositivo para las extensiones existentes.
  3. Agregue funciones de formato y presentación personalizados mediante la combinación de XSL Transformations (XSLT) con el resultado de el formato de representación XML.

Escritura de una extensión de representación personalizada es difícil de hacer, así como para aprender .. Una extensión de representación debe normalmente soportar todas las combinaciones posibles de los elementos del informe. El modelo de objeto de informe es extenso (las clases, interfaces, métodos, y propiedades que debe implementar número en cientos) y la documentación y las muestras aún no están en un nivel que puede admitir a través de un proyecto de desarrollo desafiante .

Si tienes que rendir un informe en un formato que no se incluye con Reporting Services, puede escribir su propia implementación de código administrado de una extensión de representación. El código de extensión de representación debe implementar la interfaz IRenderingExtension, que es requerida por el servidor de informe . Cada una de las extensiones de representación implementadas por Microsoft y incluidas con Reporting Services utiliza un conjunto común de interfaces. Este garantiza que cada extensión implemente una funcionalidad comparable y reduce la complejidad del código de representación en el núcleo del servidor de informes .

+1

¿Pudiste hacer que esto funcione? –

+0

no directamente no. el enfoque más fácil aquí es modificar el HTML después de que haya tenido lugar la transformación (lo que significa que tales imágenes no son visibles en las vistas previas del informe) o simplemente escribir la extensión de representación personalizada que esencialmente hace lo mismo. – allu

Cuestiones relacionadas