Imprimer un fichier texte

Signaler
Messages postés
8
Date d'inscription
mardi 11 mars 2003
Statut
Membre
Dernière intervention
22 mars 2004
-
Messages postés
1
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
22 décembre 2003
-
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

Messages postés
85
Date d'inscription
mercredi 29 août 2001
Statut
Membre
Dernière intervention
22 avril 2006

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.
Messages postés
1
Date d'inscription
lundi 22 décembre 2003
Statut
Membre
Dernière intervention
22 décembre 2003

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