Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paladino_php

Enviando apenas texto para bematech

Recommended Posts

Boa noite caros!

 

Como eu faço para imprimir um pedido em uma bematech MP20-MI que só aceita texto do tipo enviado pelo bloco de notas. O sistema trabalha em PHP e MySQL e o que é enviado diretamente do navegador não é reconhecido pela impressora como texto.

 

Alguma sugestão ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode tentar criar pelo PHP um arquivo TXT com os suas strings, e depois mostrar na tela. Derrepente a impressora aceite.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é, acho que é a melhor e a solução. Vou pesquisar aqui como abrir e escrever em um bloco de notas com comandos do php. Se tiverem algo manda ai pra me ajudar =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

O arquivo está sendo gerado, aliás muito obrigado pelos links jgustavo99 =)

 

Agora como eu faço pra abrir esse arquivo na tela. Deu pra sacar ? Eu gero o arquivo com os comandos

 

 

/*Função fopen usada para abrir arquivo, ou seja, joga-lo na memória do servidor, neste caso o arquivo ainda não existe.
o “w” quer dizer write, que o arquivo pode ser escrito */
$arquivo = fopen(“arquivo.txt”, “w”);
$texto = “Olá Mundo!!!”;
/*a função fwrite escreve o valor da variável $texto no arquivo.txt se o arquivo não existe o php cria o arquivo*/
fwrite($arquivo, $texto);
/*a função fclose retira o arquivo.txt da memória o servidor*/
fclose($arquivo);

 

Terminou de gerar preciso que ele seja aberto na cara do cliente dentro do bloco de notas pra ele só clicar em imprimir

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você não consegue abrir na tela do Navegador, e clicar em emprimir? Precisa mesmo ser aberto no Bloco de Notas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sabe qual o problema, parece que qualquer texto impresso diretamente do navegador, não é um tipo de texto reconhecido por essas impressoras, logo ela imprime em branco.

 

O que eu preciso é transformar esse texto, no navegador, em texto do mesmo tipo daquele que é gerado no bloco de notas. Porque essa Bematech só imprime aparentemente texto puro.

 

Já me explicaram, mas não lembro. Se puderem me dizer novamente a diferença do texto do bloco de notas pro texto que é gerado para impressão no navegador, seria bem útil. Já que mesmo abrindo o próprio arquivo .txt gerado pelo navegador, esse parece transformá-lo em outro tipo de texto desconhecido pela impressora em questão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode baixar a string diretamente sem criar um arquivo para tal.

<?php

$filename = 'file.txt';
$string   = 'Download !!!';

header( 'Content-Type: application/force-download' );
header( 'Content-type: text/plain' );
header( sprintf( 'Content-Length: %u', strlen( $string ) ) );
header( sprintf( 'Content-disposition: attachment; filename="%s"', $filename ) );
header( 'Pragma: no-cache' );
header( 'Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0' );
header( 'Expires: 0' );

print( $string );
flush( );
exit;

Depois basta abrir o arquivo e mandar imprimir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que ? Rs... O que essa função ae retorna ??

 

 

<?php 
print( $string );
flush( );
exit;
?>
 

 

Esse script já retorna o arquivo salvo no arquivo.txt. O problema é que a impressão n funciona. Porque a impressora é maluca assim msm. Agora se eu conseguir após gerar esse arquivo fazer o windows abrir o arquivo.txt na tela do computador, tipo na cara, tipo um span insejavel que vem sem vc pedir, mas é assim que tem que ser pq ele vai imprimir direto.

 

Ai sim seria bem o que estou tentando fazer. O script já funciona, só tenho que forçar o windos a abrir em primeiro plano o arquivo.txt. Teria como isso com PHP estruturado e javascript ?


Teria como setar os formatos também ;oxps .doc, etc...


Um cenário ainda mais interessante seria, carregar uma página em um link único na url, com ou sem subdomínio e ali dentro escrever o arquivo .txt personalizado, por ainda tenho que formatar os campos dentro da comanda de 0,65mm rs... ai a forma de impressão poderia ser solicitada ao windows pelo prompt, talvez. Por que assim o navegador fica de fora do trabalho final. Saca!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema de forçar o download, é que, o cliente terá obrigatoriamente que clicar confirmando o download caso o navegador não esteja configurado para fazer automaticamente. Logo em seguida, verificar o fim do download para então executar o comando correto com exec.

 

Já tentou isso :seta: Utilizando Impressora Não-Fiscal Bematech em Aplicações WEB (PHP)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa cara, finalmente um tuto sobre a impressora certa rsrsrsrs Vlw Carlos!

 

 

Pra finalizar. Como utilizo essa classe ? É nativa do PHP, tem que baixar e incluir no script ou o que ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já verificou em [inline][HKEY_CLASSES_ROOT] >> BemaPrinterXControl1.BemaPrinter >> Clsid (Veja o valor da chave)l[/inline]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim. Olha só como aparece lá

 

[[/size]HKEY_CLASSES_ROOT[/size]][/size] [/size]>>[/size] [/size]BemaPrinterXControl1[/size].[/size]BemaPrinter[/size] [/size]>>[/size] [/size]Clsid[/size] (310DBDAC-85FF-4008-82A8-E22A09F9460B)[/size]

 

Estou imprimindo à partir de uma rede, preciso fazer o msm procedimento para os computadores que irão utilizar essa impressora ou ele consegue recuperar os registros pela própria rede ?

 

 

Só dando um UP! Continuo agarrado no problema de cima

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou seguindo esse tutorial aqui enviado pelo Carlos Coelho Utilizando Impressora Não-Fiscal Bematech em Aplicações WEB (PHP)

 

Já verifiquei o GUID e a numeração está correta: 310DBDAC-85FF-4008-82A8-E22A09F9460B

 

A impressora imprime a página teste e qualquer envio à partir de um editor de textos. Porém via WEB não.

 

A função javascript que estou usando e que retorna um erro de execução, qualquer uma retorna esse erro, como se estivesse faltando alguma coisa

 

 

function Inicializa(){
document.FormPrinter.EdTxtImpressao.value = "Digite seu texto aqui."; 
}
function Finaliza(){
BemaPrinter1.FechaPorta();
}
function ImprimeTextoFormatado() {
BemaPrinter1.FormataTX( document.FormPrinter.EdTxtImpressao.value ); 
}

 

E o código php que também não funciona, ambos são os mesmo utilizados no tutorial

 

 

<?php
 
//carrega o componente pelo GUID (pelo nome não funcionou)
$bema = new COM("{310DBDAC-85FF-4008-82A8-E22A09F9460B}");
//abre porta
$init = $bema->IniciaPorta("LPT1");
//verifica erro
if ($init <= 0) {
echo "erro!";
exit;
}

//imprime texto com formatação em cada linha
//o espaçamento deve ser ajustado a depender da impressora
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("Bar do Robson \n", 3, 1 , 0, 1, 0); 
$bema->FormataTX(" Sistema de Bar e Restaurante \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("Mesa: 35 \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("05 - Cerveja Skol2,00 10,00 \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("01 - Picanha 15,00 15,00 \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("02 - Batata Frita 4,008,00 \n", 2, 0 , 0, 0, 0);
$bema->FormataTX(" ------ \n", 2, 0 , 0, 0, 0);
$bema->FormataTX(" Total 33,00 \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0, 0);
$bema->FormataTX("BarRestaurante v1.0 01/05/2007 \n", 1, 0 , 1, 0, 0);
$bema->FormataTX("--------------------------------- \n", 2, 0 , 0, 0, 0);

//fecha a porta de impressao
$bema->FechaPorta();
?>

 

A princípio essas são as duas formas de enviar comandos à impressora, porém nenhuma delas está funcionando. HELP!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro desenvolvedor,

 

O código em questão é para imprimir em uma impressora conectada ao servidor onde roda a sua aplicação PHP.

Esta é uma realidade?

 

Pelo que você informa em seus testes, você quer que o cliente da aplicação (ou seja, o navegador), faça a impressão.

Correto?

 

Veja se isso ajuda:

http://partners.bematech.com.br/2013/05/edicao-143-comunicando-com-a-mp-4200-th-via-web/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.