レンダリング拡張は、レポート定義の結果を実際のデータと組み合わせて、使える形式にレンダリングします。 結合されたデータとフォーマットの変換は、 IRenderingExtensionを実装する共通言語ランタイム(CLR)クラスを使用することで行われます。 これにより、オブジェクトモデルはビューア、プリンター、その他の出力対象で消費可能な出力フォーマットに変換されます。
IRenderingExtensionには3つの符号化方法があります。
Render - 報告書を作成した。
RenderStream - レポートから特定のストリームをレンダリングする。
GetRenderingResource - アイコンなど、レポートに必要な追加情報を得ること。
以下のセクションではこれらの方法についてより詳しく解説します。
レンダリング メソッド
Renderメソッドは以下のオブジェクトを表す引数を含みます。
あなたが提出したい レポート 。 このオブジェクトにはレポートのプロパティ、データ、レイアウト情報が含まれています。 レポートはレポートオブジェクトモデルツリーのルートです。
文字列辞書オブジェクトを含む ServerParameters と、もしあればレポートサーバーのパラメータも含まれます。
デバイス設定を含む deviceInfo パラメータです。 詳細は「 デバイス情報設定をレンダリング拡張に渡す」をご覧ください。
clientCapabilitiesパラメータは、レンダリング対象のクライアントに関する情報を含むNameValueCollection辞書オブジェクトを含んでいます。
レンダリング結果に関する情報を含む RenderProperties パラメータです。
createAndRegisterStreamは、レンダリングするストリームを取得するために呼び出すデリゲート関数です。
deviceInfoパラメータ
deviceInfoパラメータはレンダリングパラメータを含み、レポートパラメータではありません。 これらのレンダリングパラメータはレンダリング拡張に渡されます。
deviceInfoの値はレポートサーバーによってNameValueCollectionオブジェクトに変換されます。
deviceInfoパラメータ内の項目は大文字を区別しない値として扱われます。 もしレンダリングリクエストがURLアクセスの結果として来た場合、形式 rc:key=value のURLパラメータは deviceInfo 辞書オブジェクト内のキー/値ペアに変換されます。 ブラウザ検出コードは、 クライアント能力 辞書に以下の項目も提供します:EcmaScriptVersion、JavaScript、MajorVersion、MinorVersion、Win32、Type、AcceptLanguage。 レンダリング拡張は 、deviceInfo パラメータ内で理解できない名前/値の組み合わせを無視します。 以下のコードサンプルは、アイコンを取得する GetRenderingResource メソッドのサンプルを示しています:
public void GetRenderingResource (CreateStream createStreamCallback, NameValueCollection deviceInfo)
{
string[] iconTagValues = deviceInfo.GetValues("Icon");
if ((iconTagValues != null) && (iconTagValues.Length > 0) )
{
// Create a stream to output to.
Stream outputStream = createStreamCallback(m_iconResourceName, "gif", null, "image/gif", false);
// Get the GIF image for one of the buttons on the toolbar
Image requiredImage = (Image) m_resourcemanager.GetObject(m_iconResourceName
// Write the image to the output stream
requiredImage.Save(outputStream, requiredImage.RawFormat);
}
return;
}
RenderStreamメソッド
RenderStreamメソッドはレポートから特定のストリームをレンダリングします。 すべてのストリームは最初の Render コール時に作成されますが、ストリームは最初にクライアントに戻されません。 この方法は、HTMLレンダリング中の画像や、Image/EMFのような多ページレンダリング拡張の他のページなどの二次ストリームに使用されます。
GetRenderingResource メソッド
GetRenderingResourceメソッドはレポート全体をレンダリングせずに情報を取得します。 レポート自体を提出する必要のない情報が必要な場合もあります。 例えば、レンダリング拡張機能に関連付けられたアイコンが必要な場合は、単一のタグ<Icon>を含むdeviceInfoパラメータを使います。 その場合は GetRenderingResource 方法を使うことができます。