Dúvidas sobre PrinterJob, alguém sabe?

3 respostas
D

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.<em>;

import java.awt.font.</em>;

import java.awt.geom.<em>;

import java.awt.print.</em>;

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…

3 Respostas

D

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…

arthurcampos

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…

D

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

Criado 19 de novembro de 2003
Ultima resposta 25 de nov. de 2003
Respostas 3
Participantes 2