Imprimir

166 views
Skip to first unread message

LucianoMarqueto

unread,
May 15, 2012, 5:03:52 PM5/15/12
to cakep...@googlegroups.com
Pessoal passei o dia todo procurando como imprimir utilizando o CAKE ou PHP e nada que funcione para o meu caso.

Eu preciso imprimir em uma zebra utilizando código EPL e a impressora esta em rede utilizando um print server, tenho que enviar o comando através do PHP e não da interface do usuário já que não tenho as impressoras mapeadas em todos os PC que iram utilizar e quero evitar a caixa de diálogo.

As buscas que efetuei encontrei referências a biblioteca php_printer.dll, como estou utilizando um servidor com WinServer2008R2 isso descarta a possibilidade de imprimir utilizando a biblioteca já que ele não funciona nesse windows (me corrijam se estiver errado, mas eu testei e não consegui fazer funcionar).
Depois encontrei uma solução utilizando o system() onde primeiro eu deveria instalar todas as impressoras no servidor (tenho que imprimir varias impressoras diferentes) depois compartilhar essas impressos e por ultimo tenho que mapear a porta lpt para cada uma das impressoras através do comando @ net use lpt1 \\127.0.0.1\IMPRESSORA.

Esse ultimo método até que funciona, mas para o meu caso é muito difícil de implementar já que são muitas impressoras.

Estou postando aqui na esperança de achar uma forma mais inteligente de fazer isso antes de sair mapeando um monte de porta lpt :D.

kh...@khrisnet.com.br

unread,
May 16, 2012, 9:32:52 AM5/16/12
to cakep...@googlegroups.com
Olá Luciano, bom dia!
Tudo bem?

Já enfrentei problemas relacionados as mesmas necessidades em alguns sistemas que desenvolvemos. No nosso caso como prezamos desenvolver aplicações em servidores dedicados ou nas nuvens (não utilizando a infra-estrutura do cliente), além de acessível a partir de qualquer browser, optamos em utilizar Applets java para executar essas rotinas de impressão (dentre outras soluções), tanto para impressoras matriciais como impressoras térmicas, acredito que essa seria sua melhor alternativa também.
Tem possibilidade de você fazer isso também via Active-X, porém sua aplicação rodaria somente nos IEs (Internet Explorer) utilizando algumas DLLs, etc, etc. Agora a questão do net use lpt também é inevitável a nível  mapeamento de impressoras locais.

Recomendo a leitura de artigos sobre Applets java e comunicação com dispositivos locais, ou seja localizados na máquina/dispositivo do cliente.

Bom, acredito que seria isso, qualquer dúvida estou a disposição. Abraços e sucesso no seu projeto.

---
Khristian K. Algarves
Gerente de T.I (Tecnologia da Informação)


--
CakePHP Tuga (cakephp-pt)
 
Utilize http://bin.cakephp.org para códigos
Cookbook: http://book.cakephp.org
 
Website do CakePHP: http://cakephp.org/
Website do grupo: http://groups.google.com/group/cakephp-pt?hl=pt-PT

Tobias Sette

unread,
May 16, 2012, 12:32:05 PM5/16/12
to cakep...@googlegroups.com
Isto aqui talvez possa ajudar:  http://groups.google.com/group/listaphp/browse_thread/thread/ede6799ad4fcc7cd 

Khristian, você teria source para disponibilizar?

Att,

Tobias

-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS/CM/G/H/IT/L/SS d?(--) s++:+ a-- C+++>++++ UL++>++++ P+ L+++>+++++ !E@ W+++
!N o? K- w !O !M@ !V@ PS PE-- !Y@ PGP t+ 5? X? R+ !tv b+ DI>+ !D@ G e- h+ r-- y?
------END GEEK CODE BLOCK------




Em 15 de maio de 2012 18:03, LucianoMarqueto <luciano...@gmail.com> escreveu:

--

kh...@khrisnet.com.br

unread,
May 16, 2012, 12:47:05 PM5/16/12
to cakep...@googlegroups.com
Olá, boa tarde!

Legal, infelizmente questão de fontes não posso estar disponibilizando pois é de propriedade da empresa que trabalho, mas acredito que achei algo melhor ainda para compartilhar com você. Veja no link abaixo:


Se trata de uma solução completa em Applet para impressão (pelo que vi é especialmente para impressoras de etiquetas, padrões no mercado), onde você passar os comandos EPL direto para sua porta de impressão. Realmente não conhecia, mas achei super interessante, acredito que com os fontes desse projeto você terá como ajustar a sua necessidade.
O que muda de um para outro é os comandos, pois a comunicação é a mesma, ok.

Abraços ...

---
Khristian K. Algarves
Gerente de T.I (Tecnologia da Informação)
UEBY.COM - Sistemas para Internet Ltda
Fone/Fax: +55 (48) 3438.9514 / (48) 8844.6750
w w w . u e b y . c o m
---------------------------------

Luciano Marqueto

unread,
May 16, 2012, 5:00:59 PM5/16/12
to cakep...@googlegroups.com
khris muito legal esse jzebra, vou dar uma analisada, obrigado.

Mas consegui uma outra saída sem ter que mapear a porta lpt é parecida com a do post indicado pelo Tobias mas o comando do sbmclient do post não funcionou aqui então eu executei o seguinte código:

<?php
system("copy teste.txt \\127.0.0.1\IMPRESSORA");
?>

por algum motivo não funcionou.
então criei um .bat com esse comando e executei o .bat com 

<?php
system("teste.bat");
?>

desta forma não preciso mapear as portas lpt apenas tenho que compartilhar as impressoras.

vou tentar utilizar o jzebra depois posto o resultado.

Valeu

José Trancas

unread,
May 16, 2012, 5:13:03 PM5/16/12
to cakep...@googlegroups.com
Outra forma será comunicar com um servidor CUPS, se o PHP estiver a
rodar numa máquina linux por exemplo.

http://www.nongnu.org/phpprintipp/

2012/5/16 Luciano Marqueto <luciano...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages