7
votes

Impression d'une page sans l'afficher?

J'ai une page à partir de laquelle l'utilisateur sera capable de Imprimer . Cependant, la page qui sera imprimée n'est pas celle que l'utilisateur affiche, mais plutôt une nouvelle que j'aimerais générer en arrière-plan et (éventuellement) indique la boîte de dialogue d'impression pour cela.

Juste pour faire clairement les choses:

  1. utilisateur est sur " vue.aspx " et clique sur mon bouton Imprimer (pas le navigateur).
  2. Le bouton impression charge le contenu de " imprimable.aspx " et affiche une boîte de dialogue d'impression pour elle pendant que l'utilisateur est toujours sur " vue.aspx < / fort> ".

    FYI, qu'est-ce que j'essaie d'éviter, c'est d'avoir le "STRUT> imprimable.aspx " Ouvrir dans une nouvelle fenêtre, puis montrer sa boîte de dialogue Imprimer.

    Merci d'avance.


0 commentaires

4 Réponses :


12
votes

Utilisez une combinaison de balises multimédia dans CSS pour afficher / masquer les objets pour l'impression.

<LINK rel="stylesheet" type"text/css" href="screen.css" media="screen">
<LINK rel="stylesheet" type"text/css" href="print.css" media="print">


4 commentaires

+1: De cette façon, vous n'avez même pas besoin d'une deuxième page, juste une deuxième feuille de style. La même page rendra simplement différemment à travers l'imprimante.


J'aimerais un exemple de travail de cela. J'ai plusieurs contrôles et conteneurs que je ne voudrais pas être imprimé, mais j'ai absolument aucune idée de la façon dont je voudrais faire le tour efficacement. Merci.


Et si les éléments de la version imprimable de la version imprimable ne sont pas encore chargés sur la version à l'écran? Devrais-je le charger via quelque chose comme Ajax ou simplement charger une page séparée sur un panneau caché, comme User378806 suggéré? Merci.


@RAFAEL: Si vous ne voulez pas vous déconner avec des iframes, vous pouvez simplement ajouter "" à votre page "imprimable.aspx". Il imprimera puis revenir à l'écran précédent. Cela fonctionnera mieux dans les navigateurs qui ne supportent pas les iframes.



0
votes

Je ne pense pas ce que vous essayez d'être possible. Mais je pourrais avoir tort. Bien que le meilleur moyen d'aborder cela consiste à utiliser une feuille de style CSS différente.


0 commentaires

0
votes

Vous pouvez charger la page dans un élément iframe caché, puis utiliser JavaScript pour exécuter la fonction d'impression de cette page.

Mais, comme @carter suggéré, CSS est la meilleure approche. Pourquoi charger du contenu en double plus d'une fois lorsque vous pouvez simplement resserrer le contenu actuel?


1 commentaires

Et si les données à afficher ne sont pas chargées sur la page en cours et que la version imprimable contient tous ses détails: Serait préférable de charger le contenu restant via quelque chose comme Ajax ou de charger simplement le contenu d'un panneau caché?



1
votes

Lorsque vous avez cliqué sur le bouton imprimé , ajoutez la imprimable.aspx dans un panneau caché de vue.aspx. Répondez en ajoutant JavaScript dans l'événement ONLOWLOW de VIEW.ASPX & Imprimez le panneau caché avec fenêtre.Print ()


0 commentaires