bonjour a tous.
J'aimerai pouvoir imprimé le contenu d'un JEditorPane (du HTML) directement sur une imprimante de mon reseau.
Je me sers d'une class printUtilities qu'on trouve sur le net, qui permet d'imprimer le contenu d'un element swing sans trop de probleme.
J'arrive à selectionné tout seul (sans aucune fenetre) la bonne imprimante.
J'arrive à imprimer le contenu (avec l'aide d'une fenetre de selection)
mais je n'arrive pas à faire la meme chose en passant les arguments directement.
voici mon 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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 
public void print() {
try {
    PrinterJob printJob = PrinterJob.getPrinterJob();
    PrintService[] service=printJob.lookupPrintServices(); //liste des imprimantes connus
    printJob.setPrintable(this);
   boolean matchFound=false;
    int count=service.length;
    for(int i=0;i<count;i++){
       //on selectionne l'imprimante nomé copieur
 if((service[i].getName().indexOf("copieur")!=-1)||(service[i].getName().indexOf("COPIEUR")!=-1)){
            printJob.setPrintService(service[i]);
            i=count;
            matchFound=true;
 
        }
    }
        //si on trouve pas l'imprimante, alors on affiche une fenetre de choix
        if(!matchFound)
            printJob.printDialog();
 
/*
//le code ci dessous m'a permis de récupéré les largeurs et hauteurs du
//papier et de l'element à imprimer. avec pageDialg() ca fonctionne sans
//soucis
 
    PageFormat pp =printJob.pageDialog(printJob.defaultPage());
            System.out.println("iw :"+pp.getPaper().getImageableWidth()+
                    " ih:"+pp.getPaper().getImageableHeight()+
                    " h:"+pp.getPaper().getHeight()+
                    " w:"+pp.getPaper().getWidth() + " x:" +pp.getPaper().getImageableX()+
                    " y:"+pp.getPaper().getImageableY() + " or : " +pp.getOrientation()
                    );
*/
       //la meme chose mais en mettant les valeurs dans le code et la il imprime tout SAUF ce que je veux :(     
 
        PageFormat ppp = printJob.defaultPage();
 
        Paper pa = ppp.getPaper();
        pa.setImageableArea(28.346456692913385,28.346456692913385,538.5826771653543,785.1968503937007);
        ppp.setOrientation(0);
        pa.setSize(595.275590551181,841.8897637795276);
        ppp.setPaper(pa);
 
        printJob.setPrintable(this,ppp);
        printJob.print();
//je verifie que mon pageFormat a bien les bonnes valeurs , c'est le cas,
//pourtant SANS pageDialog çà ne fonctionne pas, alors qu'avec oui
 
            System.out.println("iw :"+ppp.getPaper().getImageableWidth()+
                    " ih:"+ppp.getPaper().getImageableHeight()+
                    " h:"+ppp.getPaper().getHeight()+
                    " w:"+ppp.getPaper().getWidth() + " x:" +ppp.getPaper().getImageableX()+
                    " y:"+ppp.getPaper().getImageableY() + " or : " +ppp.getOrientation()
                    );
 
      }
      catch (Exception pe) {
        System.out.println("Error printing: " + pe);
      }
  }
j'ai deja imprimé près de 20 feuilles (recto verso) pour testé, et je commence à devenir fou là.
Que fais la fonctione pageDialog() que ne fait pas mon code ?!?
parce que mon tableau HTML ressort sans probleme avec pageDialog alors qu'il ressort en taille de DINGUE et coupé(genre police 50-60) sans pageDialog

toute idée est bienvenue car moi j'en ai plus