【问题标题】:Close pop up window after binary file is sent to browser二进制文件发送到浏览器后关闭弹出窗口
【发布时间】:2009-12-04 18:11:22
【问题描述】:

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

详情如下:

每当我的网络应用程序需要打印时,它会将一些参数传递给一个弹出窗口,该窗口将显示打印选项。当用户单击“打印”按钮时,它将设置 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();

完成后,我需要关闭弹出窗口。但是,在刷新响应后,您似乎无能为力。有什么想法吗?

提前致谢!

安吉拉

【问题讨论】:

    标签: asp.net pdf browser response binaryfiles


    【解决方案1】:

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

    【讨论】:

    • 我认为这可行。但是,我想显示打印选项列表。所以有一个 3 步骤的过程。 1. 用户点击父页面上的某些内容进行打印。 2. 弹出窗口显示打印选项列表。 3. 打印并关闭弹出窗口。
    • 有一些不错的 jQuery 插件,允许您通过显示模式对话框来模拟弹出窗口 (docs.jquery.com/UI/Dialog)。
    • 是的,我已经尝试过 jquery 模态对话框。但是生成pdf后我无法关闭对话框。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-01
      • 2011-10-15
      相关资源
      最近更新 更多