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); }