Implémenter l’interface IRenderingExtension

L'extension de rendu prend les résultats d'une définition de rapport qui est combinée aux données réelles et restitue les données résultantes dans un format utilisable. La transformation de la combinaison des données et de la mise en forme s'effectue par le biais d'une classe CLR (Common Language Runtime) qui implémente IRenderingExtension. Cela transforme le modèle objet en un format de sortie qui est consommable par une visionneuse, une imprimante ou une autre cible de sortie.

IRenderingExtension a trois méthodes qui doivent être codées :

  • Render : effectue le rendu du rapport.

  • RenderStream : effectue le rendu d'un flux spécifique à partir du rapport.

  • GetRenderingResource - obtient des informations supplémentaires requises pour le rapport, telles que les icônes.

Ces méthodes sont traitées en détail dans les sections suivantes.

méthode de rendu

La méthode Render contient des arguments qui représentent les objets suivants :

  • L’objet report lui-même que vous souhaitez restituer. Cet objet contient des informations sur les propriétés, les données et la disposition du rapport. Le rapport est la racine de l'arborescence du modèle objet de rapport.

  • Le paramètre ServerParameters qui contient l’objet dictionnaire de chaînes ainsi que les paramètres du serveur de rapports, le cas échéant.

  • Paramètre deviceInfo qui contient les paramètres de l’appareil. Pour plus d’informations, consultez Passer les paramètres d’informations de l’appareil aux extensions de rendu.

  • Paramètre clientCapabilities qui contient un NameValueCollection objet de dictionnaire qui contient des informations sur le client sur lequel vous effectuez le rendu.

  • Paramètre RenderProperties qui contient des informations sur le résultat de rendu.

  • La fonction createAndRegisterStream est une fonction de délégué à appeler pour obtenir un flux de données de rendu.

paramètre deviceInfo

Le paramètre deviceInfo contient des paramètres de rendu, pas des paramètres de rapport. Ces paramètres de rendu sont passés à l'extension de rendu. Les valeurs deviceInfo sont converties en un objet NameValueCollection par le serveur de rapports. Les éléments dans le paramètre deviceInfo sont traités comme des valeurs non sensibles à la casse. Si la demande de rendu résulte d’un accès URL, les paramètres d’URL de type rc:key=value sont convertis en paires clé/valeur dans l’objet dictionnaire deviceInfo. Le code de détection du navigateur fournit également les éléments suivants dans le dictionnaire clientCapabilities : EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type et AcceptLanguage. L’extension de rendu ignore toute paire nom/valeur dans le paramètre deviceInfo qu’elle ne comprend pas. L'exemple de code suivant montre un exemple de méthode GetRenderingResource qui extrait des icônes :

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, méthode

La méthode RenderStream restitue un flux particulier à partir du rapport. Tous les flux sont créés pendant l’appel initial Render , mais les flux ne sont pas retournés au client initialement. Cette méthode est utilisée pour les flux secondaires, tels que les images dans le rendu HTML ou d’autres pages d’une extension de rendu multipage, comme Image/EMF.

Méthode GetRenderingResource

La méthode GetRenderingResource extrait les informations sans exécuter un rendu entier du rapport. Il existe des moments où le rapport nécessite des informations qui ne nécessitent pas le rendu du rapport lui-même. Par exemple, si vous avez besoin de l’icône associée à l’extension de rendu, utilisez le paramètre deviceInfo qui contient la balise unique <Icon>. Utilisez, dans ce cas, la méthode GetRenderingResource.