Imprimir direto pelo PHP
Primeiro você deve configurar o php, abra o arquivo php.ini e descomente a linha a seguir;
1 | extension=php_printer.dll |
Em seguida reinicie o servidor web.
Crie um arquivo com o nome de teste.txt, e coloque algum texto dentro dele(apenas para testar).
teste.txt
1 | estamos testando nosso arquivo teste.txt |
O próximo passo é verificar o nome da impressora, a minha esta com o nome de (hplasercolor).
Crie um arquivo com o nome imprimir.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | //configure o nome da sua impressora $printer = "hplasercolor"; if($ph = printer_open($printer)) { // Get file contents //abrindo o arquivo de texto $fh = fopen("teste.txt", "rb"); //llendo o arquivo de texto $content = fread($fh, filesize("teste.txt")); fclose($fh); // Set print mode to RAW and send PDF to printer printer_set_option($ph, PRINTER_MODE, "RAW"); printer_write($ph, $content); printer_close($ph); } else "Couldn't connect..."; |
Para maiores informações visite o site oficial do PHP
http://br2.php.net/manual/pt_BR/book.printer.php
Ola, esse código funciona no servidor linux? quando ele executa o código, ele manda o texto pra impressão sem aquela caixa de dialogo?
att
Renato,
Não cheguei a testar em ambiente linux, mas deverá funcionar normalmente desde que a impressora esteja instalada.
Qual os linux você usa?
Fala Bento…estou tentando faz algum tempo executar vários codigos para tentar essa impressão no windows 7.
Tenho a extensão php_printe.dll no php.ini
Tenho o php_printer.dll na pasta ext do php…
Eu consigo conectar na impressora, mas não consigo imprimir nada, vc sabe qual pode ser a causa?
Boa tarde amigo estou tentando usar o script porem fica dando este erro!
Fatal error: Call to undefined function printer_open() in C:…
O que pode estar acontecendo já baixei e coloquei o dll do printer na pasta ext, coloquei o nome da impressora …
Agradeço se puder me ajudar!
Thiago, você precisa adicionar a biblioteca no php, descomente a linha abaixo no arquivo php.ini ou adicione.
extension=php_printer.dll
Não esqueça de reiniciar o servidor apache após alterar.
olá, poderiam me ajudar por favor? estou com o erro na linha
if($ph = printer_open($printer))
Fatal error: Call to undefined function printer_open() in
a impressora que estou utilizando está em rede, tentei colocar conforme está o nome dela \\srvprinter\nomedaimpressora e nao deu certo.
já coloquei a dll php_printer e tambem adicionei no php.ini a extension-php_printer.dll
obrigado
Olá Alexandre, após a configuração da DLL reinicie o servidor.
Como a impressora está a partir de um compartilhamento de rede faça o teste acrescentando as barras, para não escapar a string do PHP, conforme exemplo abaixo;
\\\\srvprinter\\nomedaimpressora
Att.
Bento
Ola teria alguma forma de selecionar a impressora que esteja instlada? ou preciso fazer alguma integração com uma linguagem de desktop? teria alguma forma de utilizar uma extensão para crhome, firefox?
Cicero, você irá definir a impressora na variável $printer = “nome da impressora”;
Amigo. já tentei de tudo.. e não reconhece pinter_open
Call to undefined function printer_open()
Mesmo tendo a DLL e estando descomentada no INI
Minha impressora é uma HP Deskjet, está local no computador com localhost, uso o windows 10 e programa está abaixo.
$printer = “HP”;
if($ph = printer_open($printer))
{
printer_set_option($ph, PRINTER_MODE, “RAW”);
printer_write($ph, “Aqui vai seu texto”);
printer_close($ph);
}
Marcel,
Verifique se a function está ativa no PHP, usando o comando abaixo.
if (function_exists(‘printer_open’)) {
echo “Printer Open functions are available.
\n”;
} else {
echo “Printer Open functions are not available.
\n”;
}
Bom dia amigo, parabéns pelo artigo! Mas infelizmente estou tendo o mesmo problema que o amigo “Marcel”, e testando com esse código acima apresenta a mensagem “Printer Open functions are not available.” ou seja, como se de fato essa função estivesse desativada do PHP, mesmo colocando a DLL na pasta “ext” e setando a configuração da linha “extension=php_printer.dll” não funciona nada.
Será que você teria alguma ideia do que poderia ser?
Grato pela sua ajuda!