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

avec Java Discussion :

Impression d'une image


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut Impression d'une image
    Bonjour

    Voici mon problème, au seins de mon application je souhaite mettre en place un système d'impression ( qui imprimes des JFreeChart et des tableaux de resultats)

    Le document est destiné à être envoyé directement aux clients et donc je souhaite soigner la présentation.

    Pour le moment tout fonctionne correctement sauf une chose, dans ma "page de garde" j'incorpore une image avec le logo de l'entreprise, que je remets d'ailleurs sur toutes les pages...or de façon qui me semble aléatoire cette image n'apparait pas toujours et je ne comprends pas pourquoi ( elle apparaitrais jamais, je me serais dis "Ok c'est moi qui est fait une erreur..." mais la je l'ai à peu près une fois sur 2

    Voici la classe en question qui étends Printable, j'ai seulement mis les 2 methodes qui me semblaient pertinente à mon problème.

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    public int print(Graphics g, PageFormat pf, int pageIndex)throws PrinterException {
          int retValue = Printable.PAGE_EXISTS;
          Graphics2D g2d = (Graphics2D)g;
          totalNumPages = 5 + numberPageToPrint;
     
          switch(pageIndex){
             case 0 : 
                retValue = printPreviewPage(g, pf);
                break;
             case 1:
                 retValue = printFirstPage(g);
                 pf.setOrientation(PageFormat.REVERSE_LANDSCAPE);
                 pageFormat.setOrientation(PageFormat.REVERSE_LANDSCAPE);
                 break;
             case 2:
                retValue = printChartPage(panel, g2d, pf, pageIndex);
                break;
             case 3:
                retValue = printChartPage(panel2, g2d, pf, pageIndex);
                break;
             case 4:
                retValue = printChartPage(panel3, g2d, pf, pageIndex);
                pf.setOrientation(PageFormat.PORTRAIT);
                pageFormat.setOrientation(PageFormat.PORTRAIT);
                break;
             default:
                      if(lastPageIndex == pageIndex){
                         endData = printDataPage(g);
                         if(endData)
                            retValue = Printable.NO_SUCH_PAGE;
                         else
                            numberPageToPrint++;
                      }else {
                        lastPageIndex = pageIndex;
                        if(endData)
                            retValue = Printable.NO_SUCH_PAGE;
                      }
                 break;
          }
          return retValue;
        }
     
        private int printPreviewPage(Graphics g, PageFormat pf){
                double width = 0;
                double height = 0;
                if(pf.getOrientation() ==1) {
                    width  = pf.getImageableWidth();
                    height = pf.getImageableHeight();
                }else {
                    width  = pf.getImageableHeight();
                    height = pf.getImageableWidth();
                }
                g.setColor(Color.BLACK);
                Toolkit toolkit = Toolkit.getDefaultToolkit();
                Image img = toolkit.getImage(getClass().getResource("/images/logo_fnh_black_v_1.jpg"));
                g.drawImage(img, (int)width /10, 0, null);
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException ex) {
                    Logger.getLogger(MPrintTableTir.class.getName()).log(Level.SEVERE, null, ex);
                }
                g.drawString("adresse", (int) width/2 - 20, (int)height - 50);
                g.drawString("adresse", (int) width/2 - 20, (int)height - 35);
                g.drawString("pays", (int) width/2 - 20, (int)height - 20);
                DateFormat datedujour = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.FRANCE);
                g.drawString(datedujour.format(new Date()), (int)width-75, 25);
                datedujour = new SimpleDateFormat("HH'h'mm");
                g.drawString(datedujour.format(new Date()), (int)width-75, 40);
                Font font = new Font("Arial", 1, 42);
                g.setFont(font);
                String msg = "RANGE TABLE";
                width = width -100;
                g.drawString(msg, (int) width/3,(int) ((int) height / 1.7));
                g.drawRect((int) width/5-20, (int) ((int) height / 1.85)-5, 470, 60);
                g.drawRect((int) width/5-21, (int) ((int) height / 1.85)-6, 472, 62);
                g.drawRect((int) width/5-22, (int) ((int) height / 1.85)-7, 474, 64);
                g.drawRect((int) width/5-23, (int) ((int) height / 1.85)-8, 476, 66);
                font = new Font("Arial", 1, 26);
                g.setFont(font);
                int poxX = 200;
                if (documentTitle.length()<10)
                     poxX = 250;
                else if (documentTitle.length()>20)
                     poxX = 150;
                g.drawString(documentTitle, poxX, (int) ((int) height / 1.5));
                font = new Font("Arial", 1, 8);
                g.setFont(font);
                g.drawString("******", 50, 825);
                return Printable.PAGE_EXISTS;
        }
    Actuellement, j'ai mis un thread qui diminue cet effet...mais c'est moche et ca ne marche pas à 100% ...si quelqu'un à une idée d'ou sa pourrait venir et/ou des idée pour debuggé cela, c'est avec grand plaisir.

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut Eventuellement ...
    Bonjour,

    Ceci n'est pas la réponse à ton problème immédiat ; mais comme il concerne une application "entreprise",
    je te recommande d'utiliser JasperReport.
    Tuto avec JFreeChart ici.

    Si tu dois régulièrement produire des documents imprimés cela vaut la peine de travailler la question.
    Il a un éditeur de rapport IReport qui fonctionne à merveille
    et qui fait gagner des centaines d'heures de travail (sans exagération)
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    Hum, j'y avais songé mais au final j'étais pas sur que se soit des plus pertinents, en réalité, les données que je dois imprimmer en l'occurence, proviennent d'un vieux programme de calcul en fortrant auquel mon application Java passe en paramètre un fichier de donnée et en retour le programme fortrant crée un fichier de résultat. ( Le code fortrant , je ne dois pas y toucher, il est vieux de 30 ans )

    Enfin je m'éloigne du sujet de mon problème qui est de comprendre pourquoi l'image disparait de façon "aléatoire" lors de l'impression

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 710
    Points : 4 794
    Points
    4 794
    Par défaut
    Il est possible que Jasper soit tout de même une solution
    (je n'ai pas d'actions chez eux et d'ailleurs Jasper est gratuit)

    Si le fichier de résultats (généré par le programme en fortran) est structuré (un tableau de clients par exemple),
    alors on peut le transformer en fichier CSV (texte séparé par des ";")
    et le donner à Jasper qui te fabrique un état de toute beauté (sortie papier, pdf, etc.)

    Tu peux faire un essai en téléchargeant IReport (générateur d'état pour Jasper) et lui donner un fichier csv pour voir.
    Si tu as déjà utilisé un générateur d'état (celui d'Access, Crystal Report, etc.) alors c'est très facile.

    L'inconvénient est qu'il te faut au moins une demi-journée pour prendre en main l'outil.
    Cela deviendra très rentable dès que tu auras d'autres états à produire.
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2009
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    Pour le moment j'ai trouvé une solution temporaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    g.drawImage(img, (int)width /10, 0, null);
    try {
                   Thread.sleep(1);
         } catch (InterruptedException ex) {
                    Logger.getLogger(MPrintTableTir.class.getName()).log(Level.SEVERE, null, ex);
    }
    g.drawImage(img, (int)width /10, 0, null);
    Cependant en effet ta solution semble intéressante, je vais surrement essayer si on m'en laisse le temps

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/01/2007, 19h31
  2. Impression d'une image pleine page
    Par Cyrilh7 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/11/2005, 09h18
  3. Enlever le boutton impression sur une image !
    Par Gab-Gab dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/11/2004, 23h30
  4. [BPW] Impression d'une image BMP
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 13
    Dernier message: 21/08/2003, 14h34

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