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

Publicado por rogerio machado em 04/11/2009

[ Hits: 8.422 ]

 


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

Driver CUPS-PDF ideal para Windows

Marca d'água fácil com ffmpeg (testada em Ubuntu 8.04)

Xdebug e Apache userdir no Ubuntu 8.04

Captura de tela com ótima resolução e pouco uso de banda - ffmpeg + mencoder

Duas contas de Dropbox no mesmo computador

Leitura recomendada

Converter imagens para fundo transparente via linha de comando

Instalando o navegador Opera no Debian Squeeze

O programa SED

Hello world em 397 linguagens

Adicionar rádios no Rhythmbox

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts