Imprimer le contenu d'un JEditorPane

nicolaserny Messages postés 4 Date d'inscription jeudi 7 février 2002 Statut Membre Dernière intervention 2 septembre 2003 - 15 avril 2002 à 16:27
Fridimette Messages postés 12 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 21 avril 2008 - 27 mars 2008 à 12:05
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

phanatic Messages postés 44 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 8 décembre 2005
14 déc. 2002 à 12:18
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
0
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006
5 avril 2004 à 15:22
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
0
chiquetk Messages postés 1 Date d'inscription mardi 28 septembre 2004 Statut Membre Dernière intervention 30 septembre 2004
30 sept. 2004 à 15:29
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
0
cs_Tytia Messages postés 13 Date d'inscription mardi 27 janvier 2004 Statut Membre Dernière intervention 24 juin 2006
30 sept. 2004 à 18:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coyote Messages postés 45 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 28 novembre 2008
7 déc. 2004 à 16:51
chiquetk
Comment fais tu pour lancer l'impression de Tytia, car moi, je n'arrive pas a la lancer...

coyote
0
Fridimette Messages postés 12 Date d'inscription mercredi 19 mars 2008 Statut Membre Dernière intervention 21 avril 2008
27 mars 2008 à 12:05
Excusez moi : je ne vois pas comment instancier cette classe svp !
0