Instalar impressora no CUPS a partir de um arquivo PPD

Publicado por Gabriel Fernandes 24/10/2006

[ Hits: 33.901 ]

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

phpserver

/etc/rc.d/rc.ppp

Cadastro de Usuário Samba

Administração de Servidor FTP + MySQL

SquidAdmin


  

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