Dúvidas sobre PrinterJob, alguém sabe?

Olá pessoal estou com um probleminha na hora imprimir relatório de dados, o meu programa esta imprimindo na boa só que quando imprime o relatório ele perde a configuração que esta na String Dados… ele perde a centralização não reconhe ce o "
"… desta forma as palavras fica tudo junto… ele até faz aformatação das página (margens e tam de folha mas não reconhece os
e centralização… alguém sabe o que fazer…
olha a classe ai embaixo de uma olhada por favor…os dados a serem impressos estão contidos nesta String Dados…

[color=“blue”]public void imprimir()
{
PrinterJob printerJob = PrinterJob.getPrinterJob();
PageFormat format = new PageFormat();
format = printerJob.pageDialog(format);
Book book = new Book();

  TextWithFooter footer = new TextWithFooter(Dados);//Dados String contendo os dados a serem impressos....
  
  book.append(footer, format);
  printerJob.setPageable(book);
  boolean doPrint = printerJob.printDialog();
  if (doPrint) 
  {
    try 
    {
         printerJob.print();
    } 
    catch (PrinterException exception) 
    {
       System.err.println("Printing error: " + exception);
    }
  }

}

import java.awt.;
import java.awt.font.
;
import java.awt.geom.;
import java.awt.print.
;
import java.text.*;

public class TextWithFooter implements Printable
{
AttributedString mStyledText;

public TextWithFooter(String mText)
{
mStyledText = new AttributedString(mText);
}
public int print(Graphics g, PageFormat format, int pageIndex) throws PrinterException
{
Graphics2D g2d = (Graphics2D) g.create();
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();
}

      g2d.dispose();
      g2d = null;

      try 
      {
            Printable formatPainter = (Printable) format;
            formatPainter.print(g, format, pageIndex);
      } 
      catch (ClassCastException exception) 
      {  }
      return Printable.PAGE_EXISTS;

}
}[/color]

Obrigado…

Poxa… ninguém sabe sobre PrinterJob… então o que vcs costumam usar para fazer impressão de relatórios???
se puderem me dar umas dicas agradeço…

Realmente, estou com o mesmo problema…
O codigo que eu achei para imprimir applet e que funciona e’ o seguinte:

PrintJob imprime = getToolkit().getPrintJob(frame,"Testando impressão", null, atributos); if (imprime != null) { Graphics g = imprime.getGraphics(); if (g != null) { grafico.printAll(g); g.dispose(); // flush page } imprime.end(); }

note que frame e’ uma instancia da classe Frame, onde vc adiciona os componentes. e na linha grafico.printAll(g) imprime o componente grafico.

so que nao consigo fazer o grafico imprimir centralizado no papel…

É complicado este negócio de impressão… estou pensando em usar o Jasper Report… mas está meio complicado…