Linux slogan
Visite também: BR-Linux.org · Dicas-L · SoftwareLivre.org · UnderLinux

Linux banner
Linux banner
Linux banner
Linux banner


» Screenshot
Linux: Biglinux 11.10
Por ianclever

Dica

Cups-pdf já é uma mão na roda? Que tal cups-para-qualquer-coisa?
Linux user
Publicado por rogerio machado em 04/11/2009

Login: rogeriojlle, 92720 pontos
[ Hits: 5829 ]

Cups-pdf já é uma mão na roda? Que tal cups-para-qualquer-coisa?

Eu queria outro dia criar um sistema de visualização do que foi impresso via web, de várias impressoras, e também tinha de exibir informações a respeito do material impresso. O problema do cups-pdf é que só permite uma instância dele por computador.

A solução foi simples, bastou alterar uma única linha do arquivo "pipe", um backend para openSUSE, esse backend originalmente envia via pipe somente "o grosso" do material a ser impresso, e seu programa/script precisa lidar com STDIN, senão não "funfa"...

Abra o arquivo /usr/lib/cups/backend/pipe e substitua:

$cmdln = "/bin/cat $file | $arg";

por:

$cmdln = "/bin/cat $file > /tmp/$ARGV[0].ps && $arg $ARGV[0] $ARGV[1] $ARGV[2] $ARGV[3] $ARGV[4]";

Caso o tal arquivo não exista, instale o pacote "cups-backends".

Agora na hora de adicionar uma "impressora" a URI do dispositivo fica assim:

pipe:/caminho/do/script/ou/programa

Seu script agora receberá esses parâmetros:
  • $1 - job-id
  • $2 - username
  • $3 - job title
  • $4 - number of copies
  • $5 - job options

Não conheço maneira de enviar o número de páginas nem o conteúdo do que será impresso (antes que perguntem, não dá para usar $ARGV[5]), por isso usei o PPD "generic postscript" para que seja sempre um arquivo do tipo post-script lá em /tmp.

O arquivo exemplo do arquivo "pipe" completo, pra quem não quiser baixar o rpm está em:



Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Splash do VOL no seu Gnome
   Dica Linux recomendada Customizando o Slax 7
   Dica Linux recomendada Criando um disquete gerenciador de boot com o Slackware a partir do Windows
   Dica Linux recomendada Emulador de Super Nintendo (SNES) no Ubuntu Linux
   Dica Linux recomendada Linux Mint bonito!

Comentários
[1] Comentário enviado por GilsonDeElt em 04/11/2009 - 09:35h:

cabuloso
=D


[2] Comentário enviado por Teixeira em 04/11/2009 - 10:32h:

Não é possível ecoar já com tratamento do texto, pois isso implicaria em uma etapa intermediária, que fugiria ao escopo daqueilo que você pretendeu com a sua dica.
Considere que se pudermos numerar as páginas, também poderemos mudar a tipologia, aplicar bolds, underlines, etc.
Isso é muita areia para a caçamba desse caminhão.
O simples fato de podermos ecoar qualquer coisa já é uma grande coisa.
E para mandar diretamente para a impressora, realmente não precisaria do cups. Bastaria ecoar pela porta serial ou paralela.


[3] Comentário enviado por rogeriojlle em 04/11/2009 - 20:30h:

acho que estamos falando de coisas um pouco diferentes, vou descrever aqui a maneira de que eu entendi o que voce quis dizer

"Isso é muita areia para a caçamba desse caminhão."
De fato quando pesquisei isso, minha intenção era de somente mostrar na página web quem imprimiu, o nome do documento, uma miniatura em flash das folhas (o pessoal que está usando se amarrou nisso) e (sem sucesso) o numero de páginas do documento. coisas que consegui através dos "$ARGV[X]"

"Considere que se pudermos numerar as páginas, também poderemos mudar a tipologia, aplicar bolds, underlines, etc."
Acho que voce está falando sobre editar o pdf; não, a intenção é somente mostrar o numero de páginas do documento na web

"E para mandar diretamente para a impressora, realmente não precisaria do cups. Bastaria ecoar pela porta serial ou paralela. "
Mas nesse caso o dispositivo tem de ser compatível com postscript Level 3 etc etc - é isso?
Vou tomar como dica, obrigado
Atualmente nada é impresso diretamente, os alunos imprimem nessa "impressora bem compartilhada" e se dirigem até a central de cópias, lá é feito o download e impresso da maneira tradicional

uma correção da minha dica:
"antes que perguntem, não dá para usar $ARGV[5])" era pra eu escrever [6]
e antes de perguntem (de novo) porque eu simplesmente não compartilhei a pasta dos pdf's via samba; é porque não quis.... pronto, (mais por uma questão de aprender fazer algo de maneira diferente)

vou deixar o link do serviço, (está em produção, vou deixar um tempo as portas abertas caso alguem queira dar uma olhada então por favor não avacalhem), um modelo com essas funções que mostrei na dica ainda tá na minha VM do Virtualbox

funciona assim: mapeiem a impressora:
http://150.162.92.60:631/printers/CUPS-PDF">http://150.162.92.60:631/printers/CUPS-PDF

mandem imprimir algo nela e uma miniatura vai surgir em:
http://150.162.92.60

usei o ppd acrobat distiller, mas acho que generic PS funciona também.

Se o pessoal quiser faço um artigo disso



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.