php_printer

Olá, já tinha visto o video, realmente ajuda.
Consigo imprimir usando o PHP e o script sem problemas.
O meu problema e quando coloco o codigo dentro do scriptcase.
Não funciona, e apresenta o erro que coloquei.

Estou precisando de uma dica para que eu consiga imprimir de dentro do codigo scriptcase.

Eu uso a impressora como um arquivo.
Supondo que a impressora esteja conectada na porta COM3.

[code]$_CR_LF = chr(13).chr(10);
$_texto=“esse e o texto a ser impresso”;
$_porta_prn = “COM3:”;

$port = fopen($_porta_prn, ‘w’);
if(!$port) {
$port = fopen($_porta_prn, ‘r’);
if(!$port) {
echo “
Nao foi possivel abrir o arquivo: “.$port.” !”;
}
fclose($port);
$port = fopen($_porta_prn, ‘w’);
}

fwrite($port, $_texto);
fwrite($port, $_CR_LF);

//------------------------------------------------------------------------------------------------
// Fecha a impressão
fclose($port);

[/code]

Isto me lembra o tempo do MS-DOS Jorge.

Alternativa antiga, mas funciona.
kkkkkkk

P.O.G.

Fiz um teste com https://github.com/mike42/escpos-php
Mas basicamente ele faz o que eu faço.

Esse serviço é maravilhoso. Resolve todos os problemas de impressão, sem dificuldade.
E a empresa disponibiliza a API no github de fácil utilização.

Não entendi a forma de usar esta bendita API…
Tô quebrando cabeça ainda…rsrsrs

Eu fiz há muito tempo, importando cada arquivo necessário… (sc_include_library)

Estava pensando em fazer um seminário sobre isso ou sobre envio de SMS ( usando outro serviço que também é pago ).

Nesse caso o php tem que estar na máquina cliente ou pelo menos na rede local.

Nós desenvolvemos um xhabour para colocar na máquina do cliente.
Ele captura o clipboard da máquina cliente e descarrega na impressora.

Ao executá-lo pela primeira vez ele pede a impressora do windows e o macro comando como palavra chave dentro do texto do clipboard.

Exemplo:
Se o texto tiver {print:} no inicio do texto a app descarrega todo o texto (menos a palavra {print:}) direto na porta configurada.

Para escrever no clipboard javascript ou jquery.

Nós desenvolvemos um xhabour para colocar na máquina do cliente. Ele captura o clipboard da máquina cliente e descarrega na impressora.

Ao executá-lo pela primeira vez ele pede a impressora do windows e o macro comando como palavra chave dentro do texto do clipboard.

Exemplo:
Se o texto tiver {print:} no inicio do texto a app descarrega todo o texto (menos a palavra {print:}) direto na porta configurada.

Para escrever no clipboard javascript ou jquery.

Vc me mandou uma cópia para testes e funciona muito bem.

Poxa Ronyan, isto será muito útil… juntando ainda com SMS será top!!!
Faz mesmo…
Excelente!!!

Olá Pessoal,
Desculpa ta voltando ao mesmo assunto. Mas ainda não consigo imprimir diretamente na Porta ( utilizo impressora Terminal USB ) por dentro do scriptcase.
Consigo executando por fora, mas qualquer código que coloco num blank não funciona.
Por exemplo esse codigo:

<?php $mesa = $_POST["mesa"]; $ped_comidas = $_POST["ped_comidas"]; $ped_sabor = $_POST["sabor_comidas"]; $qnt_comidas = $_POST["qnt_comidas"]; $valor_unit_comidas="R$ 30,00"; $sub_total="R$30,00"; echo "$mesa

"; echo "$ped_comidas
"; echo "$ped_sabor
"; echo "$qnt_comidas

"; $imprime = " Mesa: $mesa\n\n Comidas\n\n Pedido(s):\n $ped_comidas\n Sabor: $ped_sabor\n Qnt: $qnt_comidas\n Valor: $valor_unit_comidas\n Sub-Total: $sub_total"; $handle = printer_open(); // abri conexao com a impressora padrão printer_write($handle, $imprime); // enviou para a impressora o texto printer_close($handle); // fechou a conexao com a impressora ?>

criei um arquivo qualquer.php e executo e funciona ( joga para impressora na mesma hora)
Dai quando copio esse código para dentro do blank, não funciona:
Segue o erro:
Fatal error: Uncaught Error: Call to undefined function printer_open() in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Lavanderia\impressora_direto\index.php:1438 Stack trace: #0 C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Lavanderia\impressora_direto\index.php(1864): impressora_direto_apl->controle() #1 {main} thrown in C:\Program Files\NetMake\v9\wwwroot\scriptcase\app\Lavanderia\impressora_direto\index.php on line 1438

Agradeço antecipadamente a ajuda.

Paulo José

Ele esta reclamando Call to undefined function printer_open()
O módulo printer esta carregado no php.ini?

E aí amigão… deixou de lado?

Eu quis ajudar responde anteriormente.
Sinceramente esta extensão é tão velha. Do tempo do php 4.

o manual http://ir2.php.net/manual/pt_BR/book.printer.php já tem o aviso:
"Estas funções somente estão disponíveis no Windows 9.x, ME, NT4 e 2000. Elas foram adicionadas no PHP 4.0.4. "

Sem falar que no próprio manual já fala:
"Esta extensão » PECL nãoo está embutida no PHP.
Usuários Windows precisa habilitar a php_printer.dll no php.ini para usar estas funções. Uma DLL para esta extenção PECL esta atualmente indisponível. Veja também a seção compilando no Windows section. "

Você vai na PECL nem tem mais para baixar. https://pecl.php.net/package/printer

No SVN do php nem se fala o tempo que não é atualizada: http://svn.php.net/viewvc/pecl/printer/

É um milagre quando esta extensão ainda dá sinais de vida no Windows mais novo.
Nem sei porque ainda compilam isto com o php para Windows.
Olha pode até funcionar. O problema é: quer investir em algo que ninguém nem dá mais manutenção?

Olá Alexandre
Realmente não vale a pena investir em uma função que não esta tendo atualização.
Sugestão (exemplo) de algo que seja funcional para as atuais versões ??
Pra mim o importante é que funcione a impressão direta

Agradeço a ajuda e acredito que servirá para muitos também

Grato
Paulo José
Click informática

Mapeia no servidor e imprime local no servidor.
Irá sair na impressora mapeada.
veja que hoje contamos até com impressora que aceitam impressão através da internet.
Neste tópico tem sugestões que dão certo e em outros aqui no fórum também .

Estou tentando com esse codigo:
$mesa = “01”;
$ped_comidas = “carnes todas”;
$ped_sabor = “especial”;
$qnt_comidas = “todas”;

$valor_unit_comidas=“R$ 30,00”;
$sub_total=“R$30,00”;

$local_file = “C:\Users\CMD\Desktop\imprimir.txt”; // Definimos o local para salvar o arquivo de texto

$escreve = " Mesa: $mesa\n\n Comidas\n\n Pedido(s):\n $ped_comidas\n Sabor: $ped_sabor\n Qnt: $qnt_comidas\n Valor: $valor_unit_comidas\n Sub-Total: $sub_total\n\n\n\n\n\n\n\n\n\n\n\ n "; // A variavel escreve será o que desejamos imprimir e escrever no arquivo de texto

$fp = fopen($local_file, “w+”); //utilizamos o operador w+ para criar o arquivo imprimir.txt, e APAGAR tudo que já exise nele, caso ele já exista.
$salva = fwrite($fp, $escreve);
fclose($fp);
// Agora que já temos o arquivo imprime.txt, no local indicado por $local_fil, basta mandar imprimir:

system(“copy” ."$local_file". “LPT1”);
//system(“copy $local_file LPT1”); // Esse funciona por fora

printf (“
O texto: “%s” está sendo impresso. Por favor, aguarde.”, $escreve);

Só não imprime quando esta dentro do scriptcase.

Agora quando executo por fora (usando easyphp)
system(“copy $local_file LPT1”); // Esse funciona por fora
ai funciona

Help!!!
Precisa de ajuda com isso.

Grato mais um vez.

$fp = fopen($local_file, “w+”); //utilizamos o operador w+ para criar o arquivo imprimir.txt, e APAGAR tudo que já exise nele, caso ele já exista.
$salva = fwrite($fp, $escreve);
fclose($fp);

já tentou:
$fp = fopen(“LPT1:”, “w+”);
$salva = fwrite($fp, $escreve);
fclose($fp);

Não funcionou!!!

Alguém tem algum exemplo prático.
Funcionando para imprimir direto na impressora?
Uso windows 7 64 bits, scriptcase 9.1
e uma impressora térmica imprimindo na porta LPT1 ( usando o comando net use )
quando mando por fora, seja pelo DOS ou um arquivos php, imprime, mas pode dentro do scriptcase não vai de jeito nenhum.
É necessário ativar alguma coisa no PHP utilizado pelo scriptcase?

Fiz mais um teste com esse código:

$_CR_LF = chr(13).chr(10);
$_texto=“esse e o texto a ser impresso”;
$_porta_prn = “LPT1:”;

$port = fopen($_porta_prn, ‘w’);
if(!$port) {
$port = fopen($_porta_prn, ‘r’);
if(!$port) {
echo “
Nao foi possivel abrir o arquivo: “.$port.” !”;
}
fclose($port);
$port = fopen($_porta_prn, ‘w’);
}

fwrite($port, $_texto);
fwrite($port, $_CR_LF);

//------------------------------------------------------------------------------------------------
// Fecha a impressão
fclose($port);

Funcionou perfeitamente fora do scriptcase.
Mas quando coloquei ele no blank
ola as mensagem que ele apresenta:

Atenção
fopen(LPT1:): failed to open stream: No such file or directory
Atenção
fopen(LPT1:): failed to open stream: No such file or directory

Nao foi possivel abrir o arquivo: !
Atenção
fclose() expects parameter 1 to be resource, boolean given
Atenção
fopen(LPT1:): failed to open stream: No such file or directory
Atenção
fwrite() expects parameter 1 to be resource, boolean given
Atenção
fwrite() expects parameter 1 to be resource, boolean given
Atenção
fclose() expects parameter 1 to be resource, boolean given

Paulo José
Click Informatica