Instalar impressora no CUPS a partir de um arquivo PPD

Publicado por Gabriel Fernandes 24/10/2006

[ Hits: 34.424 ]

Homepage: http://cd2.com.br

Download Instala.ppd.hpijs.cups




Script para instalar impressoras no CUPS, usando o driver HPIJS (http://hplip.sourceforge.net/), a partir de um arquivo de definição da impressora (PPD).

Se tua impressora não estiver na lista de impressoras do CUPS, é possível ir no Linux Printing (http://www.linuxprinting.org) e baixar o arquivo de definição (.PPD) da mesma.

Este script instala o arquivo PPD e cria a fila de impressão no CUPS.

Importante: este script precisa, obrigatoriamente, do arquivo foomatic-rip (filtro universal). Ele precisa estar no mesmo diretório onde será executado o script.

Este script foi testado no Slackware 10.2, Red Hat Linux 9, RedHat WS 3 e Fedora Core 2.

  



Esconder código-fonte

#!/bin/bash
#Criação de fila de impressão no CUPS via shell
#
#[2006-08-08] Criado por Gabriel Fernandes - <nayaless@terra.com.br>
#
#Script para instalação de arquivo PPD para impressoras que usam o driver/plugin HPIJS no CUPS
#Este script foi criado em campo e na correria, pode ser melhorado, o que signifca que alterações
#são bem vindas, desde que não seja retirado a referência ao autor.
#

ARGUMENTOS=$@

if [ "$USER" != 'root' ]; then 

   echo ""
   echo "ATENÇÃO"
   echo "Este script somente pode ser executado com o usuário ROOT"
   echo ""
   exit 1


fi

if [ -z $1 ]; then
   echo ""
   echo "ATENÇÃO"
        echo "Você deve infomar o nome da fila de impressao que será criada, o"
   echo "dispositivo e o arquivo PPD !!!"
        echo "Para ver os dispositivos disponíveis use o comando lpinfo -v."
        echo "Exemplo : $0 <nome_fila> <dispositivo> <arquivo_PPD>"
        echo "Exemplo para porta LPT1 e impressora Lexmark: "
   echo "$0 LEXMARK parallel:/dev/lp0 Lexmark-Optra_E321-hpijs.ppd"
        echo "Exemplo para porta IPP e impressora Lexmark: "
   echo "$0 LEXMARK ipp://host:631/printers/fila_impressao Lexmark-Optra_E321-hpijs.ppd"
   echo ""
   echo "Homologado para as versões:"
   echo "Slackware 10.2.0"
   echo "Red Hat Linux release 9 (Shrike)"
   echo "Fedora Core release 2 (Tettnang)"
   echo "Red Hat Enterprise Linux WS release 3 (Taroon Update 6)"
   echo ""
        exit 1
fi

echo ""
echo "Preparando para instalar ..."
echo ""
echo "Fila de Impressão $1 no dispositivo $2 com o arquivo de definição $3"
echo ""
echo "Homologado para as versões"
echo "Slackware 10.2.0"
echo "Red Hat Linux release 9 (Shrike)"
echo "Fedora Core release 2 (Tettnang)"
echo "Red Hat Enterprise Linux WS release 3 (Taroon Update 6)"
echo ""
echo "Procurando pelo driver HPIJS ..."
echo ""

LOCAL_DRIVER=`whereis hpijs | cut -d ' ' -f 2`
LOCAL_FILTRO=`pwd` 
FILTRO="foomatic-rip"
LOCAL_FILTRO="$LOCAL_FILTRO/$FILTRO"

#Verifica a existencia do filtro universal foomatic-rip e não existindo tenta baixar
if [ -e "$LOCAL_FILTRO" ] ; then

   echo "Usando filtro $LOCAL_FILTRO"   

else
   echo "Filtro Universal foomatic-rip não encontrado, tentando fazer download:"
   /usr/bin/wget -c http://www.linuxprinting.org/download.cgi?filename=foomatic-rip
   echo "Se o download foi completado com sucesso execute novamente $0 $@,"
   echo "caso contrário faça download e execute $0 $@"
   echo ""
   exit 1
fi

#Verifica a existencia do driver hpijs e existindo executa o processo

if [ -e "$LOCAL_DRIVER" ] ; then

   echo "Usando driver $LOCAL_DRIVER"

   #Copiando arquivo de descrição do driver e da impressora, NÃO É O DRIVER !!!
   cp -rf $3 /usr/share/cups/model/$3

   #Copiando o filtro universal foomatic-rip
   cp -rf $LOCAL_FILTRO /usr/lib/cups/filter/$FILTRO

   chmod a+r /usr/share/cups/model/$3
   chmod a+rx /usr/lib/cups/filter/$FILTRO

   #Fazendo o daemon CUPS reconhecer o novo arquivo PPD
   killall -HUP cupsd
   #Aguardando o daemon subir
   sleep 2

   #Adicionando fila de impressão   
   /usr/sbin/lpadmin -p $1 -E -v $2 -m $3 -o PageSize=A4

   #Listando a fila instalada
   echo ""
        echo "Instalado o dipositivo:"
   echo ""
   
   /usr/bin/lpstat -t | grep $1

        echo ""
        echo "Instalação completa."
        echo ""
        echo "ATENÇÃO"
   echo ""
   echo "Para imprimir a partir do Windows em impressora com linguagem PCL"
   echo "é necessário editar o arquivo /etc/cups/mimes.types e retirar o "
   echo "comentário das linhas:"
   echo ""
   echo "application/vnd.cups-raw        (string(0,<1B>E) + !string(2,<1B>%0B))" 
        echo "                             string(0,<1B>@) "
   echo "                                (contains(0,128,<1B>%-12345X) + "
        echo "                            (contains(0,1024,"LANGUAGE=PCL") "
   echo "                                contains(0,1024,"LANGUAGE = PCL")))"
   echo ""
   echo "application/octet-stream"
   echo ""
   echo "E no arquivo /etc/cups/mimes.convs retirar o comentário da linha:"
   echo ""
   echo "application/octet-stream        application/vnd.cups-raw        0       -"
   echo ""
   echo "FIM"

   exit 0
else
   echo "ATENÇÃO"
   echo "Não é possível continuar, pois o driver HPIJS não está instalado"
   exit 1
fi




Scripts recomendados

Mata usuários do FreeNX Server

Album de fotografias v1.1

Jukebox com dialog

Script para relatório de download de arquivos via Squid

Pegar MAC através do IP na rede interna


  

Comentários
[1] Comentário enviado por reinaldoblah em 25/10/2006 - 11:19h

Se o linux tem esses itens para impresoras ele tambem deve ter
todos os dispositivo para mult funcionais ou seja todos tipos de maquinas de todo porte....
inclusive eu trabalho com windows e linux no mesmo computador, e teve que
compartilhar o HD...

O que vocês pode me dizer sobre CUPS e o arquivo PPD....

[2] Comentário enviado por nayamonia em 24/11/2006 - 21:39h

Ola Reinaldo

Desculpe mas não entendi o que tu realmente desejas saber ?

Quanto aos arquivos PPD:
Eles funcionam perfeitamente e utilizam a maioria, quando não todos, os recursos disponíveis na impressora.

Espero ter ajudado.

Gabriel Fernandes

[3] Comentário enviado por aps167 em 01/03/2007 - 16:09h

amigão ..não entendi uma coisa.

no site que vc indicou para pegar o arquivo PPD ..onde que baixo lá?
Qual é o link ..poderia postar aqui por favor?

Obrigado

[4] Comentário enviado por nayamonia em 02/03/2007 - 08:26h

Acesse este link:

http://www.linuxprinting.org/printer_list.cgi

Selecione marca e modelo da impressora e click em SHOW.

Falows

Gabriel Fernandes

[5] Comentário enviado por bageh em 29/03/2007 - 20:03h

Depois de feito o download do arquivo ppd, se persistir o problema, rola fazer o teste:
http://www.cups.org/testppd.php

Minha impressora é uma Lexmark Z617. O teste do arquivo ppd me informou onde havia erros no arquivo, então foi só editar (no caso, Lexmark.ppd) e boa!

[6] Comentário enviado por fnd_souza em 17/03/2008 - 21:23h

Pessoal sou iniciante na utilização de Linux e estou com um problema na hora de instalar minha c4280 já baixei o cups e também o seu ppd: http://openprinting.org/ppd-o-matic.cgi?driver=hpijs&printer=HP-PhotoSmart_C4200&show=1 porém não faço a minima ideia de como instalar.

Garto desde já.

[7] Comentário enviado por nerolinux em 27/10/2009 - 23:58h

salve,
Eu não consigo encontrar esse tal de arquivo ppd.
O unico que consegui é esse tal de : Instala.ppd.hpijs.cups, mas eu tento abri-lo pelo terminal com dpkg- e não acontece nada.
Por favor me ajudem!!! já faz mais de um ano que tento instalar uma impressora no meu Debian e não consigo por conta desse tal de cups.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts