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 }
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); }
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); }
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()); } }
/// <summary> /// Override print driver /// </summary> /// <param name="newdriver"></param> public void SetDriver(PrintOutNet newdriver) { prdriver = newdriver; }