Como enviar arquivo p uma impressora remota via HTTP?
11 respostas
malhuco
Tenho uma aplicação WEB usando JSF. Os usuários remotos terão impressoras conectadas a seu PC, e eu preciso enviar relatórios gerados pelo sistema para impressão nestas impressoras dos usuários.
Implementei a classe a classe Printable, mas não estou sabendo como pegar essa impressora do usuário para completar tal objetivo, alguém já fez algo parecido!!!
Se for web, você simplesmente não vai conseguir. Supondo que é web (dado que você colocou servidor web na imagem):
Na melhor das hipóteses você deveria ter um applet que talvez possa acessar a impressora. Ou então, manda um
window.print();
junto com a página do relatório para abrir a janela de escolha da impressora (e aí fica a critério do usuário pedir a impressão, ou não).
Pense na questão de segurança, se todo site que você entrasse resolvesse fazer automagicamente a impressão da tela! Não é legal, né?
malhuco
otaviofcs:
O sistema é web?
Se for web, você simplesmente não vai conseguir. Supondo que é web (dado que você colocou servidor web na imagem):
Na melhor das hipóteses você deveria ter um applet que talvez possa acessar a impressora. Ou então, manda um
window.print();
junto com a página do relatório para abrir a janela de escolha da impressora (e aí fica a critério do usuário pedir a impressão, ou não).
Pense na questão de segurança, se todo site que você entrasse resolvesse fazer automagicamente a impressão da tela! Não é legal, né?
nao eh uma tela, e sim um arquivo pdf. Nao tem problema aparecer a caixa d dialogo p o usuario contanto q eu posso passar o arquivo como parametro.
vai printar a tela… e eu n terei o relatorio em tela…
bom… e o uso d Applet seria inviavel, pois o usuario pod ou n tr java instalado… normalmente n teraaa…
bom para q fique mais claro, estou usando JSF…
T
thingol
Se o servidor tiver acesso à fila da impressora do cliente, e se de alguma forma o nome dessa fila for informado e configurado, talvez isso seja possível.
Por exemplo, se o cliente disser que a impressora dele é “\abcde\printerX” e o driver dessa impressora estiver corretamente configurado no servidor.
O problema é que o servidor teria de poder acessar remotamente a fila, o que nem sempre é possível, porque mesmo em intranets o servidor não costuma poder acessar recursos dos clientes devido a regras de firewall ou outras coisas parecidas.
T
thingol
Em sistemas que normalmente fazemos, solicitamos ao cliente que receba o PDF (um servlet é que gera o tal PDF) e ele é que tem de iniciar (manualmente) a impressão.
Como o PDF é visualizado em uma janela do browser com os botões de impressão que o próprio Adobe Reader disponibiliza, então não é tão traumático assim.
malhuco
entao thingol, essa eh a minha duvida, e o meu principal objetivo agora, eu preciso da fila de impressora do cliente, ou apanes a impressora padrao, para dai tentar mandar o arquivo p a impressora, mas o problema eh como???
Em sistemas que normalmente fazemos, solicitamos ao cliente que receba o PDF (um servlet é que gera o tal PDF) e ele é que tem de iniciar (manualmente) a impressão.
Como o PDF é visualizado em uma janela do browser com os botões de impressão que o próprio Adobe Reader disponibiliza, então não é tão traumático assim.
a ideia eh q o usuario n abrisse o arquivo, e sim apenas imprimisse-o…
e nisso poderia sair apenas 1 ou varias copias, isso tudu determinado pelo server…
otaviofcs
thingol:
Em sistemas que normalmente fazemos, solicitamos ao cliente que receba o PDF (um servlet é que gera o tal PDF) e ele é que tem de iniciar (manualmente) a impressão.
Como o PDF é visualizado em uma janela do browser com os botões de impressão que o próprio Adobe Reader disponibiliza, então não é tão traumático assim.
Concordo totalmente. Mesmo com uma intranet, o custo de gerenciamento dessas filas seria algo absurdo. Você precisa realmente garantir que o usuário imprima? E só pode imprimir uma vez, é isso? Se for esse o caso, e se acaba o cartucho?
Acho que você deveria limitar a sua responsabilidade em relação a sua impressão. Ou então, só com applet (pelo menos que eu saiba).
abraços,
otávio
malhuco
otaviofcs:
thingol:
Em sistemas que normalmente fazemos, solicitamos ao cliente que receba o PDF (um servlet é que gera o tal PDF) e ele é que tem de iniciar (manualmente) a impressão.
Como o PDF é visualizado em uma janela do browser com os botões de impressão que o próprio Adobe Reader disponibiliza, então não é tão traumático assim.
Concordo totalmente. Mesmo com uma intranet, o custo de gerenciamento dessas filas seria algo absurdo. Você precisa realmente garantir que o usuário imprima? E só pode imprimir uma vez, é isso? Se for esse o caso, e se acaba o cartucho?
Acho que você deveria limitar a sua responsabilidade em relação a sua impressão. Ou então, só com applet (pelo menos que eu saiba).
abraços,
otávio
eu n precisso tr a garantia q ele imprimiu… mas de q ele receba, se ele n imprimir vai ser um problema dele… dai ele vai tr q relatar pq n imprimiu tais documentos…
o server vai setar qtos documentos ele vai imprimir dependendo do tipo d usuario q o Usuario for…
abraco…
T
thingol
Ora, se o PDF for visualizado no browser, ele recebeu o tal arquivo, não?
Se ele imprimiu ou não é mais complicado. (Salve as árvores, não imprima documentos em papel, conserve-os em formato PDF ).
Só completando, em nossos sistemas o PDF é visualizado diretamente no browser em um frame; não é enviado como um arquivo “Salvar como”. Então para o usuário basta clicar no botão “Imprimir” do Adobe Reader que é visualizado no browser.
malhuco
thingol:
Ora, se o PDF for visualizado no browser, ele recebeu o tal arquivo, não?
Se ele imprimiu ou não é mais complicado. (Salve as árvores, não imprima documentos em papel, conserve-os em formato PDF ).
Só completando, em nossos sistemas o PDF é visualizado diretamente no browser em um frame; não é enviado como um arquivo “Salvar como”. Então para o usuário basta clicar no botão “Imprimir” do Adobe Reader que é visualizado no browser.
comcodo plenamente coom vc… (Salve as árvores, não imprima documentos em papel, conserve-os em formato PDF ).
mas o problema, eh q o sistema n gerencia apenas arquivos pdf, pode haver doc, xls, cdr, tiff, jpg , …
se todas as extensões pode-sem ser abertas dentro do browser fikaria mais facil… mas sao N tipos d arquivos…
abraço…
otaviofcs
faça um tratamento para que cada tipo de arquivo gere o cabeçalho correto de contenttype e aí o browser saberá a melhor maneira de abrir/dar download
malhuco
hum… interessante…
mas poderia m passar alguma referencia para gerar um cabeçalho content-type???