2009-12-04 6 views
1

Existe-t-il un moyen de fermer une fenêtre contextuelle après que la page a écrit des données binaires (PDF) dans le navigateur?Fermer la fenêtre contextuelle après l'envoi du fichier binaire au navigateur

Voici les détails:

Chaque fois que mon appilcation web a besoin d'imprimer, il passera quelques paramètres sur une fenêtre pop-up, qui permet d'afficher les options d'impression. Lorsque l'utilisateur clique sur le bouton Imprimer, il définit le src d'un iframe qui appellera la page qui effectue l'impression.

J'ai PDFConverter pour convertir URL/HTML en fichier pdf. A la fin de la conversion, il écrira le binaire dans le navigateur. Voici quelques codes:

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(); 

Une fois cela fait, je vais devoir fermer la fenêtre contextuelle. Cependant, il semble que vous ne pouvez rien faire après que la réponse soit vidée. Des idées?

Merci d'avance!

Angela

Répondre

0

Au lieu de créer la iframe dans la fenêtre pop-up, vous pouvez créer dans la fenêtre parent. De cette façon, une fois que l'utilisateur clique sur le bouton print, vous pouvez fermer la fenêtre en toute sécurité sans interrompre le processus d'impression. Mais au lieu de passer à travers toute la peine de créer de nouvelles fenêtres popups qui pourraient être bloquées par certains navigateurs, je créerais simplement un espace réservé dans la page principale afin que l'utilisateur puisse choisir les options d'impression et ensuite imprimer le document.

+0

Je pense que cela fonctionnerait. Cependant, je veux montrer la liste des options d'impression. il y a donc un processus en trois étapes. 1. L'utilisateur clique sur quelque chose sur la page parent pour imprimer. 2. Une fenêtre contextuelle affiche la liste des options d'impression. 3. Imprimez et fermez la fenêtre. – Angela

+0

Il existe de jolis plugins pour jQuery qui vous permettent de simuler des popups en affichant des dialogues modaux (http://docs.jquery.com/UI/Dialog). –

+0

Oui, j'ai essayé les boîtes de dialogue modales jquery. Cependant, je ne peux pas fermer la boîte de dialogue après la génération du pdf. – Angela

0

Juste au cas où quelqu'un d'autre aurait le même problème. C'est la solution qui semble fonctionner pour moi.

J'utilise le jQuery Simple Modal pour afficher ma page de liste d'options. Sur cette page, j'ai une minuterie de fenêtre qui s'exécute toutes les secondes pour vérifier si le travail d'impression est terminé. J'utilise ajax pour ça. Une fois le travail terminé, je mets à jour la variable de session, et l'appel ajax au serveur ramassera la valeur de session et fermera la fenêtre pop-up.

Questions connexes