我的应用程序将PDF文件推送到弹出窗口(例如没有菜单/工具栏)浏览器窗口(响应用户单击按钮)。这适用于除IE7之外的每个浏览器。在IE7中,我得到的只是一个空白窗口。
以下是推出PDF的服务器端代码:
private void StreamPDFReport(string ReportPath, HttpContext context)
{
context.Response.Buffer = false;
context.Response.Clear();
context.Response.ClearContent();
context.Response.ClearHeaders();
// Set the appropriate ContentType.
context.Response.ContentType = "application/pdf";
context.Response.AddHeader("Content-Disposition", "inline; filename=Report.pdf");
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
// Write the file directly to the HTTP content output stream.
context.Response.WriteFile(ReportPath);
HttpContext.Current.ApplicationInstance.CompleteRequest();
//context.Response.End();
}
在客户端,当用户按下按钮时,onClick处理程序中会发生以下情况:
onclick =“window.open('RptHandler.ashx?RptType = CaseInfo','Report','top = 10,left = 10,width = 1000,height = 750')
我错过了一些非常基本的东西吗?为什么它适用于所有浏览器而不是IE?
答案 0 :(得分:4)
事实证明,以下语句导致IE无法显示PDF:
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
不确定原因。
答案 1 :(得分:3)
使用IE7,我们发现您需要添加一个额外的标题'content-length'设置为您发送的PDF的大小。类似的东西:
Response.AddHeader(“content-length”, {pdf的大小} );
答案 2 :(得分:2)
似乎context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
只会在使用IIS7时起作用。
我将其更改为context.Response.AddHeader("Cache-Control", "no-cache");
,它似乎与IE7和IE8一起使用。