Enviando uma impressão direto pelo PHP

Posted by Bento | Posted in Artigos, PHP, Windows | Posted on 08-12-2011-05-2008

11

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

Comments posted (11)

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”;
}

Write a comment