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.