Impressora térmica

4 respostas
S

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)
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;

	}

}
E o momento da impressão:
i.imprime(form.getTxtSenha().getText());

Desde já, obrigado.

4 Respostas

S

Ninguém pode me ajudar? D:

L

Pra isso existe o jasper…

S

Jasper?

Tem algum link onde eu possa aprender mais sobre?

gilmaslima

Use a busca do fórum :twisted: :twisted: :twisted:

:arrow: http://www.guj.com.br/article.show.logic?id=151

Criado 2 de dezembro de 2010
Ultima resposta 3 de dez. de 2010
Respostas 4
Participantes 3