2012-08-17 9 views
6

Ich habe mehrere SSRS 2008 Berichtvorlagen, die eingebettete Bilder enthalten und diese sind derzeit wie erwartet in jeder Berichtsmanagervorschau sichtbar (mit der Renderingerweiterung HTML 4.0). Ich brauche diese Berichte jedoch als HTML-E-Mails.Wie können Inline-Bilder (nicht verknüpft) in SSRS-E-Mail-Berichte eingebunden werden?

Ich glaube, dass die grundlegende/einfachste Technik hier ist, die Bilder als Inline-Base64-String an die Bild-Tags im HTML anzuhängen. Gibt es eine Möglichkeit, dies automatisch in SSRS zu tun oder alternativ, was ist die beste Vorgehensweise, um dieses oder ein ähnliches Ergebnis zu erzielen (d. H. Bilder als Anhänge, die zu nicht interoperablen MHTML statt reinem HTML führen)?

Die E-Mail muss so wie sie ist angezeigt werden, ohne dass sie mit einem externen Speicher verbunden ist (d. H. Es ist nicht möglich, die Bilder vom Sender zu hosten). Zusätzlich werden wir nicht die SSRS selbst verwenden, um die resultierenden HTML/E-Mails zu senden, so dass irgendwelche Beschränkungen dieser Art nicht von Belang sind.

Beispiel für den Inline-base64 Ich dachte:

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

Verstehe ich richtig, dass Sie Ihren eigenen .NET-Dienst erstellen, der regelmäßig E-Mails sendet und den ausgegebenen HTML-Bericht für den Text verwenden möchte? – Jeroen

+0

Ja, der Inhalt des Berichts soll als Byte-Array für eine Drittanbieter-Komponente bereitgestellt werden, die tatsächlich das Senden der Mails durchführt. Die Komponente tut etwas Besonderes, was bedeutet, dass SSRS-E-Mail-Funktionen nicht verwendet werden sollen. – allu

Antwort

2

Es scheint, dass der einfachste Weg, dies zu erreichen, ist die Rendering-Erweiterung nur ein klein wenig zu ändern oder zu erweitern, wie in den MSDN documentation beschrieben:

Schreiben von benutzerdefinierten Rendering-Erweiterungen

Bevor Sie sich entscheiden Sie eine eigene Rendering-Erweiterung zu erstellen, y ou sollte einfachere Alternativen bewerten. Sie können:

  1. Erstellen Sie eine modifizierte Version einer vorhandenen Renderingerweiterung.
  2. Anpassen der gerenderten Ausgabe durch Angabe der Geräteinformationseinstellungen für vorhandene Erweiterungen.
  3. Fügen Sie benutzerdefinierte Formatierung und Präsentation Features durch die Kombination von XSL-Transformationen (XSLT) mit der Ausgabe von das XML-Rendering-Format.

eine benutzerdefinierte Renderingerweiterung zu schreiben ist schwierig als auch zu tun, wie .. Eine Renderingerweiterung zu lernen, muss typischerweise alle möglichen Kombinationen von Berichtselementen unterstützen. Das Bericht Objektmodell ist umfangreich (die Klassen, Schnittstellen, Methoden, und Eigenschaften, die Sie implementieren müssen Hunderte), und die Dokumentation und Beispiele sind noch nicht auf einer Ebene, die Sie durch ein anspruchsvolles Entwicklungsprojekt unterstützen kann .

Wenn Sie einen Bericht in einem Format rendern müssen, das nicht in Reporting Services enthalten ist, können Sie Ihre eigene Implementierung mit verwaltetem Code einer Renderingerweiterung schreiben. Der Renderingerweiterungscode muss die IRenderingExtension-Schnittstelle implementieren, die für den Bericht Server erforderlich ist. Jede der Rendererweiterungen, die von Microsoft implementiert werden, und , die mit Reporting Services geliefert werden, verwenden einen gemeinsamen Satz von Schnittstellen. Diese stellt sicher, dass jede Erweiterung vergleichbare Funktionalität implementiert und reduziert die Komplexität des Rendering-Codes im Kern des Berichts Server.

+1

konnten Sie das zur Arbeit bringen? –

+0

nicht direkt Nr. Der einfachste Ansatz besteht darin, den HTML-Code nach der Transformation zu ändern (was bedeutet, dass solche Bilder in der Berichtsvorschau nicht sichtbar sind) oder einfach die benutzerdefinierte Renderingerweiterung zu schreiben, die im Wesentlichen dasselbe tut. – allu

Verwandte Themen