예제 #1
0
        /// <summary>
        /// RunRenderTif will render a TIF given the page structure
        /// </summary>
        /// <param name="sg"></param>
        /// <param name="pgs"></param>
        public void RunRenderTif(IStreamGen sg, Pages pgs, bool bColor)
        {
            PageNumber = 1;             // reset page numbers
            TotalPages = 1;

            RenderTif ip = new RenderTif(this, sg);

            ip.RenderColor = bColor;
            try
            {
                ip.Start();
                ip.RunPages(pgs);
                ip.End();
            }
            finally
            {
                pgs.CleanUp();          // always want to make sure we cleanup to reduce resource usage
                _Cache = new RCache();
            }

            return;
        }
예제 #2
0
        /// <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;
            //Replaced from forum, User: Aulofee http://www.fyireporting.com/forum/viewtopic.php?t=793
            IPresent ip = null;

            try
            {
                MemoryStreamGen msg = null;
                switch (type)
                {
                case OutputPresentationType.PDF:
                    ip = new RenderPdf(this, sg);
                    _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)
                    {
                        //TODO: Make uniform, use RenderXML.
                        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();
            }
            finally
            {
                if (ip != null)
                {
                    ip.Dispose();
                }
            }
            return;
        }