# Opções do &CUPS; indisponíveis de momento no &kcontrol;

Este capítulo dá-te algumas sugestões acerca de mais possibilidades de configuração que podem não estar disponíveis através da interface gráfica do &CUPS; no &kdeprint;.

## Resumo das funcionalidades oferecidas

Todas as funcionalidades mais usadas que o &CUPS; oferece são suportadas pelo &kdeprint;.

- A gestão de impressoras é suportada: adicionar, remover, modificar, configurar, testar, desactivar, activar ...

- A gestão de tarefas é suportada: cancelar, reter, libertar, mover para outra impressora

- Opções de impressão: para um controlo completo da forma que o &CUPS; possibilita.

## Onde encontrar ajuda ao usar o &CUPS;

Existe uma grande quantidade de informação acerca do funcionamento interno do &CUPS; na interface Web, a qual o &CUPS; irá sempre suportar. Funciona com qualquer navegador Web (sim, até mesmo os em modo texto). Basta acederes a http://localhost:631/ inicialmente. Aí encontrarás uma ligação para a documentação do &CUPS; disponível localmente em HTML e PDF se fores novato no &CUPS;.

O &CUPS; está acessível através de outras formas que não o &kdeprint;: a linha de comandos e o navegador Web são duas interfaces nativas do &CUPS;. Os vários utilitários da linha de comandos possibilitam o controlo completo do &CUPS;. A interface Web representa apenas um sub-conjunto das opções de controlo ou configuração.

Isto também é verdade para o &kdeprint;. De um modo geral, à medida que o &CUPS; se desenvolve, a maioria das funcionalidades serão primeiro implementadas através da linha de comandos. Confirma se vais tendo as últimas versões das páginas de manual do &CUPS; para te manteres actualizado com as novas funcionalidades, depois de instalares uma nova versão.

Dependendo do teu método de actualização do &CUPS;, o teu ficheiro de configuração activo pode não ter sido substituído por um novo; por isso o teu novo e mais poderoso servidor de &CUPS; pode não ter sido notificado pelo ficheiro de configuração antigo acerca das novas funcionalidades.

Deve estar sempre disponível uma lista completa dos ficheiros disponíveis e das páginas de manual no Manual de Administração de Software do &CUPS; (http://localhost:631/sam.html#FILES. No campo de URL/localização do &konqueror;, escreve `man:/lpadmin` e `man:/cupsd.conf` para descobrires o comando mais importante e o ficheiro de configuração. Tu já conhecias a capacidade interessante do &konqueror; de mostrar as páginas do man de &UNIX;, não conhecias? Lê isto. A partir daqui poderás descobrir mais sugestões e referências a outras páginas de manual e documentação.

### Como encontrar páginas de manual relacionadas com o &CUPS;

Aqui está uma forma de descobrir quais as páginas de manual do &CUPS; que existem no teu sistema:

    kurt@transmeta:~
    > apropos cups
    cups-calibrate (8)   - Ferramenta de Calibração de Impressoras ESP
    lpstat (1)           - imprime a informação de estado da impressão no cups
    cups-lpd (8)         - recebe tarefas de impressão e comunica o estado da impressora aos clientes de lpd
    classes.conf (5)     - ficheiro de configuração da classe no cups
    backend (1)          - interfaces de transmissão da infra-estrutura do cups
    filter (1)           - interfaces od filtro de conversão do cups
    cups-polld (8)       - servidor de detecção de impressoras do cups
    mime.types (5)       - ficheiro de descrição do tipo MIME para o cups
    cupsd (8)            - o servidor do cups
    lpadmin (8)          - configura as impressoras e classes do cups
    cupsd.conf (5)       - ficheiro de configuração do servidor do cups
    mime.convs (5)       - ficheiro de conversão do tipo MIME do cups
    printers.conf (5)    - ficheiro de configuração de impressoras do cups
    mime.convs (5)       - ficheiro de conversão do tipo MIME para o cups
    cups-polld (8)       - servidor de detecção de impressoras do cups
    lpstat (1)           - imprime a informação de estado da impressão no cups
    backend (1)          - interfaces de transmissão da infra-estrutura do cups
    mime.types (5)       - ficheiro de descrição do tipo MIME do cups
    cupsd (8)            - o servidor do cups
    lpadmin (8)          - configura as impressoras e classes do cups
    printers.conf (5)    - ficheiro de configuração de impressoras do cups
    cupsd.conf (5)       - ficheiro de configuração do servidor do cups
    filter (1)           - interfaces do filtro de conversão de ficheiros do cups
    cups-lpd (8)         - recebe tarefas de impressão e comunica o estado da impressora aos clientes do lpd

## Por Fora do &kdeprint;: Dicas & e Truques com o &CUPS; na Linha de Comandos

Aqui estão alguns exemplos de opções que só estão de momento disponíveis na linha de comandos.

### Permitir ou proibir o acesso às impressoras por parte de certos utilizadores

Ao instalar (ou modificar) uma impressora através da linha de comandos, tanto podes permitir ou negar a utilização dessa impressora a certos utilizadores:

    lpadmin -pHeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u allow:kurt,sylvi,hansjoerg -E -P /home/kurt/PPDs/DVHV.ppd

irá permitir a utilização desta (acredita em mim: muito boa e também muito profissional) impressora somente aos três utilizadores mencionados e ao mesmo tempo proibir o acesso a todos os outros. Se outro utilizador quiser imprimir na DigiMaster através deste servidor de &CUPS;, irá receber uma mensagem de erro ao longo das linhas client-error-not-possible.

    lpadmin -p HeidelbergDigimaster9110 -v lpd:/10.160.16.99/mqueue -u deny:tackat,boss,waba -E -P /home/kurt/PPDs/DVHV.ppd

irá negar a utilização da mesma impressora aos três utilizadores indicados e ao mesmo tempo permiti-la a todos os outros. Se o utilizador proibido quiser imprimir na DigiMaster através deste servidor de &CUPS;, irá receber uma mensagem de erro ao longo das linhas client-error-not-possible.

Só uma das udas opções pode ser usada de cada vez; de momento não existe o suporte para ter uma opção semelhante de uma forma baseada em grupos. Isto será implementado no futuro.

### Impor quotas para certas impressoras

Algumas das vezes queres impor quotas para certas impressoras. Com as quotas podes definir limites superiores para o número de páginas ou a quantidade de dados a serem impressos durante um certo período ou numa certa impressora.

As quotas podem ser definidas com a opção `-o` quando instalas uma impressora com o comando `lpadmin` ou posteriormente para uma impressora existente. Seguem-se algumas regras (que não constam na altura na documentação oficial do &CUPS;):

- Com o &CUPS; podes ter quotas baseadas no número de páginas e no tamanho dos ficheiros para as impressoras individualmente.

- As quotas são calculadas para cada utilizador em separado (de modo a que um conjunto simples limites se aplique a todos os utilizadores para a impressora em questão).

- As quotas incluem as páginas de "banners" (se forem usadas).

- Isto significa que podes limitar cada utilizador a 20 páginas por dia numa impressora cara, mas não podes limitar todos os utilizadores, excepto o `Kurt` ou o `root`.

- Existem opções `job-k-limit` (tamanho das tarefas em k), `job-page-limit` (limite páginas por tarefa) e `job-quota-period` (período de quota da tarefa) que podem ser atribuídas ao configurar uma impressora.

- O `job-quota-period` define um intervalo de tempo ao calcular a quota (os intervalos estão definidos em segundos; de modo que um dia são 60x60x24=86 400, uma semana são 60x60x24x7=604 800 e um mês são 60x60x24x30=2 592 000 segundos).

- Para as quotas serem aplicadas, o período de tempo mais pelo menos um limite de tarefa devem ser não-nulos.

- O valor por omissão igual a 0 para o `job-k-limit` define a inexistência de limite.

- O valor por omissão igual a 0 para o `job-page-limit` significa que não existe limite.

- O valor por omissão de 0 para o `job-quota-period` significa que os limites se aplicam a todas as tarefas que foram impressoras por um utilizador e que ainda constam do conhecimento do sistema.

#### Exemplos Funcionais:

Como são definidos os limites de tarefas e de período de tempo

    lpadmin -p danka_infotec_4850 -o job-quota-period=604800 -o job-k-limit=1024

Isto define um limite no tamanho dos ficheiros igual a 1 MB (no total) para cada utilizador na impressora chamada `danka_infotec_4850` durante uma semana.

    lpadmin p danka_infotec_4105 -o job-quota-period=604800 -o job-page-limit=100

Isto define um limite de 100 páginas (no total) para cada utilizador na impressora `danka_infotec_4105` durante uma semana.

    lpadmin -p danka_infotec_P450 -o job-quota-period=604800 -o job-k-limit=1024 -o job-page-limit=100

Isto define um valor combinado de 1 MB (This sets a combined limit of 1 MB (in total) e de 100 páginas (no total) para cada utilizador na impressora `danka_infotec_P450` durante uma semana. O primeiro limite atingido torna-se efectivo.

#### Exemplos não-funcionais

NÃO funcionam, porque só um período de tempo ou limite de tarefas está definido)

    lpadmin -p danka_infotec_P320 -o job-quota-period=604800

    lpadmin -p danka_infotec_FullColor -o job-page-limit=100

    lpadmin -p danka_infotec_HiSpeed -o job-k-limit=1024

#### Mensagens de Erro Relacionadas

Uma vez atingido o limite de quota para um utilizador, ele obterá uma mensagem client-error-not-possible, se quiser imprimir.

### Instalar uma impressora não-formatada

Existem diferentes maneiras de definir uma impressora não-formatada. A mais confortável será usar o comando `lpadmin`. Basta não definires um ficheiro &PPD; para usar com essa impressora e passará a não ser uma impressora formatada:

    lpadmin -p Raw_Danka_infotec -E -v lpd://10.160.16.137/PORT1

As filas de impressão não-formatadas são aquelas que não alteram o ficheiro de impressão de modo a transformá-lo num formato de ficheiro diferentes. Tu necessitas disto, por exemplo, se quiseres imprimir a partir de clientes de &Windows; usando o Samba para interagir com um servidor de &CUPS; com uma impressora PCL: neste caso, o controlador da impressora no &Windows; iria gerar o formato do ficheiro de impressão final para a impressora de destino e iria passar através dos filtros do &CUPS;, o que iria prejudicar o resultado final. Sob certas circunstâncias (se quiseres ter a certeza que o ficheiro vai para a impressora por filtrar pelo &CUPS;) o `lpadmin` sem a &PPD; é bastante adequado.

## Resolução de Problemas do &CUPS; no &kdeprint;

Esta secção do manual do &kdeprint; irá depender da reacção dos leitores. Segue-se uma pequena introdução.

### Mensagens de Erro

O que significa o erro client-error-bad-request?

O utilizador enviou um ficheiro para o &CUPS; cujo servidor não conseguiu processar. Também poderás obter este erro ao enviares um ficheiro vazio.

E o client-error-not-possible?

O utilizador não tem permissões para imprimir numa dada impressora ou atingiu a sua quota (baseada no tamanho dos ficheiros ou no número de páginas)

O que é o client-error-not-found?

O utilizador tentou aceder a um recurso inexistente no servidor do &CUPS;, assim como pode ter tentado imprimir um ficheiro inexistente ou para o qual é negada a permissão de leitura.

### Perguntas e Respostas

Porque não consigo reiniciar as minhas tarefas?

Para seres capaz de reiniciar as tuas tarefas completas a partir da interface Web, precisas de uma opção do ficheiro `/etc/cups/cupsd.conf`: activa a `PreserveJobFiles True`.

Como é que me vejo livre da enorme lista de tarefas concluídas na interface Web?

A FAZER

Como funciona a contabilidade de páginas?

O &CUPS; implementa a contabilidade de impressões passando praticamente todas as tarefas através do filtro pstops. Este faz, entre outras coisas, a contagem de páginas. O resultado deste filtro pode então ser redireccionado para outros filtros (como o pstoraster --> rastertopcl) ou enviado directamente para a impressora (se for uma impressora &PostScript;).

Para qualquer caso, isto funciona para impressoras de rede, paralelas, série ou USB da mesma forma. Para o pstops funcionar precisa de DSC, isto é, &PostScript; em conformidade com a Document Structuring Convention (ou equivalente) como entrada. Deste modo calcula as páginas durante a filtragem no servidor de impressão e regista informações acerca de cada página (a que hora, de que utilizador, com que ID e nome de tarefa, para que impressora, quantas cópias de páginas do documento, quantos quilobytes?) no `/var/log/cups/page_log`.

Já agora: na minha lista pessoal de desejos existe uma alteração do webalizer para ler e analisar o page_log e dar um resultado semelhante. Alguém quer?

Contudo, não está a dar resultados correctos nos seguintes casos:

- A impressora encrava e pode por isso ter eliminado a tarefa (experiência da vida real; ou simplesmente eliminar a tarefa por causa de problemas com o formato de dados)

- As tarefas impressas como não-formatadas contam sempre como 1 página (e talvez várias cópias).

Por isso a contabilidade de páginas do &CUPS; é somente uma aproximação (em muitos dos casos excelente, nos outros muito fraca). A única contagem de impressões de confiança é a que é realizada pelo contador interno da impressora (Porque esta é que tu irás pagar, se estiveres num sistema de pagamento). Algumas (longe de ser a maioria) impressoras podem ser questionadas remotamente para obter essa informação através de SNMP (Simple Network Management Protocol). Isto significa que, numa rede grande com muitas impressoras diferentes não existe nenhuma ferramenta fiável de contabilidade de páginas!

Porque é que a contabilidade de páginas não funciona com os clientes de &Windows;?

Nos clientes de &Windows; as tarefas quase sempre têm de ser enviadas como não-formatadas. Porquê? Se o &CUPS; funciona como um servidor de impressão para os clientes do &Windows; usando o controlador original do &Windows; para o dispositivo de destino, isto garante a formatação correcta da tarefa nos clientes à partida; por isso o servidor não deve alterar a tarefa e deve imprimi-la sem formatação; por isso não é iniciada nenhuma filtragem (e isto não é sequer possível dado que os resultados dos cliente não é &PostScript; do qual o pstops fica à espera; por isso não existe números de páginas para além do 1.

Como posso obter uma lista das opções disponíveis para uma dada impressora ou um ficheiro &PPD;?

Vê a página de manual do comando `lpoptions`. Podes investigar uma máquina com o &CUPS; activado em relação às opções das suas impressoras disponíveis. Não é necessário ter a impressora instalada localmente. Enquanto estiver disponível localmente (através da funcionalidade do &CUPS; de navegação de impressoras), também funcionará remotamente.

Para pesquisar uma opção de uma impressora, ao escreveres ``lpoptions` `-p` `HitachiDDP70MicroPress` `-l`` obterás uma lista extensa de todas as opções disponíveis, lidas a partir do ficheiro &PPD; para a impressora Hitachi especificada (no menu caso está instalada no servidor remoto da transmeta). O servidor remoto `Transmeta` e o seu servidor de &CUPS; assim como o do localhost, necessitam de estar a funcionar para tudo correr bem.

Como leio a lista devolvida pelo comando `lpoptions`?

Sabes que para os fabricantes de impressoras &PostScript; é legal definir os seus nomes internos e procedimentos mesmo para as opções normalizadas do &PostScript;. Desde que o controlador seja capaz de obter a opção do &PPD; e mostrá-la de uma forma que ele compreenda está tudo bem. Mas o que tu farias, se quisesses utilizar algumas opções obscuras da impressora na linha de comandos? Como é que irias conhecer a sua sintaxe exacta?

Vejamos um exemplo. Se virmos a impressora DDP70 da Hitachi e como ela implementa a impressão duplex revela-se de alguma forma. Como é que dizes para imprimir dos dois lados? duplex ou Duplex? Ou outro nome reunido?

    lpoptions -h
    transmeta -p
    Hitachi_DDP70_ClusterPrintingSystem -l | grep uplex

Isto conduz ao resultado

    TR-Duplex/Duplex: False *True

Isto é para ser interpretado da seguinte forma:

- O nome da opção investigada é `TR-Duplex`;

- Por trás da barra podes ver a tradução da opção, tal como deve ser mostrada numa interface &GUI; ou Web (Duplex);

- A opção pode tomar um de dois valores `Falso` ou `Verdadeiro`;

- O valor actual é `Verdadeiro` se for reconhecido por uma marcação com um asterisco `*`.

Para alterares o valor actual (duplex) e imprimires uma tarefa em simplex, precisas de usar o seguinte comando:

    lpr -P Hitachi_DDP70_ClusterPrintingSystem -o TR-Duplex=False /path/to/your/printjob

Como é que obtenho uma lista bem formatada das opções disponíveis para uma dada impressora ou &PPD;?

Usa o comando `lphelp` que pode ser instalado localmente no teu sistema. Ainda não existe uma página de manual para o `lphelp`.

    lphelp infotecP450

Isto lista as opções disponíveis para a impressora especificada. Encontra-se bem formatada e explica cada opção disponível e como a usar. Podes pesquisar as opções das diferentes impressoras de uma vez:

    lphelp infotec7410color DANKA_fullcolor_D2000 HP_ColorLaserJet8550

Também funciona para os ficheiros &PPD;. Basta especificar a localização do &PPD;:

    lphelp /home/kurt/PPDs/HP-ColorLaserJet8550.ppd

### Resolução de Problemas

Nenhum sistema é perfeito. Existem algumas armadilhas bastante comuns onde as pessoas caíram.

A minha impressora chamada 3-lp-duplex tem um comportamento anormal. O que se passa?

Os nomes das impressoras usados no &CUPS; devem começar por uma letra e podem conter até 128 letras, números ou sublinhados. O uso de hífenes pode conduzir a problemas. Por falar em nomes: os nomes das impressoras do &CUPS; não se distinguem por maiúsculas ou minúsculas. Como tal, uma impressora chamada `Best_of_Danka` será a mesma que `best_of_danka` ou `BEST_OF_DANKA`. (Este é um requisito do &IPP;, com o qual o &CUPS; se encontra em conformidade).

Porque é que obtenho o erro Incapaz de ligar à máquina de SAMBA: Sucesso com as minhas partilhas de impressora do &Windows; acedidas através do Samba?

Estão definidos correctamente os privilégios na máquina remota do &Windows;? É-te permitido imprimir na impressora partilhada do &Windows;?

Os meus ficheiros da impressora `lp` desaparecem misteriosamente algumas vezes e dois dias depois vêm-me dizer que foram impressos numa impressora 3 andares abaixo do meu escritório. O que se passa?

Acredita em mim, é muito pouco provável que a tua impressora seja a única com o nome `lp`. Talvez o &CUPS; te esteja a pregar uma partida. Dado que podes ter a opção Classes Implícitas Ligado, o &CUPS; tenta juntar todas as impressoras que vê na rede numa classe lp. Todas as tarefas destinadas a lp são enviadas para esta classe e o primeiro membro disponível imprime-a. Por isso, é provável que essa pessoa tenha instalado o &CUPS; e percorrido o sistema... percebeste?

Segue o meu conselho: utiliza um nome único para qualquer impressora de rede! (Lembra-te que a tua impressora, a que está ligada na tua porta paralela, também se pode tornar uma impressora de rede se não tiveres atenção com a tua configuração).