以下是我正在使用的代码:
System.Windows.Browser.HtmlPopupWindowOptions pop = new System.Windows.Browser.HtmlPopupWindowOptions();
pop.Directories = false;
pop.Menubar = false;
pop.Status = false;
pop.Toolbar = false;
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(@"http://" + App.Host + App.VirtualDirectory+ "/Print.aspx?ID=" + ID, UriKind.Absolute), "_blank", "location=no, toolbar=no, status=no");
仅在生产中发生(在本地和在测试环境中工作)窗口显示然后立即关闭。同样,这在我的开发环境中本地工作,然后在内部测试环境中工作正常。
正在调用的页面会创建一个动态PDF以显示在屏幕上。以下是修改响应对象的代码:
context.Response.ClearHeaders();
context.Response.ClearContent();
context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf");
然后将实际的PDF对象写入输出流。
如果我在IE中的新选项卡中打开URL,我可以按预期查看文档,只能通过Silverlight内部的打印按钮,并且只能在IE中查看。我在Chrome中尝试了这个,它运行正常,没有测试过Firefox。
没有弹出窗口阻止程序,窗口显示然后消失。我检查了安全设置,并将域添加到我的可信站点列表中。寻找任何其他建议。
答案 0 :(得分:0)
我正在回答我自己的问题,因为我找到了合适的解决方法。
我替换了
行context.Response.AddHeader("Content-Disposition", "attachment;filename=print.pdf");
用
context.Response.ContentType = "application/pdf";
因此,如果用户具有预定义的PDF查看器,则不会向用户显示“打开/保存”对话框,而是直接在浏览器中打开。然后,他们可以从Internet Explorer打印或保存文件。