有没有办法在页面将二进制数据(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();
完成此操作后,我需要关闭弹出窗口。但是,在刷新响应后,您似乎无法执行任何操作。有什么想法吗?
提前致谢!
安吉拉
答案 0 :(得分:0)
您可以在父窗口中创建iframe
,而不是在弹出窗口中创建print
。这样,一旦用户单击{{1}}按钮,您就可以安全地关闭弹出窗口而不会中断打印过程。但是,我没有经历创建可能被某些浏览器阻止的新弹出窗口的所有痛苦,而是在主页面中创建一些占位符,以便用户可以选择打印选项然后打印文档。
答案 1 :(得分:0)
以防万一其他人遇到同样的问题。这个解决方案似乎对我有用。
我使用jQuery Simple Modal来显示我的选项列表页面。在这个页面上,我有一个窗口计时器每1秒运行一次,如果打印作业完成,则检查服务器。我使用ajax。完成作业后,我更新会话变量,对服务器的ajax调用将获取会话值并关闭弹出窗口。