2009-12-04 97 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調用將獲取會話值並關閉彈出窗口。