Problemas com classe para impressão em impressora. [resolvido]

0 respostas
R

RESOLVIDO: quem quizer a solução é só entrar em contato comigo, recriei essa classe de uma forma bem diferente.

Pessoal, estou com problemas em minha classe para imprimir um texto na impressora, eu mando imprimir e só imprimi a primeira página. Nunca tinha implementado esse Printable e agora estou apanhando pra ela. Outra coisa está na formatação dela, tive que usar uma gambiarra ali embaixo decrementando o valor de X para que o texto fique no lugar certo.
Segue meu código.

package cifraria.Kernel;

import java.awt.*;
import java.awt.print.*;

public class KernelImprimir implements Printable {

    private String texto;
    private Book book;

    public void imprimir(String texto) {

        this.texto = texto;
        PrinterJob p = PrinterJob.getPrinterJob();
        p.defaultPage();
        p.setPrintable(this);
        book = new Book();        
        book.append(this, p.defaultPage());
        p.setPageable(book);
        try {
            if (p.printDialog()) {
                p.print();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /** Método da interface Printable */
    public int print(Graphics g, PageFormat format, int pageIndex) throws PrinterException {
        if (pageIndex != 0) {
            return NO_SUCH_PAGE;
        }
        Graphics2D g2d = (Graphics2D) g;
        g2d.translate(format.getImageableX(), format.getImageableY());

        Font titleFont = new Font("courier", Font.BOLD, 10);
        g2d.setFont(titleFont);

        g2d.setPaint(Color.black);

        String buffer[] = texto.split("\n");
        int i = 0, y = 0;
        while (i < buffer.length) {
            y = y + 12;
            g2d.drawString(buffer[i], -48, y);
            i++;
        }
        return PAGE_EXISTS;
    }
}
Criado 24 de novembro de 2008
Respostas 0
Participantes 1