/// <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; } }