我有一个Silverlight 4应用程序,我正在尝试显示PDF。我的方法是在Silverlight应用程序中单击按钮,使用HtmlPage.Window.Navigate打开一个新的浏览器窗口。此新浏览器窗口导航到的URL是ASP.Net Web表单页面,该页面通过SSRS SOAP API调用SQL Reporting Services。此调用返回一个字节数组,然后Web表单将使用以下代码流回浏览器:
byte[] report = SSRSRenderReport(reportPath, primaryId);
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("cache-control", "must-revalidate");
Response.AddHeader("content-length", report.Length.ToString());
Response.Buffer = true;
Response.ContentType = "application/pdf";
this.Response.AddHeader("Content-Disposition", "inline; filename=whatever.pdf");
Response.BinaryWrite(report);
Response.Flush();
Response.End();
从IE9和Firefox运行应用程序时,这一切都运行良好。但是,当从IE8运行应用程序时,按钮单击后会显示新的浏览器窗口,但随后会立即关闭,而不会显示PDF或提示打开/保存PDF。
如果我从图片中取出Silverlight并直接浏览呈现报告的URL,它可以正常工作,PDF将显示在浏览器中。我在使用HTTPS时看过一些描述此问题的帖子,但我目前只使用HTTP。
如何解决此问题的任何建议将不胜感激。
答案 0 :(得分:0)
试试这个,http://www.divelements.com/silverlight/tools.aspx我用它在flashlight网页中嵌入一个flash网站,所以只要你确定pdf viewer的大小就可以了。
答案 1 :(得分:0)
我们发现这个问题的根源是我们试图从视图模型而不是视图事件处理程序中显示我们的弹出窗口。最后,我们选择引入一个新视图,其中包含指向PDF URL的超链接。这对我们来说是有效的,是一种可接受的解决方案。