/// <summary> /// Renders the report using the requested presentation type. /// </summary> /// <param name="sg">IStreamGen for generating result stream</param> /// <param name="type">Presentation type: HTML, XML, PDF, MHT, or ASP compatible HTML</param> /// <param name="prefix">For HTML puts prefix allowing unique name generation</param> public void RunRender(IStreamGen sg, OutputPresentationType type, string prefix) { if (sg == null) throw new ArgumentException("IStreamGen argument cannot be null.", "sg"); RenderHtml rh=null; PageNumber = 1; // reset page numbers TotalPages = 1; IPresent ip; MemoryStreamGen msg = null; switch (type) { case OutputPresentationType.PDF: ip = new RenderPdf(this, sg); _Report.Run(ip); break; case OutputPresentationType.PDFOldStyle: ip = new RenderPdf(this, sg); this.ItextPDF = false; _Report.Run(ip); break; case OutputPresentationType.TIF: ip = new RenderTif(this, sg); _Report.Run(ip); break; case OutputPresentationType.TIFBW: RenderTif rtif = new RenderTif(this, sg); rtif.RenderColor = false; ip = rtif; _Report.Run(ip); break; case OutputPresentationType.XML: if (_Report.DataTransform != null && _Report.DataTransform.Length > 0) { msg = new MemoryStreamGen(); ip = new RenderXml(this, msg); _Report.Run(ip); RunRenderXmlTransform(sg, msg); } else { ip = new RenderXml(this, sg); _Report.Run(ip); } break; case OutputPresentationType.MHTML: this.RunRenderMht(sg); break; case OutputPresentationType.CSV: ip = new RenderCsv(this, sg); _Report.Run(ip); break; case OutputPresentationType.RTF: ip = new RenderRtf(this, sg); _Report.Run(ip); break; case OutputPresentationType.Excel: ip = new RenderExcel(this, sg); _Report.Run(ip); break; case OutputPresentationType.ASPHTML: case OutputPresentationType.HTML: default: ip = rh = new RenderHtml(this, sg); rh.Asp = (type == OutputPresentationType.ASPHTML); rh.Prefix = prefix; _Report.Run(ip); // Retain the CSS and JavaScript if (rh != null) { _CSS = rh.CSS; _JavaScript = rh.JavaScript; } break; } sg.CloseMainStream(); _Cache = new RCache(); return; }
// Renders the report; RunGetData must be run before this. public void RunRender(IStreamGen sg, OutputPresentationType type) { if (sg == null) throw new ArgumentException("IStreamGen argument cannot be null.", "sg"); PageNumber.RuntimePageNumber = 1; // reset page numbers TotalPages.RuntimePageCount = 1; IPresent ip; MemoryStreamGen msg = null; switch (type) { case OutputPresentationType.PDF: ip = new RenderPdf(this, sg); break; case OutputPresentationType.XML: if (this.DataTransform != null && DataTransform.Length > 0) { msg = new MemoryStreamGen(); ip = new RenderXml(this, msg); } else ip = new RenderXml(this, sg); break; case OutputPresentationType.HTML: default: ip = new RenderHtml(this, sg); break; } Run(ip); // When msg isn't null we have to do a datatransform on the XML in the data stream if (msg != null) { try { string file; if (this.DataTransform[0] != Path.DirectorySeparatorChar) file = this.Folder + Path.DirectorySeparatorChar + _DataTransform; else file = this.Folder + _DataTransform; XmlUtil.XslTrans(file, msg.GetText(), sg.GetStream()); } catch (Exception ex) { this.rl.LogError(8, "Error processing DataTransform " + ex.Message + "\r\n" + ex.StackTrace); } finally { msg.Dispose(); } } sg.CloseMainStream(); return; }