Páginas

sexta-feira, 25 de janeiro de 2013

Imprimir strings com JAVA

Estava eu tentando imprimir uma string utilizando JAVA e acabei encontrando alguma dificuldade. Essa dificuldade ocorreu pois nos exemplos encontrados a string era impressa, mas a quebra de linha (\n) era ignorada.

Pois bem, abaixo segue o código de um programa em JAVA que imprime a string "Aprendo a imprimir\ncom JAVA." respeitando a quebra de linha e utilizando a impressora default.


import java.awt.*;
import java.awt.print.*;
import javax.print.attribute.standard.*;
import javax.print.*;
import javax.print.attribute.*;


public class Impressao implements Printable {

    private String string;

    //Construtor da classe
    public Impressao(String string) {
        this.string = string;
    }

    public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {

        if (pi >= 1) {
            return Printable.NO_SUCH_PAGE;
        }

        g.setFont(new Font("Arial", Font.BOLD, 14));
        g.setColor(Color.BLUE);
       
        String[] lines = string.split("\n");
        int y = 100;
        FontMetrics fm = g.getFontMetrics();
        for (int i=0; i < lines.length; i++)
        {
            g.drawString(lines[i], 100, y);
            y += fm.getHeight();
        }

        return Printable.PAGE_EXISTS;
    }

    public static void main(String[] args) {

        //Obter o serviço de impressão da impressora default
        PrintService ps = PrintServiceLookup.lookupDefaultPrintService();

        //Define os parâmetros para impressão
        AttributeSet aset = new HashAttributeSet();
        aset.add(new Copies(1));

        //Obter o job de impressão
        PrinterJob pj = PrinterJob.getPrinterJob();
       
        try {
            pj.setPrintService(ps) ;
        }
        catch(PrinterException e){
        }

        Printable pt;

        String string = "Aprendo a imprimir\ncom JAVA.";
       
        pt = new Impressao(string);
        pj.setPrintable(pt);

        try {
            pj.print();
        } catch (PrinterException pe) {
            System.out.println("Erro durante a impressão.\n");
            pe.printStackTrace();
        }
    }
}

O resultado é o seguinte:


Aprendo a imprimir
com JAVA.



É isso, até o próximo post.

Um comentário:

  1. como faço para deixa {cabeçalho e roda pé }zero e selecionar uma impressora ??

    ResponderExcluir