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 :

Imprimer A3 coupure


Sujet :

avec Java

  1. #1
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut Imprimer A3 coupure
    Salut à tous,
    Dans le programme que je développe, j'ai une fonction imprimer qui me permet d'imprimer mon panel principal.
    J'arrive très bien à l'imprimer en A4, je redimensionne le panel et le tour est joué.
    Par contre, quand je veux imprimer en A3, l'imprimante me sort bien une feuille A3 mais le dessin dessus est de la même taille que celui du A4 et en plus il est coupé

    Y a t il une méthode pour savoir si l'utilisateur choisi A3 ou A4 dans l'espoir de redimension en fonction du format de page choisi ?

    Ou peut être qu'il y a une erreur dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PrintUtilities.printComponent(panelPrincipal);
    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
    import java.awt.*;
     
    import javax.print.attribute.PrintServiceAttributeSet;
    import javax.swing.*;
    import java.awt.print.*;
     
    public class PrintUtilities implements Printable {
      private Component componentToBePrinted;
      private PageFormat pageFormat;
     
      public static void printComponent(Component c) {
        new PrintUtilities(c).print();
      }
     
      public PrintUtilities(Component componentToBePrinted) {
        this.componentToBePrinted = componentToBePrinted;
      }
     
      public void print() {
     
     
        PrinterJob printJob = PrinterJob.getPrinterJob();   
    	printJob.setPrintable(this);
    	pageFormat = printJob.defaultPage();
     
        if (printJob.printDialog())
          try {
        	PrintServiceAttributeSet psas = printJob.getPrintService().getAttributes();
        	System.out.println(psas.size());
     
            printJob.print();
          } catch(PrinterException pe) {
            System.out.println("Error printing: " + pe);
          }
      }
     
      public int print(Graphics g, PageFormat pf, int pageIndex) {
        if (pageIndex > 0) {
          return(NO_SUCH_PAGE);
        } else {
     
    		Dimension tailleDoc = componentToBePrinted.getSize();
    		double hauteurDocu = tailleDoc.getHeight()+20;
    		double hauteurPage = pf.getImageableHeight();
    		double largeurDocu = tailleDoc.getWidth()+20;
    		double largeurPage = pf.getImageableWidth();
     
    		double scaleX = largeurPage / largeurDocu;
    		double scaleY = hauteurPage / hauteurDocu;
     
    		double ratio = Math.min(scaleX, scaleY);	
     
    		Graphics2D g2d = (Graphics2D)g;
    		g2d.scale(ratio, ratio);
    		g2d.translate(pf.getImageableX()+20, pf.getImageableY()+20);
     
     
    		g2d.drawString("Edit : 29/05/09 13:19:01", (int) tailleDoc.getWidth()-350, (int)-50);
    		g2d.drawString("Tolérances", (int) tailleDoc.getWidth()-350, (int)50);
     
    		disableDoubleBuffering(componentToBePrinted);
    		componentToBePrinted.paint(g2d);
    		enableDoubleBuffering(componentToBePrinted);
     
    		return(PAGE_EXISTS);
        }
      }
     
      public static void disableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(false);
      }
     
      public static void enableDoubleBuffering(Component c) {
        RepaintManager currentManager = RepaintManager.currentManager(c);
        currentManager.setDoubleBufferingEnabled(true);
      }
    }
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  2. #2
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    J'ai peut être la solution mais c'est un peu tiré par les cheveux...
    j'affiche un Boite de dialog ou l'utilisateur choisie en A4 ou A3 puis j'affiche le print.printDialog.
    L'utilisateur re-sélectionne le format qu'il a choisie précédement et valide.
    comme ça je connais le format sous lequel veut imprimer l'utilisateur.

    2 défauts :
    ->Je supose que l'on ne peut imprimer qu'en A3 ou A4... pas de problème, sa m'arrange.
    ->si l'utilisateur choisie 2 formats différents entre ma boite de dialog et le print.printDialog...

    Si vous avez des solutions plus soignée, je suis preneur...
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

  3. #3
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Le code que j'ai développé et qui est expliqué dans le message ci-dessus :

    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
    public void print() {
     
        PrinterJob printJob = PrinterJob.getPrinterJob();  
        pageFormat = printJob.defaultPage();
        pageFormat.setOrientation(PageFormat.LANDSCAPE);
    	printJob.setPrintable(this,pageFormat);
     
        if (printJob.printDialog())
          try {
        	pageFormat = printJob.pageDialog(pageFormat);
        	Paper paper = pageFormat.getPaper();
        	Paper save = pageFormat.getPaper();
        	paper.setImageableArea(paper.getImageableX(), paper.getImageableY(), paper.getImageableWidth(), paper.getImageableHeight());
     
        	pageFormat.setPaper(paper);
        	printJob.setPrintable(this,pageFormat);
        	printJob.print();
        	pageFormat.setPaper(save);
     
          } catch(PrinterException pe) {
            System.out.println("Error printing: " + pe);
          }
      }
    C'est moche... c'est très moche, c'est pas hergonomique... enfin bref, sa marche
    Il était une fois [...] Et ils vécurent heureux et eurent beaucoup d'enfants!

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

Discussions similaires

  1. [VB.NET]Comment Imprimer une form
    Par bernard06 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/10/2011, 17h43
  2. Comment imprimer des tabulations ?
    Par Invité dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 11h30
  3. [VB6][Flexgrid] Imprimer
    Par tiboleo dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 24/10/2002, 14h14
  4. [VB6] [Outlook] Imprimer un mail en VB
    Par der dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 12/09/2002, 14h20
  5. Comment imprimer le contenu d'un TStringGrid
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 19/06/2002, 15h41

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