Finally! I have used different sources to get my solutions, some of which I got from codeproject. Here goes: default.aspx.cs: protected void btPrint_Click(object sender, EventArgs e) { RenderReport(); Response.Redirect("PrinterFriendly.aspx"); } private void RenderReport() { Warning[] warnings; string deviceInfo = "<DeviceInfo>" + " <OutputFormat>EMF</OutputFormat>" + " <PageWidth>10in</PageWidth>" + " <PageHeight>13in</PageHeight>" + " <MarginTop>0.0in</MarginTop>" + " <MarginLeft>0.0in</MarginLeft>" + " <MarginRight>0.0in</MarginRight>" + " <MarginBottom>0.0in</MarginBottom>" + "</DeviceInfo>"; m_streams = new List<Stream>(); ReportViewer.LocalReport.Render("Image", deviceInfo, CreateStream, out warnings); Session["MemStreamList"] = (List<Stream>)m_streams; } private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek) { Guid newid = Guid.NewGuid(); Stream stream = new FileStream(name + newid + "." + fileNameExtension, FileMode.Create); m_streams.Add(stream); return stream; } printerfriendly.aspx.cs: protected void Page_Load(object sender, EventArgs e) { List<Stream> memList = (List<Stream>)Session["MemStreamList"]; for (int i = 0; i < memList.Count; i++) { string imgString = "<img src=\"MultipleImaging.aspx?Index=" + i + "\">"; this.Controls.Add(new LiteralControl(imgString)); } } multipleimaging.aspx.cs: protected void Page_Load(object sender, EventArgs e) { if ((Session["MemStreamList"] != null) && Session["MemStreamList"].GetType().Equals(typeof(List<Stream>))) { List<Stream> images = (List<Stream>)Session["MemStreamList"]; int index = Int32.Parse(Request.Params.Get(0).ToString()); if (images[index].Length > 0) { try