/// <summary> /// Exporta o relatório no formato informado. /// </summary> /// <param name="exportType">Formato que será usado na exportação.</param> /// <param name="createStreamCallback">Callback usada na criação a Stream de exportação.</param> /// <param name="warnings">Warnings.</param> /// <param name="culture"></param> public virtual void Export(ExportType exportType, CreateStreamCallback createStreamCallback, out Warning[] warnings, System.Globalization.CultureInfo culture) { var localReport = CreateLocalReport(); PrepareLocalReport(localReport, culture); Dictionary <string, object> obj = new Dictionary <string, object>(); Microsoft.Reporting.WebForms.Warning[] warnings2 = null; localReport.Render(exportType.ToString(), null, new Microsoft.Reporting.WebForms.CreateStreamCallback((name, extension, encoding, mimeType, willSeek) => createStreamCallback(name, extension, encoding, mimeType, willSeek)), out warnings2); if (warnings2 != null) { warnings = warnings2.Select(f => new Warning { Code = f.Code, Message = f.Message, ObjectName = f.ObjectName, ObjectType = f.ObjectType, Severity = f.Severity == Microsoft.Reporting.WebForms.Severity.Error ? Severity.Error : Severity.Warning }).ToArray(); } else { warnings = null; } }
public void Render(string format, string deviceInfo, PageCountMode pageCountMode, CreateStreamCallback createStream, out Warning[] warnings) { if (createStream == null) { throw new ArgumentNullException("createStream"); } using (ProcessingStreamHandler @object = new ProcessingStreamHandler((string name, string extension, Encoding encoding, string mimeType, bool willSeek, StreamOper operation) => createStream(name, extension, encoding, mimeType, willSeek))) { InternalRender(format, allowInternalRenderers: false, deviceInfo, pageCountMode, CreateAndRegisterStreamTypeConverter.ToInnerType(@object.StreamCallback), out warnings); } }
public void Render(string format, string deviceInfo, CreateStreamCallback createStream, out Warning[] warnings) { Render(format, deviceInfo, PageCountMode.Estimate, createStream, out warnings); }
/// <summary> /// 打印——LocalReport利用PrintDocument方式打印 /// </summary> /// <param name="templatepath"></param> /// <param name="datasetname"></param> /// <param name="datasource"></param> /// <param name="rparams"></param> public static bool Print(string templatepath, string datasetname, object datasource, List <ReportParameter> rparams = null) { List <Stream> m_streams = new List <Stream>(); int m_currentPageIndex = 0; PrintDialog pdg = new PrintDialog(); pdg.Document = new System.Drawing.Printing.PrintDocument(); DialogResult result = pdg.ShowDialog(); if (result != DialogResult.OK && result != DialogResult.Yes) { return(false); } pdg.Document.PrinterSettings = pdg.PrinterSettings; PrintDocument pd = pdg.Document; LocalReport lr = new LocalReport(); lr.ReportPath = templatepath; lr.DataSources.Add(new ReportDataSource(datasetname, datasource)); if (rparams != null) { lr.SetParameters(rparams); } lr.Refresh(); string deviceInfo = "<DeviceInfo>" + " <OutputFormat>EMF</OutputFormat>" + //" <PageWidth>8.5in</PageWidth>" + //" <PageHeight>11in</PageHeight>" + //" <MarginTop>0.15in</MarginTop>" + //" <MarginLeft>0.5cm</MarginLeft>" + //" <MarginRight>0.1in</MarginRight>" + //" <MarginBottom>0.1in</MarginBottom>" + "</DeviceInfo>"; Warning[] warnings; m_streams = new List <Stream>(); m_currentPageIndex = 0; CreateStreamCallback createStream = (name, fileNameExtension, encoding, mimeType, willSeek) => { //Stream stream = new FileStream(name + "." + fileNameExtension, FileMode.Create); Stream stream = new MemoryStream(); m_streams.Add(stream); return(stream); }; lr.Render("Image", deviceInfo, createStream, out warnings); lr.ReleaseSandboxAppDomain(); foreach (Stream stream in m_streams) { stream.Position = 0; } pd.PrintPage += (sender, e) => { System.Drawing.Imaging.Metafile pageImage = new System.Drawing.Imaging.Metafile(m_streams[m_currentPageIndex]); //e.Graphics.DrawImage(pageImage, 0, 0,e.PageSettings.PaperSize.Width,e.PageSettings.PaperSize.Height); e.Graphics.DrawImage(pageImage, e.PageBounds); m_currentPageIndex++; e.HasMorePages = (m_currentPageIndex < m_streams.Count); }; pd.Print(); return(true); }
/// <summary> /// Exporta o relatório no formato informado. /// </summary> /// <param name="exportType">Formato que será usado na exportação.</param> /// <param name="createStreamCallback">Callback usada na criação a Stream de exportação.</param> /// <param name="warnings">Warnings.</param> public virtual void Export(ExportType exportType, CreateStreamCallback createStreamCallback, out Warning[] warnings) { Export(exportType, createStreamCallback, out warnings, null); }