Ir ao conteúdo

Impressão em PHP utilizando Scripts


jgainfo

Posts recomendados

Postado

Oi tudo bem! Gostaria de saber como imprimir pelo PHP usando outras linguagens de Scripts, por exemplo: Javascript, VBScript, e/ou por um Applet Java, pode ser também!

Estou desenvolvendo um sistema em PHP que pega as variáveis vindas de um formulário e gostaria que imprimisse os dados do formulário numa impressora não-fiscal, no caso estou usando uma "Bematech MP20 MI" inserida na porta paralela (LPT1).

Eu consegui imprimir pelo PHP usando no caso a função "system" mas localmente utilizando o Xampp no Windows XP Sp3, ainda não testei no Windows 7. Mas num servidor externo eles bloqueiam essa função e outras por medidas de segurança.

Sei que existe como imprimir por VBScript mas apenas funciona no IE e parece que tem que mexer no nível de segurança do navegador para aceitar controles ActiveX não-assinados.

Por JavaScript realmente ainda não sei se é possível!

Com Applets Java, acho que sim e parece que rodaria em qualquer navegador e sem restrições de segurança ou pedidos do ActiveX, me corrijam por favor se estiver enganado!

Eu não quero que apareça nenhuma janela para confirmação de impressão ou de configurações, seria realmente uma impressão direta, pois a impressora estaria no computador cliente mesmo.

Meu código até o momento é este:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></header>
<body>
<?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 <br /><br />";
echo "$ped_comidas <br />";
echo "$ped_sabor <br />";
echo "$qnt_comidas <br /><br />";

$local_file = "C:\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:"); // Envia o arquivo para a porta LPT1

printf ("<br>O texto: \"%s\" está sendo impresso. Por favor, aguarde.", $escreve);
?>
</body>
</html>

Estou precisando muito saber como imprimir com PHP e outra linguagem juntas!

Muito obrigado desde já pela atenção de todos!

Postado

Obrigado "andersondanilo" pela resposta! Mas a questão é como eu posso passar todas as variáveis do PHP vindas de um formulário que são muitas para o Javascript e sendo por isso achei melhor criar um arquivo de texto ".txt" através do PHP para imprimir direto o que está neste arquivo para a impressora padrão no caso a "Bematech MP20 MI".

Eu sei que o Javascript pode abrir e ler o conteúdo de um arquivo ".txt", mas ainda não encontrei como fazer esse esse código, mas sei que é possível lendo alguns textos na Net, assim acho que ficaria melhor!

Pesquisei alguns códigos de VBScript de como imprimir e achei este:


<html>
<head>

<script language="VBScript">
SUB Print()
OLECMDID_PRINT = 6
OLECMDEXECOPT_DONTPROMPTUSER = 2
OLECMDEXECOPT_PROMPTUSER = 1
'ACA no caso de usar frames,
'enfocamos o frame a imprimir:

'window.parent.frames.main.document.body.focus()
window.document.body.focus()

'Chamamos ao comando de Impressão Print

on error resume next
call IEWB.ExecWB (OLECMDID_PRINT, -1)

if err.number <> 0 then
alert "Não se pode imprimir"
end if

END SUB
</script>

</head>
<body>

<object id="IEWB" width="0" height="0" classid="clsid:8856F961-340A-11D0-A96B-00C04FD705A2" VIEWASTEXT></object>

E este também que imprime vários arquivos em mais de uma impressora:


' Script para impressão de documentos
' Modificado por Rafael Zottesso
' ******************************
' Cria a variável para definir a impressora padrão
Set objPrinter = CreateObject("WScript.Network")
' Para impressora da rede utilize "\\servidor\Nome da Impressora"
objPrinter.SetDefaultPrinter "Nome da Impressora"
' Define o diretório
TargetFolder = "C:\Users\zOttEssO\Desktop\teste\log\"
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TargetFolder)
' Lista os arquivos
Set colItems = objFolder.Items
For Each objItem in colItems
' Imprime os arquivos encontrados
objItem.InvokeVerbEx("Print")
Next
' Define-se a impressora padrão após 5 segundos
Wscript.Sleep 5000
Set oldPrinter = CreateObject("WScript.Network")
oldPrinter.SetDefaultPrinter "Nome da Impressora Padrão Antiga"

Esta é uma prova de uma página que será impressa, clicando no link abaixo, sem pedir confirmação ao usuário.

<a href="javascript:Print ();">Imprimir</a>

</body>
</html>

Não entendi muito bem esses códigos ainda, estou procurando materiais sobre VBScript, Applets Java, para estudar e compreênder mais sobre elas, mas está meio complicado de encontrar!

Como esses códigos vão pegar as variáveis vinda do formulário PHP ou de um arquivo ".txt" e mandar para impressora?

*Usando Applets Java "parece" que você não precisaria alterar as configurações do navegador, como segurança por exemplo. além de poder ser executado aparentemente em qualquer navegador! Achei essas páginas com alguns códigos para impressão: https://groups.google.com/forum/#!topic/cakephp-pt/u776CVD-wYc e esta: http://lucasoliver.wordpress.com/2008/11/03/applet-para-impressao-via-web/

Se alguém souber mais sobre Applets Java e quiser ajudar com alguma ideia, dica, códigos, ficarei muito agradecido!

Ou indicar uma boa apostila, livros bem completas que trate desse assunto de impressão principalmente, ficarei muito grato!

  • Moderador
Postado

Veja se você tem a extensão extension=php_printer.dll habilitada.


<?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 <br /><br />";
echo "$ped_comidas <br />";
echo "$ped_sabor <br />";
echo "$qnt_comidas <br /><br />";


$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
?>

Lembre que se utilizar o javascript.. como mencionado o amigo ali.. pode imprimit tudo em tela inclusive a barra de endereços.. do navegador.. nesse caso seria interessante criar uma janela só com os dados e mandar imprimir com javascript

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!