表示拡張機能は、実際のデータと組み合わされたレポート定義から結果を取得し、結果のデータを使用できる形式にレンダリングします。 結合されたデータと書式設定の変換は、 IRenderingExtensionを実装する共通言語ランタイム (CLR) クラスを使用して行われます。 これにより、オブジェクト モデルが、ビューアー、プリンター、またはその他の出力ターゲットで使用できる出力形式に変換されます。
IRenderingExtensionには、コード化する必要がある 3 つのメソッドがあります。
Render - レポートを表示します。
RenderStream - レポートから特定のストリームをレンダリングします。
GetRenderingResource - レポートに必要な追加情報 (アイコンなど) を取得します。
以降のセクションでは、これらのメソッドについて詳しく説明します。
Render メソッド
Render メソッドには、次のオブジェクトを表す引数が含まれています。
表示する レポート 。 このオブジェクトには、レポートのプロパティ、データ、およびレイアウト情報が含まれます。 レポートは、レポート オブジェクト モデル ツリーのルートです。
文字列ディクショナリ オブジェクトを含む ServerParameters と、レポート サーバーのパラメーター (存在する場合)。
デバイス設定を含む deviceInfo パラメーター。 詳細については、「 デバイス情報設定を表示拡張機能に渡す」を参照してください。
レンダリング先のクライアントに関する情報を持つNameValueCollectionディクショナリ オブジェクトを含む clientCapabilities パラメーター。
レンダリング結果に関する情報を含む RenderProperties 。
createAndRegisterStream は、レンダリングするストリームを取得するために呼び出されるデリゲート関数です。
deviceInfo パラメーター
deviceInfo パラメーターには、レポート パラメーターではなく、レンダリング パラメーターが含まれています。 これらのレンダリング パラメーターは、表示拡張機能に渡されます。
deviceInfo 値は、レポート サーバーによってNameValueCollection オブジェクトに変換されます。
deviceInfo パラメーター内の項目は、大文字と小文字を区別しない値として扱われます。 URL アクセスの結果としてレンダリング要求が送信された場合、 rc:key=value 形式の URL パラメーターは deviceInfo ディクショナリ オブジェクトのキーと値のペアに変換されます。 ブラウザー検出コードには、ecmaScriptVersion、JavaScript、MajorVersion、MinorVersion、Win32、Type、AcceptLanguage という 項目も clientCapabilities ディクショナリに含まれています。 表示拡張機能で認識されない 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 メソッドは、レポートのレンダリング全体を実行せずに情報を取得します。 レポート自体を表示する必要のない情報がレポートに必要な場合があります。 たとえば、表示拡張機能に関連付けられたアイコンが必要な場合は、1 つのタグ <Icon> を含む deviceInfo パラメーターを使用します。 このような場合は、 GetRenderingResource メソッドを使用できます。