IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

Imprimer un outputstream jsper pdf directement sur l'imprimante par defaut


Sujet :

Jasper

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut Imprimer un outputstream jsper pdf directement sur l'imprimante par defaut
    Bonjour,

    Je travaille sur une application JSF qui génère des rapport jasper cote client sous format PDF.
    Est ce qu'il y a une possibilité d'imprimer le PDF générer automatiquement par l'imprimante client au lieu de l'afficher ou le telecharger.

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    public void viewReport(String reportPath, String outPutReportFormat,Map parameters)
      	{
      	try {
      		SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
      		JasperDesign jasperDesign = JRXmlLoader.load(reportPath);
      		JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
      		Locale.setDefault( new Locale("fr") );
      		Connection con = dataSource.getConnection();
      		JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,con);
      		FacesContext context = FacesContext.getCurrentInstance();
      		HttpServletResponse response = (HttpServletResponse) context
      		.getExternalContext().getResponse();
      		//PDF
      		byte[] bytes;
     
     
      		bytes = JasperExportManager.exportReportToPdf(jasperPrint);
     
      		response.setContentType("application/pdf");
     
      		response.addHeader("Content-disposition",
     
      		"attachment;filename=FileName.pdf");
     
      		response.setContentLength(bytes.length);
     
      		ServletOutputStream servletOutputStream = response
     
      		.getOutputStream();
      		servletOutputStream.write(bytes, 0, bytes.length);
     
      		servletOutputStream.flush();
     
      		servletOutputStream.close();
      		//Fin PDF
     
            FacesContext.getCurrentInstance().responseComplete();
    	}
      		catch(JRException ex){
      			ex.printStackTrace();
      		}
      		catch(Exception ex){
      			ex.printStackTrace();
      		}
     
      	}
    Merci

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Tu veux directement imprimer le document sur le poste client, sans lui demander son avis? Là comme ça à chaud je dirais - NON.
    Ce n'est pas possible, par ce que c'est potentiellement dangereux, de toute façon le navigateur internet va te l'interdire (ou plutôt ne te donnera pas l'accès).
    En revanche ce qui est possible c'est de faire afficher le contenu, puis afficher la fenêtre pop-up de l'impression (celle qui s'affiche en faisant Ctrl-P) en demandant de cliquer sur OK. Lorsqu'on clique sur OK, c'est la page internet qui s'imprime avec tous les en-têtes web (url, titre, nb de pages) et non pas le PDF seul.
    Est ce que tu veux faire ça?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par cmako Voir le message
    Tu veux directement imprimer le document sur le poste client, sans lui demander son avis? Là comme ça à chaud je dirais - NON.
    Ce n'est pas possible, par ce que c'est potentiellement dangereux, de toute façon le navigateur internet va te l'interdire (ou plutôt ne te donnera pas l'accès).
    En revanche ce qui est possible c'est de faire afficher le contenu, puis afficher la fenêtre pop-up de l'impression (celle qui s'affiche en faisant Ctrl-P) en demandant de cliquer sur OK. Lorsqu'on clique sur OK, c'est la page internet qui s'imprime avec tous les en-têtes web (url, titre, nb de pages) et non pas le PDF seul.
    Est ce que tu veux faire ça?
    Bonjour,
    Merci pour la réponse, oui c'est une solution qui peut m'aider et si c'est possible de defenir le nombre de copie à imprimer automatiquement

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Points : 556
    Points
    556
    Par défaut
    Pour ouvrir une fenêtre pop-up Imprimer il faut exécuter un code en Javascript.
    A vrai dire je n'ai jamais fait exécuter JasperReports sur le poste client, je ne peux pas te dire comment faire.

    Je pense que tu doit générer une page web avec ton rapport, puis appeler la fonction Javascript qui ouvre ta fenêtre pop-up Imprimer

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par cmako Voir le message
    Pour ouvrir une fenêtre pop-up Imprimer il faut exécuter un code en Javascript.
    A vrai dire je n'ai jamais fait exécuter JasperReports sur le poste client, je ne peux pas te dire comment faire.

    Je pense que tu doit générer une page web avec ton rapport, puis appeler la fonction Javascript qui ouvre ta fenêtre pop-up Imprimer
    J'ai finalement réussi a afficher la fenêtre popup pour imprimer le rapport voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
      		JasperDesign jasperDesign = JRXmlLoader.load(reportPath);
      		JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
      		Locale.setDefault( new Locale("fr") );
      		Connection con = dataSource.getConnection();
      		JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,con);
      		FacesContext context = FacesContext.getCurrentInstance();
      		HttpServletResponse response = (HttpServletResponse) context
      		.getExternalContext().getResponse();
      		//html
      		PrintWriter pw = response.getWriter();
            response.setContentType("text/html");
     
            JRHtmlExporter htmlExporter = new JRHtmlExporter();
            htmlExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            htmlExporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, Boolean.FALSE);
            htmlExporter.setParameter(JRHtmlExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.FALSE);
     
            htmlExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, pw);
            htmlExporter.exportReport();
            PrintWriter out = response.getWriter();
            out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
            out.println("<HTML>");
            out.println(" <HEAD><TITLE>A Second Servlet</TITLE>");
            out.println(" </HEAD>");
            out.println(" <BODY leftmargin='0' onload='window.print();window.history.back()'>");
            out.println(" </BODY>");
            out.println("</HTML>");
            pw.flush();
            pw.close();
      		//fin html
            FacesContext.getCurrentInstance().responseComplete();
    mais le problème que je dois définir l'impression de 3 copies je ne sais pas si c'est possible

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/07/2012, 21h32
  2. Macro pour imprimer sur "l'imprimante par défaut"
    Par Balboa24 dans le forum VBA PowerPoint
    Réponses: 2
    Dernier message: 11/01/2009, 01h02
  3. Imprimer un etat directement sur une imprimante
    Par jeunot0108 dans le forum Forms
    Réponses: 10
    Dernier message: 07/04/2008, 22h04
  4. Réponses: 3
    Dernier message: 22/05/2007, 10h33
  5. [CR.NET] Imprimante par defaut sur PC client
    Par GTRANNECY dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 26/04/2005, 13h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo