Ir para conteúdo
  • Cadastre-se

dev botao

Dúvidas sobre Acentuação Bematech MP-2800TH


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1165 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa tarde, a todos!

Bem, gostaria de uma ajuda sobre impressão na MP-2800TH referente a acentuação , pesquisei aqui e vi que essa impressora usa o ESC/POS da Epson, sendo assim usei os comandos referentes ao manual do link no tópico aqui do Daniel http://svn.code.sf.net/p/acbr/code/tools/PosPrinter/Bematech/ , mesmo assim não obtive sucesso na impressão com os acentos , sempre saem embaralhados  e etc.

Ah, estou tentando envia via Java os dados para impressora referente a um PDV em JavaSwing que construi..

Segue o código;

public class printTest {

	private static char GS = (char) 29;
	private static char ESC = (char) 27;
	
	public static void main(String[] args) {
				
		String cupon = "teste impressão  de cupon, acentuação página \n\r \n\r ";
		
		try {
			ImpressaoController.imprimir(cupon +  comando());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

private static String comando() {
		//Inicialização da impressora
		String COMMAND = ESC + "@";
	
		/**
		 * Select character font.
		 *  n  Function
		 *  0, 48 Character font C (14 x 24) selected.
		 *	1, 49 Character font D (10.5 x 24) selected
		 * 
		 * **/
		COMMAND += ESC + "M"+ (char) 1;
		
		/*
		 * Select an international character
		 *  0  - U.S.A. (Codepage 437)
	     *	1  - 11 International (Codepage 858)
		 *  12 - Latin America (Codepage 850 
		 */
		COMMAND += ESC + "R"+ (char) 0;
		
		/**
		 * // Select justification: 
		 *  n Justification
		 *	0, 48 Left justification.
		 *  1, 49 Centering.
		 * 2, 50 Right justification
		 * */
		COMMAND += ESC + "a"+ (char) 0; 
		
		/***
		 *  n Connector pin
		 *	0 PC437 [U.S.A. and Standard Europe]
		 *  2 PC850 [Multilingual]
	     *  3 PC860 [Portuguese]
		 *	17 PC866 [Cyrillic]
		 *	19 PC858 [Multilingual with Euro symbol]
		 *	22 PC864 [Arabic
		 * */
		COMMAND += ESC + "t"+ (char) 2;
		
		//Corte parcial 
		COMMAND += GS + "V" + (char) 66 + (char) 0;
		
		return COMMAND;
	}
}

 

 

	// Manda informaÇÃo para impressora
	public static void imprimir(String saidaCupon) throws IOException {
		InputStream prin = null;
		DocFlavor docFlavor = null;
		SimpleDoc documentoTexto = null;
		PrintService impressora = null;
		PrintRequestAttributeSet printAttributes = null;
		DocPrintJob printJob = null;

		try {
			//prin = new ByteArrayInputStream(saidaCupon.getBytes("ISO8859-1")); //já tentei e não imprime nada
			//prin = new ByteArrayInputStream(saidaCupon.getBytes("UTF-8")); //já tentei e não imprime os acentos
			prin = new ByteArrayInputStream(saidaCupon.getBytes());
			docFlavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
			documentoTexto = new SimpleDoc(prin, docFlavor, null);
			impressora = PrintServiceLookup.lookupDefaultPrintService();

			// pega a imprssora padrão
			printAttributes = new HashPrintRequestAttributeSet();
			printAttributes.add(new JobName("Impressao", Locale.getDefault()));
			printAttributes.add(OrientationRequested.PORTRAIT);
			printAttributes.add(MediaSizeName.ISO_A4);
			
			printJob = impressora.createPrintJob();

			try {
				// tenta imprimir
				printJob.print(documentoTexto, (PrintRequestAttributeSet) printAttributes);
			} catch (Exception e) {
				// System.out.println("Exception imprimir() 1 " + e);
				loggerError.error("imprimir(): " + Util.class.getName() + " Exception: " + e);
				JOptionPane.showMessageDialog(null, "Não foi possível realizar a impressão!! " + e, "ERROR",
						JOptionPane.ERROR_MESSAGE);
			}

		} catch (Exception e) {
			// System.out.println("Exception imprimir() 2 " + e);
			loggerError.error("imprimir(): " + Util.class.getName() + " Exception: " + e);
			JOptionPane.showMessageDialog(null, "Não foi possÓvel realizar a impressÓo!! " + e, "ERROR",
					JOptionPane.ERROR_MESSAGE);
		} finally {
			prin.close();
			printAttributes.clear();
		}

	}

 

Desde já agradeço a ajuda!

 

  • Fundadores
  • Solution
Postado

Olá @Dartanhan..

Se não me engano, essa impressora usa Epson Esc/Pos e não Esc/Bema

Você pode ver os códigos EscPos que usamos, na implementação do ACBr, nessa Unit

http://svn.code.sf.net/p/acbr/code/trunk2/Fontes/ACBrSerial/ACBrEscPosEpson.pas

 

Faça um teste com ACBrLibPosPrinter... ela irá resolver a impressão em todas as impressoras não fiscais, do mercado brasileiro...

Download Demo em:

Instruções iniciais em:

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado (editado)

@Daniel Simoes, Boa tarde!

Agradeço ao apoio desde já, consegui avançar bem nos exemplos que me passou, porém estou tendo dificuldade de achar a biblioteca ACBrPosPrinter64 ou ACBrPosPrinter32, essas bibliotecas são DLLs ?? se sim, onde posso encontrar ?

Citar

 library = Platform.is64Bit() ? "ACBrPosPrinter64" : "ACBrPosPrinter32";

 

Editado por Dartanhan
Postado
18 minutos atrás, Dartanhan disse:

@Daniel Simoes, Boa tarde!

Agradeço ao apoio desde já, consegui avançar bem nos exemplos que me passou, porém estou tendo dificuldade de achar a biblioteca ACBrPosPrinter64 ou ACBrPosPrinter32, essas bibliotecas são DLLs ?? se sim, onde posso encontrar ?

 

Citar

 Localizei!

 

  • Curtir 1
  • Fundadores
Postado

Legal @Dartanhan... observe que essas versões que indiquei, são Libs de Demo...

Para usar a versão Pro, veja essa página:

Compra da versão Completa: https://projetoacbr.com.br/downloads/#acbrlib

Assinatura do ACBr Pro, com todas as Libs e suporte do ACBr: https://projetoacbr.com.br/pro/

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

@Daniel Simoes

Vou comprar sim a versão PRO, estou lendo a documentação e fazendo os testes nesse momento, será que poderia aproveitar para tirar uma dúvida aqui , já que reabriu o tópico?

Se puder é referente aos espaços na nota de impressão, estou setando para imprimir quebrando  uma linha , mas está adicionando um espaço gigante no começo e no final do corte, como contorno essa situação ?

 

public static void main(String[] args) throws Exception {
		 ACBrPosPrinter posPrinter = new ACBrPosPrinter();
		 
		String cupon = "</zera>teste impressão  de cupon, acentuação página </pular_linhas>" 
		+"<ce><a> TESTE ACENTUAÇÃO </a></ce></corte_total>";
		
		try {
			 posPrinter.ativar();
			 posPrinter.pularLinhas(1);
			posPrinter.imprimir(cupon);
			
			posPrinter.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

 

impressao_cupon.png

  • Fundadores
Postado
</pular_linhas>

A Tag acima, irá pular o número de linhas que estiver configurado, em LinhasEntreCupons...

para pular apenas uma linha, use </lf>

No tópico abaixo, você pode conferir exemplos e uma explicação melhor, sobre as tags suportadas, pelo ACBrPosPrinter

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

@Daniel Simoes, bom dia!

Assim, estou fazendo vários testes para chegar ao meu mundo ideal, que no caso seria este abaixo, pois não entendo uma coisa, quando imprimo por este programa abaixo, o cupon sai da forma correta, pequeno e bem enxuto para economia, conforme imagens.

 

image.thumb.png.caaa66f7cbf4fa9b15cc6a63bdf99847.png

saida:

image.png.d57e08dccea482854545f70bf712ed30.png

 

 

Porém tanto pelo programa java que coloquei a cima como no sistema java disponibilizado para teste do ACBr, conforme abaixo, ele imprime bem maior, o que eu estaria fazendo errado ?

image.thumb.png.1f67ce07c05403f9d13c4a7c8a7f2205.png

 

Saida:

image.png.ae919e83642495d1311a07bab10a4781.png

Postado

@Daniel Simoes Boa noite!

Depois de um pouco de sofrimento, consegui praticamente chegar ao resultado que precisava a princípio, ainda vou fazer mais testes para ver se consigo só melhorar os espaçamentos de algumas partes que ficaram as letras bem grudadas, mas já atende muito bem a necessidade ..

image.png.499481dd33098986fe4756d256393019.png

 

Vou estar sim adquirindo a biblioteca na versão pro, para utilização.

Agradeço muito pela paciência e ajuda.

Que Deus abençoe a todos e mais uma vez , muitíssimo obrigado!

 

Postado

@Daniel Simoes

Eu setei na forma abaixo e tive o retorno esperado, porém tive também um aumento na margem superior em vermelho, vi que existe uma tag "<mp_topo>", essa tag por acaso funcionaria para colocar as informações mais para cima ? Teria como contornar só um pouco esse avanço é mais para economia do papel mesmo, pois já está tudo ok!

posPrinter = new ACBrPosPrinter();
posPrinter.zerar();
posPrinter.configGravarValor(ACBrSessao.PosPrinter, "ColunasFonteNormal", 48);
posPrinter.configGravarValor(ACBrSessao.PosPrinter, "EspacoEntreLinhas",40);
posPrinter.configGravarValor(ACBrSessao.PosPrinter, "Modelo", ACBrPosPrinterModelo.EscPosEpson);
posPrinter.configGravarValor(ACBrSessao.PosPrinter, "ControlePorta", 1);
posPrinter.configGravar();
posPrinter.ativar();
posPrinter.imprimir(sb2.toString());
posPrinter.close();

image.png.b726fe3400390f21c384f36eee3c484e.png

Postado

A principio não estou enviando nenhum comando referente a isso e não estou conseguindo acessar a impressora pelo programa da Bematech para ver se teria algum logo tipo nela.

 

image.png.8c34bdd643a4730637496f068e16d5ce.png

Postado

@Daniel Simoes

Boa tarde! Eu gerei um .jar com o projeto do sistema , porém ao tentar imprimir informa um erro de comunicação , teria alguma orientação para me passar ?

image.png.569ecf34c6c1a61837e0fc0ef4c73b1d.png

 

Rodando o sistema pelo eclipse em minha máquina funciona normalmente.

 

Ela está instalada na COM3, eu setei o valor porta abaixo , mesmo assim da esse erro, se eu mandar imprimir a página de teste nas propriedades ela imprime normal, ou seja , a impressora está OK.

 posPrinter = new ACBrPosPrinter();
			 posPrinter.zerar();
			 posPrinter.configGravarValor(ACBrSessao.PosPrinter, "ColunasFonteNormal", 48);
			 posPrinter.configGravarValor(ACBrSessao.PosPrinter, "EspacoEntreLinhas",40);
			 posPrinter.configGravarValor(ACBrSessao.PosPrinter, "Modelo", ACBrPosPrinterModelo.EscPosEpson);
			 posPrinter.configGravarValor(ACBrSessao.PosPrinter, "ControlePorta", 1);
			 posPrinter.configGravarValor(ACBrSessao.PosPrinter, "Porta", "COM3");
			 posPrinter.configGravar();
			 
			 posPrinter.ativar();
			 posPrinter.imprimir(sb.toString());
			 posPrinter.close();
			 

 

  • Este tópico foi criado há 1165 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.