2009-12-04 95 views
1

在页面将二进制数据(PDF)写入到浏览器后,是否有办法关闭弹出窗口?将二进制文件发送到浏览器后关闭弹出窗口

下面是详细信息:

每当我的网络appilcation需要打印,它会传递一些参数到一个弹出窗口,这将显示打印选项。当用户点击“打印”按钮时,它将设置将调用打印页面的iframe的src。

我有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(); 

完成此操作后,我需要关闭弹出窗口。然而,看起来在响应被刷新后你无法做任何事情。有任何想法吗?

在此先感谢!

安吉拉

回答

0

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

+0

我认为这将工作。但是,我想显示打印选项列表。所以有三个步骤。 1.用户点击父页面上的某些内容进行打印。 2.弹出窗口显示打印选项列表。 3.打印并关闭弹出。 – Angela 2009-12-04 18:26:23

+0

jQuery有很好的插件,可以让你通过显示模态对话框来模拟弹出窗口(http://docs.jquery.com/UI/Dialog)。 – 2009-12-04 18:28:04

+0

是的,我已经尝试了jquery模态对话框。但是在pdf生成后,我无法关闭对话框。 – Angela 2009-12-04 19:25:04

0

只是为了防止其他人有同样的问题。这是似乎为我工作的解决方案。

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