Impressora cupom nao fiscal

Tenho um sistema hospedado em um provedor fora da minha estrutura, neste sistema efetuo a venda gerando um arquivo Txt do cupom de venda preciso imprimir na maquina do cliente como faço?
Ou se houver uma solução para imprimir direto tambem serve, nao posso usar a solução php_printer por que meu provedor nao habilita esta biblioteca tem que ser algo como os relatorios do SC…
Por favor me ajudem… estou somente comm esta pendencia para fecha todo o sistema.
segue o modelo do cupom:

EMPRESA:SERV-PIZZA LTDA
END. :AVENIDA PURUS,17
BAIRRO:JARDIM PARAISO CIDADE:GUARULHOS
TEL :1124063632

P E D I D O DATA EMISSAO
0000000029 23/01/2012 16:52:53
ATENDENTE:1-CESAR

        E N T R E G A                    

CLIENTE :1124040236-MIGUEL
ENDERECO:RUA HERMENEGILDO ORSI,149
BAIRRO :JARDIM ACACIO
CIDADE :GUARULHOS CEP :07144130

CODIGO / DESCRICAO DO PRODUTO
UNID QUANTIDADE UNITARIO TOTAL ITEM

[ PIZZAS ]
3-ATUM 1
[Borda - CATUPIRY ]
INTEIRA 1,00 16,00 16,00
4-ATUM 2
[Borda - CHEDDAR ]
INTEIRA 1,00 17,00 17,00
5-ATUM 3
[Borda - CHOCOLATE BRANCO ]
INTEIRA 1,00 18,00 18,00

    TOTALIZACAO DO PEDIDO     

TOTAL A PAGAR : R$ 55,00
VALOR RECEBIDO: R$ 0,00

PAGAMENTO :HIPERCARD

LEVAR MAQUINA PARA CARTAO <<<<<<<


OBS…:

ESTE CUPONA NAO TEM VALIDADE FISCAL


Sendo um cupom não fiscal, a impressora é conectada na lpt1: ou com2:
ë possível com javascript, mas terá que mexer na segurança do browser o que é um risco para o cliente:
eis um código antigo que utilizei a muito tempo e por muito pouco tempo.

<?php 

/**************************************************************************************************************************/

$arquivo = "nf.txt";
session_start();
$_SESSION['conteudo']="";

//qtd de caracteres que cabem no campo
$tam_campo['saida']=1;
$tam_campo['entrada']=1;
$tam_campo['natureza']=30;
$tam_campo['cfop']=9;
$tam_campo['ie_subst']=29;
$tam_campo['razao']=70;
$tam_campo['cnpj']=39;
$tam_campo['dt_emiss']=16;
$tam_campo['endereco']=70;
$tam_campo['bairro']=22;
$tam_campo['cep']=17;
$tam_campo['dt_movto']=16;
$tam_campo['municipio']=42;
$tam_campo['fone']=20;
$tam_campo['uf']=8;
$tam_campo['iestadual']=39;
$tam_campo['hora']=16;
$tam_campo['codigo']=8;
$tam_campo['descricao']=62;
$tam_campo['cf']=5;
$tam_campo['sit_trib']=6;
$tam_campo['unid']=5;
$tam_campo['qtd']=9;
$tam_campo['vl_unit']=9;
$tam_campo['vl_tot']=10;
$tam_campo['aliq_icms']=3;
$tam_campo['aliq_ipi']=2;
$tam_campo['val_ipi']=9;
$tam_campo['bs_icms']=19;
$tam_campo['vl_icms']=19;
$tam_campo['bs_icms2']=19;
$tam_campo['vl_icms2']=19;
$tam_campo['vl_totprod']=18;
$tam_campo['vl_frete']=19;
$tam_campo['vl_seguro']=19;
$tam_campo['out_despesas']=19;
$tam_campo['vl_ipi']=18;
$tam_campo['vl_nota']=18;
$tam_campo['razao_trans']=32;
$tam_campo['resp_frete']=2;
$tam_campo['placa']=9;
$tam_campo['uf_placa']=2;
$tam_campo['cnpj_trans']=21;
$tam_campo['ender_trans']=33;
$tam_campo['munisc_trans']=24;
$tam_campo['uf_trans']=3;
$tam_campo['ie_trans']=21;
$tam_campo['qtd_volume']=7;
$tam_campo['especie']=31;
$tam_campo['marca']=9;
$tam_campo['numero']=9;
$tam_campo['peso_br']=11;
$tam_campo['peso_lq']=14;
$tam_campo['dado_adic']=35;
$tam_campo['num_nf']=10;


/**************************************************************************************************************************

function imprime_lpt1(arg1)
Descricao:  Funcao responsavel pela impressao diretamente na porta lpt1.

Requisitos: Internet Explorer superior que 5.0, mas nao testado no 5.5, testado e funcionando no 6.0.
			Nao testado em outros browsers

			****** IMPORTANTISSIMO ******
			Se estas alteracoes nao forem feitas, a impressao nao ocorrera corretamente.
			Alteracao das configuracoes de seguranca do navegador:
			Ferramentas -> Opcoes de Internet -> Seguranca ->
			Intranet local -> Nivel Personalizado ->
			Iniciar e executar scripts de controle ActiveX nao marcados como seguro -> Ativar
			Caso nao funcione:
			Internet -> Nivel Personalizado ->
			Iniciar e executar scripts de controle ActiveX nao marcados como seguro -> Ativar

Entrada:    Linha que sera impressa na autenticacao ou o comprovante de pagamento.

Saida:      Impressao em impressora fiscal do argumento de entrada.

**************************************************************************************************************************/

function linha($lin){
  for($i=1;$i<=$lin;$i++)  
    $_SESSION['conteudo'] .= "\r\n";
}

function coluna($sp){
  for($i=1;$i<=$sp;$i++)  
    $_SESSION['conteudo'] .= " ";
}



/**************************************************************************************************************************/


  $fp = fopen($arquivo, "w"); 
  linha(5);coluna(76);
  $_SESSION['conteudo'].='X';

  coluna(11);
  $_SESSION['conteudo'].='X';

  linha(8);coluna(3);
  $_SESSION['conteudo'].='VENDA MERCADORIA';
  
$_POST['natureza']='Venda de Mercadoria';
  coluna($tam_campo['natureza']-strlen($_POST['natureza'])+7);
  $_SESSION['conteudo'].='5.102';

$_POST['cfop']='5.102';
  coluna($tam_campo['cfop']-strlen($_POST['cfop'])+5);
  $_SESSION['conteudo'].='123.456.789.123';

  linha(3);coluna(3);
  $_SESSION['conteudo'].='Nome do Cliente';  
  
$_POST['razao']='Nome do Cliente';
  coluna($tam_campo['razao']-strlen($_POST['razao'])+5);
  $_SESSION['conteudo'].='060.033.100/0001-04';
  
$_POST['cnpj']='060.033.115/0001-04';
  coluna($tam_campo['cnpj']-strlen($_POST['cnpj'])+8);
  $_SESSION['conteudo'].='19/02/2008';
 
  linha(2);coluna(3); 
  $_SESSION['conteudo'].='Endereço do Cliente';
  
$_POST['endereco']='Endereço do Cliente';
  coluna($tam_campo['endereco']-strlen($_POST['endereco'])+5);
  $_SESSION['conteudo'].='Bairro';
  
$_POST['bairro']='Bairro';
  coluna($tam_campo['bairro']-strlen($_POST['bairro'])+5);
  $_SESSION['conteudo'].='09790-290';
  
$_POST['cep']='09790-290';
  coluna($tam_campo['cep']-strlen($_POST['cep'])+3);
  $_SESSION['conteudo'].='19/02/2008';
  
  linha(2);coluna(3);
  $_SESSION['conteudo'].='Municipio do Cliente';

$_POST['municipio']='Municipo do Cliente';
  coluna($tam_campo['municipio']-strlen($_POST['municipio'])+2);
  $_SESSION['conteudo'].='(11)4334-2345';
  
$_POST['fone']='(11)4334-2345';
  coluna($tam_campo['fone']-strlen($_POST['fone'])+3);
  $_SESSION['conteudo'].='SP';

$_POST['uf']='SP';
  coluna($tam_campo['uf']-strlen($_POST['uf'])+3);
  $_SESSION['conteudo'].='321.321.321.321';

$_POST['iestadual']='321.321.321.321';  
  coluna($tam_campo['iestadual']-strlen($_POST['iestadual'])+6);
  $_SESSION['conteudo'].='10:40';
  
  linha(3);coluna(3);
  $_SESSION['conteudo'].='Dados de Faturamento ao cliente'.chr(15);  
 
linha(3);
/*************************** PRODUTOS ******************************/
for($r=1;$r<=18;$r++){
  linha(1);coluna(3);
  $_SESSION['conteudo'].='Cod.P.';

$_POST['codigo'.$r].='Cod.P.';  
  coluna($tam_campo['codigo']-strlen($_POST['codigo'.$r])+1);
  $_SESSION['conteudo'].='Descrição do Produto Descrição do Produto Descrição do';

$_POST['descricao'.$r].='Descrição do Produto Descrição do Produto Descrição do';
  coluna($tam_campo['descricao']-strlen($_POST['descricao'.$r])+3);
  $_SESSION['conteudo'].='(1)';

$_POST['cf'.$r].='(1)';
  coluna($tam_campo['cf']-strlen($_POST['cf'.$r])+1);
  $_SESSION['conteudo'].='ST';

$_POST['sit_trib'.$r].='ST';  
  coluna($tam_campo['sit_trib']-strlen($_POST['sit_trib'.$r])+1);
  $_SESSION['conteudo'].='Un';

$_POST['unid'.$r].='Un'; 
 coluna($tam_campo['unid']-strlen($_POST['unid'.$r])+2);
  $_SESSION['conteudo'].='Qt.';

$_POST['qtd'.$r].='Qt.';
  coluna($tam_campo['qtd']-strlen($_POST['qtd'.$r])+1);
  $_SESSION['conteudo'].='VlUnit';

$_POST['vl_unit'.$r].='VlUnit';  
  coluna($tam_campo['vl_unit']-strlen($_POST['vl_unit'.$r])+2);
  $_SESSION['conteudo'].='Valor T.';

$_POST['vl_tot'.$r].='Valor T.';
  coluna($tam_campo['vl_tot']-strlen($_POST['vl_tot'.$r])+5);
  $_SESSION['conteudo'].='12';
}
 // coluna($tam_campo['aliq_icms']-strlen($_POST['aliq_icms'.$r])+1);
 // $_SESSION['conteudo'].=$_POST['aliq_ipi'.$r];

 // coluna($tam_campo['aliq_ipi']-strlen($_POST['aliq_ipi'.$r])+1);
 // $_SESSION['conteudo'].=$_POST['val_ipi'.$r];

  /*******************************************************************/
  linha(3);coluna(3);
  $_SESSION['conteudo'].='bs_icms';

$_POST['bs_icms'].='bs_icms';
  coluna($tam_campo['bs_icms']-strlen($_POST['bs_icms'])+10);
  $_SESSION['conteudo'].='vl_icms';

$_POST['vl_icms'].='vl_icms';  
  coluna($tam_campo['vl_icms']-strlen($_POST['vl_icms'])+10);
  $_SESSION['conteudo'].='bs_icms2';

$_POST['bs_icms2'].='bs_icms2';
  coluna($tam_campo['bs_icms2']-strlen($_POST['bs_icms2'])+10);
  $_SESSION['conteudo'].='vl_icms2';

$_POST['vl_icms2'].='vl_icms2';
  coluna($tam_campo['vl_icms2']-strlen($_POST['vl_icms2'])+9);
  $_SESSION['conteudo'].='vl_totprod';

  linha(2);coluna(3);
  $_SESSION['conteudo'].='vl_frete';

$_POST['vl_frete'].='vl_frete';  
  coluna($tam_campo['vl_frete']-strlen($_POST['vl_frete'])+10);
  $_SESSION['conteudo'].='vl_seguro';

$_POST['vl_seguro'].='vl_seguro';
  coluna($tam_campo['vl_seguro']-strlen($_POST['vl_seguro'])+10);
  $_SESSION['conteudo'].='out_despesas';

$_POST['out_despesas'].='out_despesas';
  coluna($tam_campo['out_despesas']-strlen($_POST['out_despesas'])+10);
  $_SESSION['conteudo'].='vl_ipi';

$_POST['vl_ipi'].='vl_ipi';
  coluna($tam_campo['vl_ipi']-strlen($_POST['vl_ipi'])+10);
  $_SESSION['conteudo'].='vl_nota';

  linha(3);coluna(3);
  $_SESSION['conteudo'].='razao_trans';

$_POST['razao_trans'].='razao_trans';
  coluna($tam_campo['razao_trans']-strlen($_POST['razao_trans'])+51);
  $_SESSION['conteudo'].='1';

$_POST['resp_frete'].='resp_frete';  
  coluna($tam_campo['resp_frete']-strlen($_POST['resp_frete'])+14);
  $_SESSION['conteudo'].='placa';

$_POST['placa'].='placa'; 
  coluna($tam_campo['placa']-strlen($_POST['placa'])+5);
  $_SESSION['conteudo'].='uf';

$_POST['uf_placa'].='uf_placa';  
  coluna($tam_campo['uf_placa']-strlen($_POST['uf_placa'])+11);
  $_SESSION['conteudo'].='cnpj_trans';

  linha(2);coluna(3);
  $_SESSION['conteudo'].='ender_trans';

$_POST['ender_trans'].='ender_trans'; 
 coluna($tam_campo['ender_trans']-strlen($_POST['ender_trans'])+40);
  $_SESSION['conteudo'].='munisc_trans';

$_POST['munisc_trans'].='munisc_trans'; 
 coluna($tam_campo['munisc_trans']-strlen($_POST['munisc_trans'])+7);
  $_SESSION['conteudo'].='uf';

$_POST['uf_trans'].='uf_trans'; 
 coluna($tam_campo['uf_trans']-strlen($_POST['uf_trans'])+10);
  $_SESSION['conteudo'].='ie_trans';

  linha(2);coluna(3);
  $_SESSION['conteudo'].='qtd_volume';

$_POST['qtd_volume'].='qtd_volume';  
  coluna($tam_campo['qtd_volume']-strlen($_POST['qtd_volume'])+10);
  $_SESSION['conteudo'].='especie';

$_POST['especie'].='especie';  
  coluna($tam_campo['especie']-strlen($_POST['especie'])+2);
  $_SESSION['conteudo'].='marca';

$_POST['marca'].='marca';  
  coluna($tam_campo['marca']-strlen($_POST['marca'])+13);
  $_SESSION['conteudo'].='numero';

$_POST['numero'].='numero'; 
 coluna($tam_campo['numero']-strlen($_POST['numero'])+15);
  $_SESSION['conteudo'].='peso_br';

$_POST['peso_br'].='peso_br';  
  coluna($tam_campo['peso_br']-strlen($_POST['peso_br'])+13);
  $_SESSION['conteudo'].='peso_lq';

  linha(2);coluna(3);
  $_SESSION['conteudo'].='dado_adic1';

  linha(1);coluna(2);
  $_SESSION['conteudo'].='dado_adic2';
  
  linha(1);coluna(2);
  $_SESSION['conteudo'].='dado_adic3';
  
  linha(1);coluna(2);
  $_SESSION['conteudo'].='dado_adic4';
  
  linha(1);coluna(2);
  $_SESSION['conteudo'].='dado_adic5';
  
  linha(1);coluna(2);
  $_SESSION['conteudo'].='dado_adic6';
  
  linha(7);coluna(115);
  $_SESSION['conteudo'].='num_nf';

  $escreve = fwrite($fp, $_SESSION['conteudo']); 
  fclose($fp);
  
  

  ?>

<html>
<head>
<script>

function cria_bat(){
	//Cria objeto para manipulacao de arquivos no cliente.
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	if ( !(fso.FileExists("c:\\imprime.bat")) ) {
		//Cria o arquivo imprime.bat, escreve o comando responsavel pela impressao e fecha o arquivo.
		var b = fso.CreateTextFile("c:\\imprime.bat", true);
		b.WriteLine("type G:\\\\httpraiz\\\\nf\\\\<?=$arquivo;?> > LPT1");
		b.Close();
	}
}

function imprime() {
	//Cria um objeto para execucao de um programa no computador do cliente.
	var WshShell = new ActiveXObject("WScript.Shell");
	//Executa o arquivo responsavel pela impressao do arquivo imprime.prn.
	var oExec = WshShell.Exec("c:\\imprime.bat");
}
</script>
</head>
<body>
<script>
cria_bat();
imprime();
</script>
</body>
</html>

Haroldo obrigado pela resposta, porem fique com uma duvida sobre as funcoes de impressão e cria arquivo bat.
Na função CriarBat voce coloca um caminho de rede, eu porem nao tenho este caminho por que estou em um provedor externo como poderia fazer? o arquivo Txt gerado eta no servidor fora do cliente.
(b.WriteLine(“type G:\\httpraiz\\nf\\<?=$arquivo;?> > LPT1”);

Outra duvida é dentro do Sc para usar esta solucao eu teria que usar um Blank ou posso colocar no metodo php, voce pode me dizer como usar javascript em metodo php, eu nao sei.

desde ja obrigado pela ajuda eu vou testar.

quem cria o arquivo.nat é o javascript, não o php, e o javascript está do lado do cliente.

Pode usar método php sim.

Boa tarde

estou com a mesma dificuldade, o que consegui identificar foi que o PDF nao consegue imprimir, pelo windows só esta sendo possivel

No caso você está mandando imprimir direto?

Pede para seu cliente utilizar bematech 4200. Ela é própria para windows e tem Driver.
Assim você consegue mandar para imprimir direto para a impressora e não precisá mecher com javascript.

Segue o link.

http://www.bematech.com.br/equipamento-produto-impressoras-mp-4200+th.html
http://www.impressoras-bematech.com.br/mp-4200?gclid=CI_oqZGS3a8CFcyb7QodOQsfAw

As demais impressoras não possui drive. Então só mesmo com o javascript e o usuário liberando a execução em configuração do navegador.

e como o php (server-side) vai imprimir usando o driver do windows?

Ele da um ctrl + p manda imprimir normal