IRenderingExtension 인터페이스 구현

이 섹션의 앞에서 설명한 대로 렌더링 확장 프로그램은 실제 데이터와 결합된 보고서 정의에서 결과를 가져오고 결과 데이터를 사용 가능한 형식으로 렌더링합니다. 결합된 데이터의 변환과 서식 지정은 개체 모델을 뷰어, 프린터 또는 기타 출력 대상에서 사용할 수 있는 출력 형식으로 변환하는 IRenderingExtension을 구현하는 CLR(공용 언어 런타임) 클래스를 통해 수행됩니다.

IRenderingExtension에는 코딩해야 하는 메서드가 세 개 있습니다. 이러한 메서드는 다음과 같습니다.

  • Render - 보고서를 렌더링합니다.

  • RenderStream - 보고서에서 특정 스트림을 렌더링합니다.

  • GetRenderingResource - 보고서에 필요한 추가 정보(아이콘 등)를 가져옵니다.

다음 섹션에서는 이러한 메서드에 대해 자세히 설명합니다.

Render 메서드

Render 메서드에는 다음 개체를 나타내는 인수가 포함됩니다.

  • 렌더링할 report 자체 - 이 개체에는 보고서에 대한 속성, 데이터 및 레이아웃 정보가 포함됩니다. 보고서는 보고서 개체 모델 트리의 루트입니다.

  • reportServerParameters - 보고서 서버에 대한 매개 변수(있는 경우)와 함께 문자열 사전 개체를 포함합니다.

  • deviceInfo 매개 변수 - 장치 설정을 포함합니다. 장치 설정에 대한 자세한 내용은 Reporting Services 장치 정보 설정을 참조하십시오.

  • clientCapabilities 매개 변수 - 렌더링하는 클라이언트에 대한 정보가 들어 있는 NameValueCollection 사전 개체를 포함합니다.

  • RenderProperties - 렌더링 결과에 대한 정보가 들어 있습니다.

  • createAndRegisterStream - 렌더링할 스트림을 가져오기 위해 호출되는 대리자 함수입니다.

deviceInfo 매개 변수

deviceInfo에는 보고서 매개 변수가 아니라 렌더링 매개 변수가 포함되며 이러한 렌더링 매개 변수는 렌더링 확장 프로그램에 전달됩니다. deviceInfo 값은 보고서 서버에서 NameValueCollection 개체로 변환됩니다. deviceInfo 매개 변수의 항목은 대소문자를 구분하지 않는 값으로 처리됩니다. 렌더링 요청이 URL 액세스 결과로 이루어진 경우 rc:key=value 형식의 URL 매개 변수가 deviceInfo 사전 개체의 키/값 쌍으로 변환됩니다. 브라우저 감지 코드도 clientCapabilities 사전에서 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 렌더링의 이미지 등) 또는 다중 페이지 렌더링 확장 프로그램의 추가 페이지(이미지/EMF 등)에 사용됩니다.

GetRenderingResource 메서드

보고서에서 보고서 자체가 렌더링되지 않아도 되는 정보가 필요할 때가 있습니다. 예를 들어 렌더링 확장 프로그램과 연결된 아이콘이 필요한 경우 단일 태그 **<Icon>**을 포함하는 deviceInfo 매개 변수를 사용합니다. 이런 경우 GetRenderingResource 메서드를 사용할 수 있습니다. 이 메서드는 보고서의 전체 렌더링을 실행하지 않고 정보를 검색합니다.