Закрыть всплывающее окно после отправки бинарного файла в браузер

Есть ли способ закрыть всплывающее окно после того, как страница записывает двоичные данные (PDF) в браузер?

Вот подробности:

Всякий раз, когда моему веб-приложению необходимо распечатать, оно передает некоторые параметры во всплывающее окно, в котором отображаются параметры печати. Когда пользователь нажимает кнопку «Печать», он устанавливает 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();

После этого мне нужно будет закрыть всплывающее окно. Однако кажется, что вы ничего не можете сделать после сброса ответа. Любые идеи?

Заранее спасибо!

Анджела


person Angela    schedule 04.12.2009    source источник


Ответы (2)


Вместо создания iframe во всплывающем окне вы можете создать его в родительском окне. Таким образом, как только пользователь нажмет кнопку print, вы сможете безопасно закрыть всплывающее окно, не прерывая процесс печати. Но вместо того, чтобы мучиться с созданием новых всплывающих окон, которые могут быть заблокированы некоторыми браузерами, я бы просто создал заполнитель на главной странице, чтобы пользователь мог выбрать параметры печати, а затем распечатать документ.

person Darin Dimitrov    schedule 04.12.2009
comment
Я думаю, это сработает. Однако я хочу показать список параметров печати. так что есть 3 шага процесса. 1. Пользователь щелкает что-то на родительской странице для печати. 2. Во всплывающем окне отображается список параметров печати. 3. Распечатайте и закройте всплывающее окно. - person Angela; 04.12.2009
comment
Есть хорошие плагины для jQuery, которые позволяют имитировать всплывающие окна, показывая модальные диалоги (docs.jquery.com/UI /Диалог). - person Darin Dimitrov; 04.12.2009
comment
Да, я пробовал модальные диалоги jquery. однако я не могу закрыть диалоговое окно после создания PDF-файла. - person Angela; 04.12.2009

На всякий случай, если у кого-то еще есть такая же проблема. Это решение, которое, кажется, работает для меня.

Я использую простое модальное окно jQuery, чтобы отобразить страницу списка параметров. На этой странице у меня есть оконный таймер, который запускается каждую секунду, чтобы проверить сервер, выполнено ли задание на печать. Я использую для этого ajax. Как только работа выполнена, я обновляю переменную сеанса, и вызов ajax к серверу подберет значение сеанса и закроет всплывающее окно.

person Angela    schedule 04.12.2009