Imprimer un fichier texte

stephane160 Messages postés 8 Date d'inscription mardi 11 mars 2003 Statut Membre Dernière intervention 22 mars 2004 - 9 mai 2003 à 16:49
cs_vicc Messages postés 1 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 décembre 2003 - 22 déc. 2003 à 17:08
Je voudrai savoir comment faire pour imprimer un fichier .txt avec un PrinterJob ?

Faute de savoir le faire, j'ai décidé d'imprimer à la place une String avec le contenu de mon fichier texte. Mais le problème c'est que lorsque ça imprime, ça ne prend pas en compte les tabulations, retours à la ligne, ...

Pouvez m'aider à résoudre mes problèmes ?

Merci d'avance

Voici mon code source :

import java.awt.print.* ;
import java.awt.event.* ;
import java.awt.geom.* ;
import java.awt.font.* ;
import javax.swing.* ;
import java.text.* ;
import java.util.* ;
import java.awt.* ;

class Impression implements Printable
{

String texte ;

AttributedString mStyledText ;

// Constructeur

Impression(boolean option,String texte)
{
this.texte = texte ;
mStyledText = new AttributedString(texte) ;
}

// Méthode d'impression

void imprimer()
{
PrinterJob pj = PrinterJob.getPrinterJob() ;
PageFormat pf = new PageFormat() ;
Book book = new Book() ;
pf = pj.pageDialog(pf) ;
book.append(new Impression(texte),pf) ;
pj.setPageable(book) ;
if(pj.printDialog())
{
try
{
pj.print() ;
}
catch(Exception e)
{
System.out.println(e) ;
}
}
}

// Redéfinition de la méthode d'impression

public int print(Graphics g, PageFormat format, int pageIndex)
{
Graphics2D g2d = (Graphics2D) g ;
g2d.translate(format.getImageableX(),format.getImageableY()) ;
g2d.setPaint(Color.black) ;
Point2D.Float pen = new Point2D.Float() ;
AttributedCharacterIterator charIterator = mStyledText.getIterator() ;
LineBreakMeasurer measurer = new LineBreakMeasurer(charIterator, g2d.getFontRenderContext()) ;
float wrappingWidth = (float) format.getImageableWidth() ;
while (measurer.getPosition() < charIterator.getEndIndex())
{
TextLayout layout = measurer.nextLayout(wrappingWidth) ;
pen.y += layout.getAscent() ;
float dx = layout.isLeftToRight()? 0 : (wrappingWidth - layout.getAdvance()) ;
layout.draw(g2d, pen.x + dx, pen.y) ;
pen.y += layout.getDescent() + layout.getLeading() ;
}
return Printable.PAGE_EXISTS ;
}

// Méthode principale

public static void main (String [] args)
{
Impression p = new Impression(false,"ligne1\nligne2") ;
p.imprimer() ;
}
}

2 réponses

guiguimac Messages postés 85 Date d'inscription mercredi 29 août 2001 Statut Membre Dernière intervention 22 avril 2006
17 juin 2003 à 19:52
bonjour,
avez vous réussi à lancer l'impression d'un fichier en Java ?
j'aimerai de mon côté lancer depuis du code java l'impression d'un fichier PDF.

merci d'avance.
0
cs_vicc Messages postés 1 Date d'inscription lundi 22 décembre 2003 Statut Membre Dernière intervention 22 décembre 2003
22 déc. 2003 à 17:08
Bonjour, j'ai le même pb, lorsque je veux imprimer le contenu d'un textArea. Seul une ligne s'affiche, elle correspond au trois premières lignes de mon TextArea

TextArea
Code Libelle
Ed Edition
Up Update
Imp Impression
Cr création
Cp copie
....

Impression
Code Libelle Ed Edition Up Update Imp Impression

Merci d'avance
0