Imprimer le contenu d'un JEditorPane

Signaler
Messages postés
4
Date d'inscription
jeudi 7 février 2002
Statut
Membre
Dernière intervention
2 septembre 2003
-
Messages postés
12
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
21 avril 2008
-
Je cherche une méthode simple pour imprimer le contenu d'un JEditorPane.
J'arrive à imprimer la première page mais s'il y en a plus d'une ça bug.

6 réponses

Messages postés
44
Date d'inscription
vendredi 18 octobre 2002
Statut
Membre
Dernière intervention
8 décembre 2005

Salut,
Pour imprime ton objet, je suppose que tu l'as fait
dériver de JEditorPane et implémenter Printable.
Si tu souhaite imprimer pluisieurs page, essaie de tout organiser dans objet java.awt.print.Book()
(qui représent une collection de pages imprimer ) et lance l'impression.
Sans le code on ne peut pas trop savoir !
a+

phanatic
Messages postés
13
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
24 juin 2006

voici un bout de mon code qui permet d'imprimer le contenu d'un JEditorPane, si ca peut aider ...

import javax.swing.*;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.print.*;

public class JEditorPaneImprimable extends JEditorPane implements Printable{

private int cla_numPagePrec;

public JEditorPaneImprimable()
{
super();
}

public void setNumPagePrec(int par_nb){cla_numPagePrec=par_nb;}

public int numOfPages(PageFormat par_pf)
{
double loc_pageWidth=par_pf.getImageableWidth();
double loc_pageHeight=par_pf.getImageableHeight();
double loc_scale=1;
if  (getSize().width>loc_pageWidth)
loc_scale=loc_pageWidth/getSize().width;
double loc_pageHeightOngraph=(loc_pageHeight-par_pf.getImageableY())/loc_scale;
//calcul du nombre de page
int loc_pages=(int)Math.ceil((getSize().getHeight()/loc_pageHeightOngraph));
return loc_pages;
}
public int print(Graphics par_g,PageFormat par_pf,int par_PageIndex) throws PrinterException
{
//Conversion du graphics en graphcs 2d
Graphics2D loc_g2d=(Graphics2D)par_g;
//calcul de la dimension d'une page et de la taille des ecritures
int loc_fontHeight=loc_g2d.getFontMetrics().getHeight();
int loc_fontDescent=loc_g2d.getFontMetrics().getDescent();
double loc_pageWidth=par_pf.getImageableWidth();
double loc_pageHeight=par_pf.getImageableHeight();
//calcul du numero reel de la page
int loc_numPage=par_PageIndex-cla_numPagePrec;
//calcul du coefficient reducteur pour imprimer l'integralite
//du graphics(en largeur) sur une page.
double loc_scale=1;
if  (getSize().width>loc_pageWidth)
loc_scale=loc_pageWidth/getSize().width;
double loc_pageHeightOngraph=(loc_pageHeight-par_pf.getImageableY())/loc_scale;
double loc_pageWidthOngraph=loc_pageWidth/loc_scale;
//calcul du nombre de page
int loc_pages=(int)Math.ceil((getSize().getHeight()/loc_pageHeightOngraph));
//verification de la page
if (loc_numPage>=loc_pages)
return NO_SUCH_PAGE;
//deplacement du curseur pour dessin du pied de page
//sans ecraser le reste du graphique
loc_g2d.translate(par_pf.getImageableX(),par_pf.getImageableY());
//numero de page en pied de page
loc_g2d.drawString("Page "+(par_PageIndex+1),(int)(loc_pageWidth)/2-35,(int)((loc_pageHeight-loc_fontDescent)));
//retour sur la premiere partie du graphique
loc_g2d.translate(0f,-((loc_pageHeight-par_pf.getImageableY()-loc_fontHeight)*loc_numPage));
//decoupage du graphics pour recuperer l'equivalent d'une page A4
loc_g2d.setClip(0,(int)((loc_pageHeight-par_pf.getImageableY()-loc_fontHeight)*loc_numPage),(int)Math.ceil(loc_pageWidthOngraph),(int)Math.ceil(loc_pageHeight-par_pf.getImageableY()));
//redimensionne
loc_g2d.scale(loc_scale,loc_scale);
setDoubleBuffered(false);
paint(loc_g2d);
setDoubleBuffered(true);
return PAGE_EXISTS;
}
}


Bon courage
Tytia
Messages postés
1
Date d'inscription
mardi 28 septembre 2004
Statut
Membre
Dernière intervention
30 septembre 2004

Bonjour,

Primo je voulais te remercie pour ta class permetant d'impremer très convnablement un JEditorPane, elle fontctionne a merveille !

Par contre j'ai remarqué que le panneau d'impression (Celui ou il y a le choix de l'imprimante, etc..) n'apparait plus du tout !

Saurais tu pourquoi ?

Merci d'avant...

T'chiko
Messages postés
13
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
24 juin 2006

Je ne sais pas dutout, moi j'avais le panneau de configuration .
Ca depend peut etre de comment tu appel l'impression, mais je peux pas te dire comment je faisait, parce que je n'ai les sources, j'ai fait ça en stage et tout le code source est resté à l'entreprise dsl.

Tytia
Messages postés
45
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
28 novembre 2008

chiquetk
Comment fais tu pour lancer l'impression de Tytia, car moi, je n'arrive pas a la lancer...

coyote
Messages postés
12
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
21 avril 2008

Excusez moi : je ne vois pas comment instancier cette classe svp !