IHttpHandler Response.ContentType =“application / pdf”在IE8中被破坏

时间:2011-12-22 23:46:36

标签: c# asp.net pdf content-type

适用于Chrome和Firefox,但IE8不显示任何内容...... 当我在webforms按钮中尝试相同的代码时,单击它可以在所有三个浏览器上运行。

如何让它在IE8中运行?

public class ShowPDF : IHttpHandler
{

   public void ProcessRequest(HttpContext context)
   {
       // create PDF document
       var document = new PdfDocument();
       var page = document.AddPage();
       var font = new XFont("Verdana", 20, XFontStyle.Bold);
       var gfx = XGraphics.FromPdfPage(page);
       gfx.DrawString("Hello, World!", font
           , PdfSharp.Drawing.XBrushes.Black
           , new PdfSharp.Drawing.XRect(0, 0, page.Width, page.Height)
           , PdfSharp.Drawing.XStringFormats.Center
       );

       // Send PDF to browser
       var stream = new System.IO.MemoryStream();
       document.Save(stream, false);
       context.Response.Clear();
       context.Response.ContentType = "application/pdf";
       context.Response.AddHeader("content-length", stream.Length.ToString());
       context.Response.BinaryWrite(stream.ToArray());
       context.Response.Flush();
       stream.Close();
       context.Response.End();
   }

   public bool IsReusable
   {
       get
       {
           return false;
       }
   }
}

1 个答案:

答案 0 :(得分:2)

解决!它归结为浏览器配置。

@BrianRogers - 感谢您对此进行测试。我试过“window.location.href ='ShowPDF.ashx';”就像你做的那样,IE8显示了一个空白页面。这让我质疑我的浏览器配置。我卸载了Foxit Reader并安装了Adobe Reader。现在一切都按预期工作了。

令人困惑的部分是当我把代码放在aspx服务器端按钮点击时渲染pdf时,IE8显示PDF就好了!去搞清楚!出于这个原因,我之前没有质疑我的浏览器配置。