Esempio n. 1
0
        private void DoInit()
        {
#if REPMAN_COMPACT
#else
            OptimizeWMF = WMFOptimization.None;
#endif
            prdriver            = new PrintOutNet();
            image               = new PictureBox();
            image.MouseDown    += new MouseEventHandler(MyMouseDown);
            image.Parent        = this;
            FBitmap             = new System.Drawing.Bitmap(10, 10);
            prdriver.Output     = FBitmap;
            FEntirePageCount    = 1;
            aparams             = new Object[3];
            this.ParentChanged += new EventHandler(MyParentChanged);
#if REPMAN_COMPACT
            BackColor            = System.Drawing.SystemColors.ControlDark;
            MyAutoScrollPosition = new Point(0, 0);
            dpix = PrintOutNet.DEFAULT_RESOLUTION;
            dpiy = PrintOutNet.DEFAULT_RESOLUTION;
#else
            Graphics gr = this.CreateGraphics();
            try
            {
                dpix = (int)gr.DpiX;
                dpiy = (int)gr.DpiY;
            }
            finally
            {
                gr.Dispose();
            }
            resizeevent = new LayoutEventHandler(MyResizeHandler);
            Layout     += resizeevent;
#endif
            image.Image   = FBitmap;
            image.Top     = 0;
            image.Left    = 0;
            FPreviewScale = 1.0F;
#if REPMAN_COMPACT
            FBarWidth  = 0;
            FBarHeight = 0;
#else
            FBarWidth  = System.Windows.Forms.SystemInformation.VerticalScrollBarWidth;
            FBarHeight = System.Windows.Forms.SystemInformation.HorizontalScrollBarHeight;
#endif
        }
Esempio n. 2
0
        public MetaFile GetMetaFile()
        {
            // Execute the report and save the memory stream and
            // the mimetype on cache
            string cacheid = GetCacheId();
            // Check if there is a metafile
            MetaFile    meta     = (MetaFile)Page.Cache[cacheid + "MetaFile"];
            PrintOutNet prdriver = (PrintOutNet)Page.Cache[cacheid + "PrintOut"];

            if (prdriver == null)
            {
                meta = null;
            }
            if (meta == null)
            {
                Report rp = (Report)Page.Cache[cacheid + "Report"];
                if (rp == null)
                {
                    string filename = ReportFileName;
                    if (filename != "")
                    {
                        rp = new Report();
                        // Async execution
                        rp.AsyncExecution = AsyncExecution;
                        rp.AsyncPriority  = AsyncPriority;
                        ReportReader reader = new ReportReader(rp);
                        reader.LoadFromFile(Page.Server.MapPath(filename));
                        meta                 = rp.MetaFile;
                        meta.ForwardOnly     = false;
                        prdriver             = new PrintOutNet();
                        prdriver.OptimizeWMF = WMFOptimization.Gdiplus;
                        Page.Cache.Insert(cacheid + "Report", rp, null,
                                          DateTime.Now.AddMinutes(30), TimeSpan.Zero);
                        Page.Cache.Insert(cacheid + "MetaFile", meta, null,
                                          DateTime.Now.AddMinutes(30), TimeSpan.Zero);
                        Page.Cache.Insert(cacheid + "PrintOut", prdriver, null,
                                          DateTime.Now.AddMinutes(30), TimeSpan.Zero);
                        // Assign parameters to the report here
                        rp.BeginPrint(prdriver);
                    }
                }
            }
            return(meta);
        }
Esempio n. 3
0
        protected override void RenderContents(HtmlTextWriter output)
        {
            if (DesignMode)
            {
                base.RenderContents(output);
                return;
            }
            Bitmap bm;
            // Execute the report and save the memory stream and
            // the mimetype on cache
            string cacheid = GetCacheId();
            // Check if there is a metafile
            MetaFile meta = GetMetaFile();

            Monitor.Enter(meta);
            try
            {
                PrintOutNet prdriver = (PrintOutNet)Page.Cache[cacheid + "PrintOut"];
                if (prdriver == null)
                {
                    prdriver = new PrintOutNet();
                }

                if (meta != null)
                {
                    int pagenum = CurrentPage;
                    meta.RequestPage(pagenum);
                    if (meta.Pages.CurrentCount <= pagenum)
                    {
                        pagenum = meta.Pages.CurrentCount - 1;
                        Page.Cache.Insert(cacheid + "LastPage", pagenum, null,
                                          DateTime.Now.AddMinutes(30), TimeSpan.Zero);
                    }
                    else
                    {
                        Page.Cache.Remove(cacheid + "LastPage");
                    }
                    if (pagenum < meta.Pages.CurrentCount)
                    {
                        System.Drawing.Imaging.Metafile metaf;
                        MetaPage metap = meta.Pages[pagenum];
                        if (metap.WindowsMetafile == null)
                        {
                            bm = new Bitmap(1, 1, PixelFormat.Format32bppArgb);
                            prdriver.Output = bm;
                            prdriver.DrawPage(meta, metap);
                            metaf = metap.WindowsMetafile;
                            if (metaf == null)
                            {
                                throw new Exception("No se pudo crear el metafile");
                            }
                        }
                        else
                        {
                            metaf = metap.WindowsMetafile;
                        }
                        string       mimetype;
                        MemoryStream mems = new MemoryStream();
                        try
                        {
                            switch (Format)
                            {
                            case "WMF":
                                GraphicUtils.WriteWindowsMetaFile(metaf,
                                                                  mems, PreviewScale / metap.WindowsMetafileScale);
                                mimetype = "application/x-msMetafile";
                                break;

                            default:
                                GraphicUtils.WriteWindowsMetaFileCodec(metaf,
                                                                       mems, PreviewScale / metap.WindowsMetafileScale,
                                                                       Format, out mimetype);
                                break;
                            }
                            Page.Cache.Insert(cacheid + "mimetype", mimetype, null,
                                              DateTime.Now.AddMinutes(10), TimeSpan.Zero);
                            Page.Cache.Insert(cacheid + "memstream", mems, null,
                                              DateTime.Now.AddMinutes(10), TimeSpan.Zero);
                        }
                        catch
                        {
                            mems.Dispose();
                            throw;
                        }
                    }
                }
            }
            finally
            {
                Monitor.Exit(meta);
            }
            base.RenderContents(output);
        }
Esempio n. 4
0
        public static void Main(string[] args)
        {
            bool dothrow = false;


            Report rp = new Report();

            try
            {
                bool   asyncexecution  = true;
                bool   stdin           = false;
                bool   pdf             = false;
                bool   showprintdialog = false;
                string filename        = "";
                string pdffilename     = "";
                string fieldsfilename  = "";
                bool   deletereport    = false;
                bool   compressedpdf   = true;
                bool   showfields      = false;
                bool   testconnection  = false;
                string connectionname  = "";
                bool   doprint         = true;
                bool   evaluatetext    = false;
                bool   syntaxcheck     = false;
                bool   doread          = true;
                string evaltext        = "";
                string dataset         = "";
#if REPMAN_DOTNET2
                bool   showproviders     = false;
                string providersfilename = "";
#endif
                try
                {
                    for (int i = 0; i < args.Length; i++)
                    {
                        if (args[i].Length > 0)
                        {
                            switch (args[i].ToUpper())
                            {
                            case "-STDIN":
                                stdin = true;
                                break;

                            case "-SYNCEXECUTION":
                                asyncexecution = false;
                                break;

                            case "-U":
                                compressedpdf = false;
                                break;

                            case "-THROW":
                                dothrow = true;
                                break;

                            case "-PDF":
                                pdf = true;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    pdffilename = args[i];
                                }
                                break;

                            case "-TESTCONNECTION":
                                doprint        = false;
                                testconnection = true;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    connectionname = args[i];
                                }
                                break;

                            case "-EVAL":
                                doprint      = false;
                                evaluatetext = true;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    evaltext = args[i];
                                }
                                break;

                            case "-SYNTAX":
                                doprint     = false;
                                syntaxcheck = true;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    evaltext = args[i];
                                }
                                break;

                            case "-SHOWFIELDS":
                                showfields = true;
                                doprint    = false;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    dataset = args[i];
                                }
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    fieldsfilename = args[i];
                                }
                                break;

#if REPMAN_DOTNET2
                            case "-GETPROVIDERS":
                                showproviders = true;
                                doprint       = false;
                                doread        = false;
                                if (args.GetUpperBound(0) > i)
                                {
                                    i++;
                                    providersfilename = args[i];
                                }
                                break;
#endif
                            case "-DELETEREPORT":
                                deletereport = true;
                                break;

                            case "-PRINTDIALOG":
                                showprintdialog = true;
                                break;

                            default:
                                if (args[i][0] == '-')
                                {
                                    throw new Exception("Invalid argument:" + args[i]);
                                }
                                if (filename.Length > 0)
                                {
                                    filename = args[i];
                                }
                                else
                                {
                                    filename = args[i];
                                }
                                break;
                            }
                        }
                    }
#if REPMAN_DOTNET2
                    if (showproviders)
                    {
                        int       indexp;
                        DataTable atable = DbProviderFactories.GetFactoryClasses();
                        if (providersfilename.Length == 0)
                        {
                            string messageproviders = "";
                            for (indexp = 0; indexp < atable.Rows.Count; indexp++)
                            {
                                if (messageproviders.Length != 0)
                                {
                                    messageproviders = messageproviders + (char)13 + (char)10;
                                }
                                messageproviders = messageproviders + atable.Rows[indexp][2].ToString();
                            }
                            System.Console.WriteLine(messageproviders);
                        }
                        else
                        {
                            FileStream providersstream = new FileStream(providersfilename, System.IO.FileMode.Create, System.IO.FileAccess.Write, System.IO.FileShare.None);
                            try
                            {
                                for (indexp = 0; indexp < atable.Rows.Count; indexp++)
                                {
                                    StreamUtil.SWriteLine(providersstream, atable.Rows[indexp][2].ToString());
                                }
                            }
                            finally
                            {
                                providersstream.Close();
                            }
                        }
                    }
#endif
                    if (doread)
                    {
                        if (stdin)
                        {
                            Stream astream = System.Console.OpenStandardInput();
                            rp.LoadFromStream(astream, 8192);
                        }
                        else
                        {
                            rp.LoadFromFile(filename);
                        }
                    }
                    if (testconnection)
                    {
                        int conindex = rp.DatabaseInfo.IndexOf(connectionname);
                        if (conindex < 0)
                        {
                            throw new Exception("Connection name not found:" + connectionname);
                        }
                        rp.DatabaseInfo[conindex].Connect();
                        System.Console.WriteLine("Connexion successfull:" + connectionname);
                    }
                    if (showfields)
                    {
                        int index = rp.DataInfo.IndexOf(dataset);
                        if (index < 0)
                        {
                            throw new Exception("Dataset not found:" + dataset);
                        }
                        rp.DataInfo[index].Connect();
                        FileStream fstream = new FileStream(fieldsfilename,
                                                            System.IO.FileMode.Create, System.IO.FileAccess.Write,
                                                            System.IO.FileShare.None);
                        try
                        {
                            rp.DataInfo[index].GetFieldsInfo(fstream);
                        }
                        finally
                        {
                            fstream.Close();
                        }
                    }
                    if ((evaluatetext) || (syntaxcheck))
                    {
                        rp.PrintOnlyIfDataAvailable = false;
                        PrintOutPDF printpdf2 = new PrintOutPDF();
                        rp.BeginPrint(printpdf2);
                        if (evaluatetext)
                        {
                            try
                            {
                                Variant aresult = rp.Evaluator.EvaluateText(evaltext);
                                System.Console.WriteLine("Result:" + aresult.ToString());
                            }
                            catch (EvalException e)
                            {
                                System.Console.WriteLine("Error Line: " + e.SourceLine.ToString() +
                                                         " Error position:" + e.SourcePos.ToString() + " - " + e.Message);
                            }
                            catch (Exception E)
                            {
                                System.Console.WriteLine("Error: " + E.Message);
                            }
                        }
                        else
                        {
                            try
                            {
                                rp.Evaluator.CheckSyntax(evaltext);
                                System.Console.WriteLine("Syntax check ok");
                            }
                            catch (Exception E)
                            {
                                System.Console.WriteLine("Error: " + E.Message);
                            }
                        }
                    }
                    if (doprint)
                    {
                        if (pdf)
                        {
                            rp.AsyncExecution = false;
                            PrintOutPDF printpdf = new PrintOutPDF();
                            printpdf.FileName   = pdffilename;
                            printpdf.Compressed = compressedpdf;
                            printpdf.Print(rp.MetaFile);
                        }
                        else
                        {
                            PrintOutNet prw = new PrintOutNet();
                            rp.AsyncExecution = false;
                            prw.Print(rp.MetaFile);
                        }
                    }
                }
                finally
                {
                    if (deletereport)
                    {
                        if (filename.Length > 0)
                        {
                            System.IO.File.Delete(filename);
                        }
                    }
                }
            }
            catch (Exception E)
            {
                if (!dothrow)
                {
                    int    i;
                    string amessage = E.Message + (char)13 + (char)10;
                    for (i = 0; i < args.Length; i++)
                    {
                        amessage = amessage + (char)13 + (char)10 + "Arg" + i.ToString() + ":" + args[i];
                    }
                    Strings astrings = GetParams();
                    for (i = 0; i < astrings.Count; i++)
                    {
                        amessage = amessage + (char)13 + (char)10 + astrings[i];
                    }

                    System.Console.WriteLine(amessage, "Error");
                }
                else
                {
                    PrintParams();
                    throw;
                }
//				Variant.WriteStringToUTF8Stream(amessage,System.Console.OpenStandardError());
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Override print driver
 /// </summary>
 /// <param name="newdriver"></param>
 public void SetDriver(PrintOutNet newdriver)
 {
     prdriver = newdriver;
 }