/// <summary>
        /// Renders report.
        /// </summary>
        void IRenderingExtension.Render(IReport report, StreamProvider streamProvider, NameValueCollection settings)
        {
            if (report == null)
            {
                throw new ArgumentNullException("report");
            }
            if (streamProvider == null)
            {
                throw new ArgumentNullException("streamProvider");
            }

            settings = settings ?? new NameValueCollection();
            var pdfSettings = new PdfSharpSettings(settings);

            try
            {
                var primaryStream = streamProvider.GetPrimaryStream() ?? streamProvider.CreatePrimaryStream("application/pdf", ".pdf");
                using (var outputStream = primaryStream.OpenStream())
                    using (var generator = new PdfGenerator(outputStream, pdfSettings.EmbedFonts))
                    {
                        var renderingCore = new DocumentRenderer(report, generator);
                        int startPage     = pdfSettings.StartPage;
                        int endPage       = Math.Max(startPage, pdfSettings.EndPage);
                        if (startPage <= 0)
                        {
                            startPage = 1;
                        }
                        if (endPage <= 0)
                        {
                            endPage = int.MaxValue;
                        }
                        renderingCore.Render(pdfSettings.Target, false, new ImageRenderers.PageControl.PageControllerSettings()
                        {
                            EndPage = endPage, StartPage = startPage
                        });
                    }
            }
            catch
            {
                streamProvider.CleanUpOnError();
                throw;
            }
        }