Arquivos históricos do BR-Linux.org apresenta:

Linux in Brazil (Impressão )

Impressão no Linux

Por Roberto Janny T. J. (rj@crovax.zzn.com)

NOTA: Espero dar uma pequena contribuição para aqueles que desejam usar uma impressora no GNU/Linux, mas estejam em dúvida de onde começar. Baseei-me apenas em informações suficientemente importantes, sendo, portanto, necessário para aqueles que optem por aprofundar nesse assunto a leitura de algo como o Printing-Usage-HOWTO (linuxdoc.org).

A impressora na maioria das vezes é uma ferramenta indispensável, tanto em escritórios como no ambiente doméstico. A configuração desse periférico no GNU/Linux é relativamente simples. O sistema de impressão do GNU/Linux é razoável e eficiente, ainda baseado no UNIX.

As impressoras que cumprem determinados padrões são suportadas pelo GNU/Linux, dispensando o uso de um software em especial para a impressora. Em sistemas como DOS ou Windows, configurar impressoras pode ser uma tarefa complicada, pois essa configuração é realizada mediante controladores de dispositivos (''os drivers'') fornecidos pelo fabricante. Caso contrario, na melhor das hipóteses, não será possível usufruir totalmente da impressora.

No GNU/Linux, se quisermos enviar algum dado a um dispositivo, no nosso exemplo a impressora, esse dado é enviado ao arquivo correspondente (e.x. /dev/lp1) e a impressora se encarrega de processa-lo. A maioria das impressoras hoje em dia usam a porta paralela para se conectar ao computador. Os dispositivos que o GNU/Linux associa com este tipo de portas são '/dev/llp0', '/dev/lp1' e '/dev/lp2'. Se eles não existirem, podem ser criados com o comando (obs: você precisa estar com privilégios de root):

makedev lp

Também é necessário que o Linux (kernel) tenha suporte para porta paralela. Se não tiver, será necessário recompilar o kernel ou o módulo respectivo. Mas essa etapa foge ao escopo desse texto. As maioria das distribuições GNU/Linux já trazem um kernel padrão, compilado com diversas opções comuns, dentre elas o suporte a porta paralela.

Primeiros passos: considerando que os dispositivo supramencionados existem, e a impressora já esteja corretamente conectada a porta paralela, já podemos imprimir usando a linha de comando:

cat /tmp/usuario.txt > /dev/lp1

Supondo que o conteúdo do aquivo 'usuario.txt' seja:

   root:/root
   usuario1:/home/usuario1
   usuario2:/home/usuario2
   usuario3:home/usuario3

Este comando produzirá algo como abaixo:

   root:/root
             usuario1:/home/usuario1
                                    usuario:/home/usuario2
   ....

Esse resultado diferente do esperado é devido ao fato de muitas impressoras estarem concebidas para o DOS, onde a quebra de linha é indicada com dois caracteres: avanço de linha (LF) e retorno (CR). No Unix, só se usa o caracter LF, e por esse motivo a impressora não posicionará a cabeça de impressão na primeira coluna quando terminar de escrever uma linha. Isso é denominado ''efeito escada'', que pode ser corrigido através de um filtro. Um filtro é um programa que toma uma entrada e proporciona um saída, ou seja, a entrada é transformada conforme regras preestabelecidas. Um filtro possível para o problema acima, pode ser o seguinte (sugerido no Printing-Usage-HOWTO):

   #!/usr/bin/perl
   # Inicio do script
   while(){chop$_; print "$_\r\n";};
   # Fim do script

Então esse script em perl (gravado com o nome de 'f_escada.pl') pode ser usado do seguinte modo:

f_escada.pl usuario.txt > /dev/lp1

Então o novo resultado será como desejávamos (mas essa solução só serve para arquivos texto). Existem também programas encarregados de ''converter'' arquivos texto formatados em DOS, para o formato Unix, ou vice-versa. Um exemplo desses programas é o 'tofromdos', que pode ser encontrado em rpmfind.net ou em freshmeat.net.

Usando o comando LPR: o procedimento usado anteriormente é um método geralmente empregado para verificar o funcionamento da porta ou em alguma outra tarefa de gestão. Ele é limitado em muitos aspectos e também muitas vezes os usuários não tem permissões de escrita nesses dispositivos. É aqui que entra uma outra ferramenta ao nosso serviço: o comando 'lpr'. Para usar esse comando, o sistema de impressoras já deve estar adequadamente configurado. Para imprimir com esse comando basta:

lpr nome_do_arquivo

O comando 'lpr' manda o arquivo para uma fila de impressão, onde aguardará a sua vez de ser impresso. O comando 'lpr' aceita diversos parâmetros que permitem especificar preferências, como o número de cópias para imprimir, qual impressora deve ser usada (no caso de haver várias impressoras disponíveis) ou mesmo os filtros a serem utilizados.

Ele também aceita dados pela entrada-padrão, simplificando o uso de filtros e outros utilitários para mudar o aspecto da impressão:

cat nome_do_arquivo | lpr

pr -2 -h Projetos -l60 nome_do_arquivo | lpr

Nesse último exemplo usou-se o comando 'pr' para imprimir o arquivo escolhido em duas colunas, com o título ''Projetos'' e com 60 linhas por páginas. Uma outra ferramenta que pode atuar como filtro é o 'gs' (ghostscript), que recebe como entrada um arquivo postscript e produz como saída caracteres interpretáveis por uma impressora não-postscript.

Para mais detalhes sobre as opções disponíveis desse comando, veja a sua pagina de manual:

man lpr


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.