Exemplo n.º 1
0
        /// <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;
            }
        }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 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);
        }
Exemplo n.º 5
0
 /// <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);
 }