+5

Enviando dados para Impressoras

criado por Marcelo Pereira Fonseca da Silva em 03/07/2003 2:44pm
Vou dar alguns exemplos que irei retirar do site PHP.net de como usar estas funções:

<?php
$handle = printer_open("lx300"); // abre conexao com a impressora setada no caso
$handle = printer_open(); // tentaria abrir conexao com a impressora padrao no php.ini
?>

Onde $handle é necessário, pois ele é um recurso que é usado pelas outras funções para identificar a impressora.

Exemplo de enviar um texto simples para a impressora:

<?php
$handle = printer_open(); // abril conexao com a impressora padrao
printer_write($handle, "X-SQL é um menino legal"); // enviou para a impressora o texto
printer_close($handle); // fechou a conexao com a impressora
?>

Note que enviando o texto dessa forma a impressora irá imprimir no modo que ela estiver configurada com relação à fonte, margens e etc. Para trocar isso você pode usar as outras funções para configurar esses outros detalhes.

Outro exemplo:

<?php
printer_set_option($handle, PRINTER_MODE, "RAW");
// se você abrir a conexao com a sua impressora com 
// a variavel $abacaxi troque o $handle por $abacaxi
 
// PRINTER_MODE é uma opção (constante) da função printer_set_option 
// e RAW faz imprimir no tal modo condensado.
?>

Você pode obviamente criar um arquivo texto único com o conteúdo que deseja imprimir e depois passar o conteúdo desse arquivo para a função printer_write().

Quem quiser fazer testes por favor enviem comentários abaixo das suas experiências, pois é extremamente interessante para a comunidade este tipo de informação pois não há muita documentação sobre o assunto em português.

Se possível, façam testes em rede (desenvolvi um sistema de impressão) com as funções acima citadas, porém não obtive sucesso ao tentar imprimir em rede.

Ainda nos post comments do PHP.net foi falado que é possível enviar \\seu_servidor_legal\impressora por caminho, e talvez assim funcione a tal da impressão via rede.

Qualquer sugestão é muito bem-vinda. Espero que alguém que tenha algum conhecimento avançado sobre as funções acima escreva ou ainda dê continuidade neste artigo, para implementar novas idéias e exemplos.

Abraços,

X-SQL under..
GNU/Linux Slackware.

Comentários:

Mostrando 1 - 10 de 42 comentários
rogerio disse:
oi gostaria de saber se é possivel usar estas funções com o xp, pois esta dando umas mensagens de erro bem esquisitas: "o aplicativo ou a dll d:\apache\php\extensions\php_printer.dll não é uma imagem válida para o windows. Compare com o disco de instalação. e depois a mensagem de unknown() :unable to load dynamic library d':apache\php\extension\php_printer.dll - 1% não é um aplicativo win32 válido...
vi a dica do marcelo, mas o php.ini esta correto pois a extensão gd2 que estou utilizando tambem esta funcionando perfeitamente... O que pode ser?
09/06/2006 5:50am (~15 anos atrás)

João Borges disse:
Pessoal alguem conseguiu imprimir pelo PHP um arquivo HTML, estou precisando URGENTEMENTE imprimir um relatório feito em HMTL pelo PHP, pq pelo Browser não encaixa de jeito nenhum no formulário.
Se alguem puder me ajudar meu MSN é joaoborgesbr@hotmail.com
27/01/2006 5:35am (~16 anos atrás)

eu instalei a generic tex e ela imprimiu na bematech + depois q imprime ela sai o resto da folha em branco como se fosse um A4
tem como imprimir o texto e parar de puchar a folha?
09/12/2004 3:57pm (~17 anos atrás)

para imprimir na bematech é o mesmo processo?
09/12/2004 9:50am (~17 anos atrás)

cara é demais , php é foda,,, quem não pode com ele come farinha.. hehehe..


NOTA 10...
16/04/2004 4:17pm (~17 anos atrás)

Peguei parte de um script no phpbuilter.com
e acho que pode funcionar em impressões via rede;

Você pode imprimir em XP. E, você pode imprimir a uma impressora compartilhada com XP. Devem ser instalados os Drivers para a impressora no servidor de como também no computador você deseja imprimir com. Também, a impressora deve ser compartilhada no computador do cliente.

Eu estou usando uma Zebra LP2844 Impressora de Barcode Térmica em minha aplicação. Eu sou XP corrente Pro,Apache 1.3.27, PHP 4.3+.

function getPrinter($SharedPrinterName) {
global $REMOTE_ADDR;
$host = getHostByAddr($REMOTE_ADDR);
return "\\\\".$host."\\".$SharedPrinterName;
}

$handle = printer_open(getPrinter("Eltron"));


Assim, contanto que você SAIBA que os computadores são suponha para ter uma impressora compartilhada chamado "Eltron", você é todo o jogo para começar enviando info à impressora com as outras funções de Impressora
31/03/2004 10:08pm (~17 anos atrás)

Olá,

Bom, deve ser algum problema da lista de spool

tente limpar a fila e tente retornar dados sobre esta impressora usando

printer_get_option()

espero ter ajudado
14/02/2004 8:36am (~18 anos atrás)

Olá Marcelo!

Vc deve estar lembrado de mim, escrevi para vc algum tempo atrás sobre esse seu artigo!

Só agora tive tempo de testar o envio de dados para a impressora!
Para teste, utilizei as seguintes linhas de comando:

<?

$handle = printer_open("Printer"); //Printer é o nome da minha impressora...
printer_write($handle, "X-SQL é um menino legal");
printer_close($handle);
?>

E obtiver o seguinte erro:

Warning: couldn't allocate the printerjob [63] in C:\Apache2\htdocs\printer.php on line 7

Parece que ele encontrou a impressora, mas não consegue imprimir...

Vc sabe o que pode estar acontecendo??

Um abraço!
13/02/2004 7:34pm (~18 anos atrás)

Amigo seu php.ini provavelmente não está configurando com o diretorio extensions apontando para a pasta correta.. isso é percebido no erro

Unable to loaddynamic library './extensions\php_printer.dll'

coloque o diretorio onde existe o arquivo php_printer.dll e ele irá funcionar

qualquer outra duvida poste que eu lhe ajudo

Espero ter ajudado
09/01/2004 9:24pm (~18 anos atrás)

Eu tentei fazer testes com os códigos abaixo, mas não consegui devido a um problema:
Fui no php.ini e alterei a seguinte linha:
----------------------------
;extension=php_printer.dll
para
extension=php_printer.dll
----------------------------
simplemente tirei o ; da linha para que o php executasse-a! Mas, ele meretornou o seguinte erro ao dar um start no php:"PHP Warning: Unknown(): Unable to loaddynamic library './extensions\php_printer.dll' - Um dispositivo anexado ao sistema não está funcionando. in Unknown on line 0.

SO Win98;
apache tray 0.99-b6;
php4 versão 4.0.x

O que faço para dar certo?
<?php

$linhas = "linha1\n";
$linhas .= "linha";

// ou substitua na linha1 com <BR> mas
// provavelmente é \n mesmo se nao der
// dependendo do seu OS use \r\n

$handle = printer_open();
printer_write($handle, $linhas);
printer_close($handle);
?>
09/01/2004 8:02pm (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)