Закрыть всплывающее окно после отправки бинарного файла в браузер - PullRequest
1 голос
/ 04 декабря 2009

Есть ли способ закрыть всплывающее окно после того, как страница записывает двоичные данные (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();

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

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

Angela

Ответы [ 2 ]

0 голосов
/ 05 декабря 2009

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

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

0 голосов
/ 04 декабря 2009

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

...