private static byte[] GenerateReportingServicesOutput(IPoProvider poProvider, LocalReport localReport, out Warning[] warnings, out string fileNameExtension, out string mimeType) { string[] streams; string encoding; return(localReport.Render(poProvider.OutputFormat.ToFormatName(), null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings)); }
private static byte[] GenerateXmlOutput(IPoProvider poProvider, out string fileNameExtension, out string mimeType) { var xmlSerializer = new XmlSerializer(poProvider.DataSources.First().Value.GetType()); using (var steam = new MemoryStream()) { xmlSerializer.Serialize(steam, poProvider.DataSources.First().Value); mimeType = "text/xml"; fileNameExtension = "xml"; return(steam.GetBuffer()); } }
public Report GenerateReport(IPoProvider poProvider) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); LocalReport localReport = new LocalReport(); using (Stream reportDefinitionStreams = poProvider.OpenReportDefinitionStreams()) { var subReportDefinitionStreams = poProvider.OpenSubReportDefinitionStreams(); InitializeLocalReport(localReport, poProvider, reportDefinitionStreams, subReportDefinitionStreams); string mimeType = null; string fileNameExtension = String.Empty; Warning[] warnings = null; byte[] renderedBytes = new byte[0]; if (poProvider.HasData) { if (poProvider.OutputFormat == OutputFormat.Xml) { renderedBytes = GenerateXmlOutput(poProvider, out fileNameExtension, out mimeType); } else { renderedBytes = GenerateReportingServicesOutput(poProvider, localReport, out warnings, out fileNameExtension, out mimeType); } } LogWarnings(warnings); if (poProvider.OutputFormat == OutputFormat.Png) { renderedBytes = GeneratePngOutput(renderedBytes, out mimeType); } var report = new Report(poProvider.HasData, renderedBytes, poProvider.ReportFileName, fileNameExtension, mimeType, poProvider.MaxImagePreviewPageHeight, poProvider.MaxImagePreviewPageWidth); foreach (var subReportStream in subReportDefinitionStreams.Values) { subReportStream.Dispose(); } stopwatch.Stop(); Loggers.PeformanceLogger.DebugFormat("Generated report: {0}({1}) in {2}", poProvider.ReportFileName, poProvider.OutputFormat, stopwatch.Elapsed); return(report); } }
private static void InitializeLocalReport(LocalReport localReport, IPoProvider poProvider, Stream reportDefinitionStream, Dictionary <string, Stream> subReportDefinitionStreams) { localReport.SubreportProcessing += (sender, args) => poProvider.SubReportProcessingEventHandler(sender, new ServerSubReportProcessingEventArgs(args)); localReport.LoadReportDefinition(reportDefinitionStream); localReport.EnableExternalImages = true; foreach (var subReportKeyValuePair in subReportDefinitionStreams) { localReport.LoadSubreportDefinition(subReportKeyValuePair.Key, subReportKeyValuePair.Value); } ReportDataSource.SetDataSources(new ServerReportDataSourceCollection(localReport.DataSources), poProvider.DataSources); localReport.SetParameters(poProvider.ReportParameters.Select(svp => svp.ReportParameter)); }
public IEmsgPoProviderBase CreateEmsgPoProvider <TEmsgReportParameter, TReportPo>(TEmsgReportParameter poProviderParameter, IPresentationObjectProcessor <TReportPo> presentationObjectProcessor) where TEmsgReportParameter : EmsgReportParameter where TReportPo : new() { IPoProvider poProvider = GetPoProvider(poProviderParameter); if (poProvider is IEmsgModeDependentPoProviderBase <TEmsgReportParameter, TReportPo> ) { var emsgPoProvider = (IEmsgModeDependentPoProviderBase <TEmsgReportParameter, TReportPo>)poProvider; emsgPoProvider.SetPresentationObjectProcessor(presentationObjectProcessor); } poProvider.SetBaseParameter(poProviderParameter); poProvider.LoadDataSources(poProviderParameter); return((IEmsgPoProviderBase)poProvider); }