Example #1
0
        private MemoryStream ExportRDLC(BaseDeviceInfoSettings exportTypeSetting, string deviceInfoXml, DataTable _dataSet, out IReportExporter winFormsReportExporter, out LocalReport localReport)
        {
            if (_dataSet != null)
            {
                this.m_dataSet = _dataSet;
            }

            GetColumns();
            DateTime startTime = DateTime.Now;
            localReport = new LocalReport();
            localReport.DisplayName = string.IsNullOrEmpty(Rdl.PageHeaderText) ? "Report" : Rdl.PageHeaderText;
            localReport.LoadReportDefinition(m_rdl);
            localReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet));
            winFormsReportExporter = new WinFormsReportExporter(localReport);
            MemoryStream content;

            if (exportTypeSetting is ExcelDeviceInfoSettings)
            {
                content = winFormsReportExporter.ExportToXls(deviceInfoXml);
            }
            else if (exportTypeSetting is PdfDeviceInfoSettings)
            {
                content = winFormsReportExporter.ExportToPdf(deviceInfoXml);
            }
            else if (exportTypeSetting is ImageDeviceInfoSettings)
            {
                content = winFormsReportExporter.ExportToImage(deviceInfoXml);
            }
            else if (exportTypeSetting is WordDeviceInfoSettings)
            {
                content = winFormsReportExporter.ExportToWord(deviceInfoXml);
            }
            else
            {
                throw new ApplicationException("Unknown export type format");
            }

            TimeSpan totalTime = DateTime.Now - startTime;
            return content;
        }
Example #2
0
        public void Print()
        {
            HttpContext context = HttpContext.Current;
            //Warning[] warnings = null;
            //string[] streamids = null;
            //string mimeType = null;
            //string encoding = null;
            //string extension = null;
            Warning[] warningArray;
            HttpResponse response = context.Response;
            response.StatusCode = 200;
            MemoryStream lastMemoryStream = null;
            context.Response.BufferOutput = false;
            context.Response.ContentType = null;
            context.Response.Expires = -1;
            HttpContext.Current.Response.Clear();
            GetColumns();
            LocalReport localReport = new LocalReport();
            localReport.DisplayName = string.IsNullOrEmpty(Rdl.PageHeaderText) ? "Report" : Rdl.PageHeaderText;

            localReport.LoadReportDefinition(m_rdl);
            localReport.DataSources.Add(new ReportDataSource("MyData", m_dataSet));
            var winFormsReportExporter = new WinFormsReportExporter(localReport);

            StringBuilder builder = new StringBuilder("<DeviceInfo>");
            NameValueCollection requestParameters = context.Request.QueryString;
            for (int i = 0; i < requestParameters.Count; i++)
            {
                if (requestParameters.Keys[i] != null)
                {
                    if (requestParameters.Keys[i].StartsWith("rc:", StringComparison.OrdinalIgnoreCase))
                    {
                        builder.AppendFormat("<{0}>{1}</{0}>", XmlConvert.EncodeName(requestParameters.Keys[i].Substring(3)), HttpUtility.HtmlEncode(requestParameters[i]));
                    }
                }
            }
            builder.Append("</DeviceInfo>");

            localReport.Render("IMAGE", builder.ToString(), delegate(string name, string extension, Encoding encoding, string mimeType, bool willSeek)
            {
                if (!HttpContext.Current.Response.IsClientConnected)
                {
                    throw new HttpException("Client disconnected");
                }
                if (lastMemoryStream != null)
                {
                    SendPrintStream(lastMemoryStream, response);
                    lastMemoryStream.Dispose();
                    lastMemoryStream = null;
                }
                lastMemoryStream = new MemoryStream();
                return lastMemoryStream;
            }, out warningArray);
            SendPrintStream(lastMemoryStream, response);
            lastMemoryStream.Dispose();
            SendPrintStream(null, response);

            if (!response.BufferOutput)
            {
                string a = context.Request.ServerVariables["SERVER_PROTOCOL"];
                if (string.Equals(a, "HTTP/1.0", StringComparison.OrdinalIgnoreCase))
                {
                    context.Response.Close();
                }
            }
        }