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

2D Java Discussion :

Pb d'impression sur plusieurs pages d'un JGraph


Sujet :

2D Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2005
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Pb d'impression sur plusieurs pages d'un JGraph
    Bonjour,

    cela fait un moment maintenant que j'essaye d'imprimer un JGraph qui est assez gros (dans les 10000 px de large sur 1500 de haut) sur plusieurs pages...

    J'utilise le bout de code suivant (récupéré sur le net et remanié un peu selon mon contexte) :

    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
    public int print(Graphics g, PageFormat printFormat, int page) 
        {
            System.out.println("      Methode print du ScrollPane... ");
            Dimension pSize = this.getPreferredSize(); 
            System.out.println("Graph width = " +pSize.width+ " , height = " +pSize.height);
     
            int w = (int) (printFormat.getWidth());
            int h = (int) (printFormat.getHeight());
            int cols = (int) Math.max(Math.ceil((double) (pSize.width - 5) / (double) w), 1);
            int rows = (int) Math.max(Math.ceil((double) (pSize.height - 5) / (double) h), 1);
     
            System.out.println("Nb pages = " +(cols * rows));
     
            if (page < cols * rows) {
                // Configures graph for printing
                RepaintManager currentManager = RepaintManager.currentManager(this);
                currentManager.setDoubleBufferingEnabled(false);
                //double oldScale = getGraph().getScale();
     
                //getGraph().setScale(1 / pageScale);
                int dx = (int) ((page % cols) * printFormat.getWidth());
                int dy = (int) ((page % rows) * printFormat.getHeight());
                g.translate(-dx, -dy);
                g.setClip(dx, dy, (int) (dx + printFormat.getWidth()),(int) (dy + printFormat.getHeight()));
                System.out.println("Coor Clip = " +dx+ " ,"+dy+ " ,"+
                        (int) (dx + printFormat.getWidth())+ " ,"+(int) (dy + printFormat.getHeight())+ " ,");
                //g.setClip(1, 1, 10000,500);
                //      Prints the graph on the graphics.
                System.out.println("Printing page " +page);
                paint(g);
                //         Restores graph
                g.translate(dx, dy);
                //graph.setScale(oldScale);
                currentManager.setDoubleBufferingEnabled(true);
                return PAGE_EXISTS;
            } 
            else {
                return NO_SUCH_PAGE;
            }
        }
    et pour l'appel proprement dit de l'impression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    PrinterJob printJob = PrinterJob.getPrinterJob();
              printJob.setPrintable(scrollPaneCollabGraph);
              if (printJob.printDialog()) {
                  try {
                      printJob.print();
                  }
                  catch (Exception e)
                  { }
              }
    Le résultat est tjs le même qqe soient les modifs apportées à mon code:
    je n'obtiens en fait qu'une seule page imprimée qui comporte la partie du JGraph affichée dans mon browser!

    Pourtant via les traces que j'ai mises j'obtiens le résultat suivant dans ma console (Applet) (pour une tentative d'impression de 2 pages) :

    ===== Impression du graphe !... =====
    Methode print du ScrollPane...
    Graph width = 9703 , height = 1248
    Nb pages = 36
    Coor Clip = 0 ,0 ,841 ,595 ,
    Printing page 0

    Methode print du ScrollPane...
    Graph width = 9703 , height = 1248
    Nb pages = 36
    Coor Clip = 841 ,595 ,1682 ,1190 ,
    Printing page 1


    La hauteur et largeur totale du graphe semblent bonnes...
    il y aurait donc au total 36 pages à imprimer ce qui semble possible...
    les coordonnées du Clip semblent évoluer correctement...

    Mais impossible d'obtenir autre chose à l'impression qu'une seule et même unique page qui reflète non pas le graphe à partir des coord.
    0 ,0 ,841 ,595
    puis
    841 ,595 ,1682 ,1190
    etc...
    Mais donc la partie actuelle du graphe affichée dans mon browser (selon l'endroit où je me positionne dans le scrolling...)

    Si qq'un a une idée de là où ça coince, je suis preneur!!!
    Un grand merci d'avance pour vous pencher sur mon pb...

    Stéphane

    [Modéré par Wichtounet]
    Merci d'utiliser les balises [CODE]
    les règles du forum

  2. #2
    Membre éclairé Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Points : 724
    Points
    724
    Par défaut
    Et si tu l'exportes en tant qu'image au préalable avant de l'imprimer ?
    "Il y a 3 personnes en ce monde sur qui tu peux compter : moi, le pape et le cavalier solitaire ! "
    Penser à svp

Discussions similaires

  1. Forcer l'impression sur plusieurs pages
    Par yoyodemars dans le forum VB.NET
    Réponses: 2
    Dernier message: 27/02/2012, 08h21
  2. Impression sur plusieurs pages
    Par p1k1 dans le forum Silverlight
    Réponses: 4
    Dernier message: 29/06/2011, 13h33
  3. [AC-2007] Impression sur plusieurs pages
    Par Chris 81 dans le forum VBA Access
    Réponses: 0
    Dernier message: 28/04/2009, 10h00
  4. Impression sur plusieurs page Objet ocument)
    Par totoprog dans le forum ASP.NET
    Réponses: 1
    Dernier message: 19/04/2009, 18h18
  5. [D7 et Quickreport 3] Impression sur plusieurs pages
    Par Moine dans le forum Débuter
    Réponses: 3
    Dernier message: 13/12/2007, 12h01

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