2008-10-14 7 views
2

J'ai une application Web basée sur J2EE.Impression de pages Web par programmation en Java

Dans l'une des pages se trouve un bouton intitulé "Imprimer".

Mon problème est quelque chose comme ceci:

L'utilisateur entre le nom des outils pour par exemple: ToolName1 ToolName2 ToolName3

clique ensuite sur "Imprimer".

L'action prévue est que les détails de l'outil des 3 outils soient récupérés à partir de db puis imprimés un outil par page. (i.e En cliquant sur ce bouton, un traitement devrait avoir lieu en arrière-plan de la récupération db avant d'envoyer les détails à l'imprimante ...)

Veuillez indiquer comment cette tâche d'impression de page Web peut être réalisée.

Espérons que le problème est clair.

Merci d'avance ... :)

Répondre

1

Le bouton d'impression doit soumettre le formulaire au serveur sur lequel vous préparez la sortie que vous souhaitez imprimer (les détails de l'outil, etc.). Ceci est rendu comme d'habitude en utilisant votre page JSP ou autre.

Pour terminer le travail, appelez le window.print() sur la page de résultats et faites-le virer sur le chargement de la page (ou événement prêt pour le document).

Éditer: Hmm. J'aurais dû regarder la date. Eh bien, le conseil est valable.

0

Du côté client, je suppose? Si c'est le cas, il n'y a rien sur Java mais sur JavaScript. Appelez simplement la méthode window.print() et une boîte de dialogue d'impression apparaîtra.

+0

Je suis désolé je pense que je n'ai pas fait la question claire ... ont ajouté plus d'informations à la question ... – ria

3

Vous pouvez faire le bouton d'appel un peu de Javascript:

<script> 
    function printPage() { 
     window.print(); 
    } 
</script> 

Vous appelleriez cela en utilisant quelque chose comme:

<form> 
<input TYPE="button" onClick="printPage()"> 
</form> 

ou directement:

<input TYPE="button" onClick="window.print()"> 

Si vous devez formater la sortie sur plusieurs pages que vous utiliserez page-break-before Propriété CSS. Par exemple:

<style> 
    div.tool { 
     page-break-before: always 
    } 
</style> 

<div class="tool" id="tool1"> 
... 
</div> 
<div class="tool" id="tool2"> 
... 
</div> 

Vous pouvez mettre cela dans une feuille de style spécifique "impression" comme suggéré par Guido García.

+0

Je suis désolé, je pense que je n'ai pas fait la question claire .... Je dois faire un peu traitement en arrière-plan avant d'envoyer les détails à l'imprimante ... Cette page contient en réalité certains noms d'outils, dont les détails sont stockés dans la base de données. Je dois aller chercher les détails et imprimer les détails de chaque outil dans une page – ria

+0

Je suppose que vous ne demandez pas comment récupérer les données de la base de données. Demandez-vous comment obtenir chaque ensemble de résultats sur une page différente? –

3

Du côté client, vous pouvez simplement appeler window.print();

Autres conseils:

  • Vous pouvez utiliser une imprimante CSS convivial pour personnaliser votre page de présentation:
<link rel="stylesheet" type="text/css" media="print" href="print.css" /> 
  • Vous pouvez utiliser un composant côté serveur qui génère une version PDF de la page. Dans de nombreux cas, il est intéressant d'avoir un contrôle profond de la présentation finale.
+0

Merci. J'ai modifié la question pour la rendre plus claire. – ria

0

Si à imprimer la page a besoin logique supplémentaire que vous pourriez faire l'une des choses suivantes:

  • comprennent les données calculées dans votre page régulière, mais le cacher (style = « visibility: hidden ») puis le rendre visible avec print.css (media = print) comme décrit par Guido afin qu'il n'apparaisse que lorsque vous imprimez.
  • Créer une nouvelle page, vous pouvez vous connecter à partir de la page Web qui présente les données calculées

Les deux ont leurs avantages.

Je vous suggère également de ne pas compter uniquement sur Javascript. Il peut être assez déroutant quand un bouton d'impression ne s'imprime pas parce que vous n'exécutez pas JS. Je vous suggère de créer un lien html normal qui va à la page imprimée où l'utilisateur peut utiliser le bouton d'impression du navigateur. Cacher ce lien avec javascript et le remplacer par le bouton javascript dépendant. Ceci s'assurera que le bouton n'apparaît que lorsque javascript est activé.

+0

Merci Boris Mon problème est quelque chose comme ceci: L'utilisateur entre le nom des outils pour par exemple: ToolName1 ToolName2 ToolName3 clique ensuite sur « Imprimer ». L'action prévue est que les détails de l'outil des 3 outils soient récupérés à partir de db et ensuite imprimés d'un outil par page. J'espère avoir clarifié le problème. – ria

Questions connexes