将二进制文件发送到浏览器后关闭弹出窗口

时间:2009-12-04 18:11:23

标签: asp.net pdf browser response binaryfiles

有没有办法在页面将二进制数据(PDF)写入浏览器后关闭弹出窗口?

以下是详细信息:

每当我的web appilcation需要打印时,它会将一些参数传递给弹出窗口,弹出窗口将显示打印选项。当用户单击“打印”按钮时,它将设置iframe的src,该iframe将调用执行打印的页面。

我有PDFConverter将URL / HTML转换为pdf文件。在转换结束时,它会将二进制文件写入浏览器。以下是一些代码:

response.AddHeader("Content-Type", "binary/octet-stream");
response.AddHeader("Content-Disposition",
"inline; filename=" + fileName + ".pdf; size=" + pdfBytes.Length.ToString());
response.Flush();
response.BinaryWrite(pdfBytes);
response.Flush();

完成此操作后,我需要关闭弹出窗口。但是,在刷新响应后,您似乎无法执行任何操作。有什么想法吗?

提前致谢!

安吉拉

2 个答案:

答案 0 :(得分:0)

您可以在父窗口中创建iframe,而不是在弹出窗口中创建print。这样,一旦用户单击{{1}}按钮,您就可以安全地关闭弹出窗口而不会中断打印过程。但是,我没有经历创建可能被某些浏览器阻止的新弹出窗口的所有痛苦,而是在主页面中创建一些占位符,以便用户可以选择打印选项然后打印文档。

答案 1 :(得分:0)

以防万一其他人遇到同样的问题。这个解决方案似乎对我有用。

我使用jQuery Simple Modal来显示我的选项列表页面。在这个页面上,我有一个窗口计时器每1秒运行一次,如果打印作业完成,则检查服务器。我使用ajax。完成作业后,我更新会话变量,对服务器的ajax调用将获取会话值并关闭弹出窗口。