title: Save As dialog box when downloading PDF file
body: <p>I'm trying to allow my webapp to download the PDF file with a save as dialog. However, after trying, there wasn't any save as dialog box then appeared when i used chrome/firefox. But when i use IE, i was given this error</p>
  
  <p><img src="https://i.stack.imgur.com/gkN47.png" alt="enter image description here"></p>
  
  <p>Could it be some error between the browser? I have saved / convert my PDF file into bytes. </p>
  
  <pre><code>protected void btnPDF_Click(object sender, EventArgs e)
      {
          //Byte array that will eventually hold our PDF, currently empty
          Byte[] bytes;
  
          //Instead of a FileStream we'll use a MemoryStream
          using (var MS = new System.IO.MemoryStream())
          {
  
              //Standard PDF setup, iText doesn't care what type of stream we're using
              var doc = new iTextSharp.text.Document();
              var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(doc, MS);
              doc.Open();
              PdfPTable table = new PdfPTable(1);
              table.TotalWidth = 585f;
              table.LockedWidth = true;
  
              var logo = iTextSharp.text.Image.GetInstance(Server.MapPath("~/image/logo.jpg"));
              doc.Add(logo);
  
              var titleFont = FontFactory.GetFont("Arial", 18, Font.BOLD);
              doc.Add(new Paragraph("Officer's Profile. Officer's Police ID: " + DDLCase.SelectedValue, titleFont));
  
              var normalFont = FontFactory.GetFont(FontFactory.HELVETICA, 14, Font.BOLD);
              var phrase = new Phrase();
  
              SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = project; Integrated Security = SSPI");
  
              SqlCommand cm = new SqlCommand("Select lrp.fullname,  pp.profilepic, pp.rank, lrp.policeid, lrp.nric, lrp.email, lrp.contact, lrp.address,lrp.location, pp.achievement, pp.medal1, pp.medal2, pp.medal3, pp.medal4, pp.medal5 from LoginRegisterPolice lrp, PoliceProfile pp where lrp.policeid = '" + DDLCase.SelectedValue + "' and pp.policeid = lrp.policeid", con);
              con.Open();
              SqlDataReader dr;
  
              dr = cm.ExecuteReader();
  
              if (dr.Read())
              {
                  phrase.Add(new Chunk("Full Name :", normalFont));
                  phrase.Add(dr[0].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
  
                  phrase.Add(new Chunk("Profile Picture :\u00a0", normalFont));
                  Byte[] bytes1 = (Byte[])dr[1];
                  iTextSharp.text.Image image1 = iTextSharp.text.Image.GetInstance(bytes1);
                  image1.ScaleToFit(100f, 250f);
                  Chunk imageChunk1 = new Chunk(image1, 0, 0);
                  phrase.Add(imageChunk1);
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Rank : ", normalFont));
                  Byte[] bytes2 = (Byte[])dr[2];
                  iTextSharp.text.Image image2 = iTextSharp.text.Image.GetInstance(bytes2);
                  image2.ScaleToFit(40f, 300f);
                  Chunk imageChunk2 = new Chunk(image2, 0, 0);
                  phrase.Add(imageChunk2);
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Police ID :", normalFont));
                  phrase.Add(dr[3].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("NRIC :", normalFont));
                  phrase.Add(dr[4].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Email :", normalFont));
                  phrase.Add(dr[5].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Contact :", normalFont));
                  phrase.Add(dr[6].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Address :", normalFont));
                  phrase.Add(dr[7].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Location :", normalFont));
                  phrase.Add(dr[8].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
                  phrase.Add(new Chunk("Achievement :", normalFont));
                  phrase.Add(dr[9].ToString());
  
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
                  phrase.Add(Chunk.NEWLINE);
  
  
  
                  phrase.Add(new Chunk("Medal1", normalFont));
                  Byte[] bytes3 = (Byte[])dr[10];
                  iTextSharp.text.Image image3 = iTextSharp.text.Image.GetInstance(bytes3);
                  image3.ScaleToFit(800f, 800f);
                  Chunk imageChunk3 = new Chunk(image3, 0, 0);
                  phrase.Add(imageChunk3);
  
  
                  phrase.Add(new Chunk("Medal2", normalFont));
                  Byte[] bytes5 = (Byte[])dr[11];
                  iTextSharp.text.Image image5 = iTextSharp.text.Image.GetInstance(bytes5);
                  image5.ScaleToFit(800f, 800f);
                  Chunk imageChunk5 = new Chunk(image5, 0, 0);
                  phrase.Add(imageChunk5);
  
  
  
                  phrase.Add(new Chunk("Medal3", normalFont));
                  Byte[] bytes6 = (Byte[])dr[12];
                  iTextSharp.text.Image image6 = iTextSharp.text.Image.GetInstance(bytes6);
                  image6.ScaleToFit(800f, 800f);
                  Chunk imageChunk6 = new Chunk(image6, 0, 0);
                  phrase.Add(imageChunk6);
  
                  phrase.Add(new Chunk("Medal4", normalFont));
                  Byte[] bytes7 = (Byte[])dr[13];
                  iTextSharp.text.Image image7 = iTextSharp.text.Image.GetInstance(bytes7);
                  image7.ScaleToFit(800f, 800f);
                  Chunk imageChunk7 = new Chunk(image7, 0, 0);
                  phrase.Add(imageChunk7);
  
                  phrase.Add(new Chunk("Medal5", normalFont));
                  Byte[] bytes8 = (Byte[])dr[14];
                  iTextSharp.text.Image image8 = iTextSharp.text.Image.GetInstance(bytes8);
                  image8.ScaleToFit(800f, 800f);
                  Chunk imageChunk8 = new Chunk(image8, 0, 0);
                  phrase.Add(imageChunk8);
  
                  table.AddCell(phrase);
  
  
              }
  
              dr.Close();
              doc.Add(table);
              doc.Close();
  
              //Grab the raw bytes from the MemoryStream
              bytes = MS.ToArray();
          }
  
  
  
          //At this point all iText work is done and we're only dealing with raw ASP.Net parts
  
          //Clear the current response buffer
          Response.Clear();
          //Instead of a normal text/html header tell the browser that we've got a PDF
          Response.ContentType = "application/pdf";
          //Tell the browser that you want the file downloaded (ideally) and give it a pretty filename
          Response.AddHeader("content-disposition", "attachment;filename=MySampleFile.pdf");
          //Write our bytes to the stream
          Response.BinaryWrite(bytes);
          //Close the stream (otherwise ASP.Net might continue to write stuff on our behalf)
          Response.End();
      }
  
  
  
  
  }
  </code></pre>
  
  <p>Would appreciate if anyone could tell me if i did anything wrong here. </p>