Boa tarde.
Estou com o seguinte problema:
Preciso fazer a impressão de um valor que vai ser digitado em um textbox em uma impressora térmica.
Utilizando a classe 1, e configurando a impressora Generic Text Only pra entrada com1, eu consigo essa impressão.
Porém tem um problema, a fonte sai pequena e se eu clicar repetidamente no botão para imprimir, ele imprime um do lado do outro, sem quebras de linha. Eu gostaria de saber como altero o tamanho da fonte e formato ela para que saia maior na impressão.
Abaixo os códigos:
Classe 1: (retirado aqui mesmo do fórum do GUJ)
[code]
package Control;
import javax.print.*;
import javax.swing.JOptionPane;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
// Essa classe é a responsavel pela impressao. Ela detecta a impressora
// instalada, recebe o texto e o imprime.
public class Impressao {
// variavel estatica porque será utilizada por inumeras threads
private static PrintService impressora;
public Impressao() {
detectaImpressoras();
}
// O metodo verifica se existe impressora conectada e a
// define como padrao.
public void detectaImpressoras() {
try {
DocFlavor df = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
PrintService[] ps = PrintServiceLookup
.lookupPrintServices(df, null);
for (PrintService p : ps) {
System.out.println("Impressora encontrada: " + p.getName());
if (p.getName().contains("Text")
|| p.getName().contains("Generic")) {
System.out
.println("Impressora Selecionada: " + p.getName());
impressora = p;
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public synchronized boolean imprime(String texto) {
// se nao existir impressora, entao avisa usuario
// senao imprime texto
if (impressora == null) {
String msg = "Nennhuma impressora foi encontrada. Instale uma impressora padrão \r\n(Generic Text Only) e reinicie o programa.";
//System.out.println(msg);
JOptionPane.showMessageDialog(null, msg, "Erro de impressão", 0);
} else {
try {
DocPrintJob dpj = impressora.createPrintJob();
InputStream stream = new ByteArrayInputStream(texto.getBytes());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc doc = new SimpleDoc(stream, flavor, null);
dpj.print(doc, null);
return true;
} catch (PrintException e) {
e.printStackTrace();
}
}
return false;
}
}[/code]
E o momento da impressão:
i.imprime(form.getTxtSenha().getText());
Desde já, obrigado.