- LINUX -
A primeira impressão é a que fica

Filosofia UNIX

Programas pequenos

Funções específicas

Ótimo funcionamento

Integração

Filosofia UNIX

Cada programa realizando bem a sua função, e o conjunto atuando como uma entidade única para suprir as necessidades do usuário.

Arquitetura em Camadas

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Não precisa saber nada do quê está acontecendo

Espera simplesmente qua a impressora funcione e que os documentos sejam impressos

Suas expectativas devem ser “supridas” pelo administrador

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Possui o conteúdo a ser impresso

Envia a saída do que deve ser impresso para o cliente de impressão

Alguns programas atuam eles próprios como clientes de impressão

Programas gráficos costumam mandar a saída em PostScript

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Recebe a saída do programa e envia ao servidor de impressão

O servidor pode ou não estar localizado na mesma máquina

Pode efetuar algum tratamento no material a ser impresso, ou se comunicar com o filtro de impressão

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Recebe as requisições do cliente de impressão

Redireciona a saída para o filtro apropriado

É capaz de se comunicar com outros servidores de impressão

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Converte a saída enviada pelos programas para a linguagem utilizada pela impressora

Corrige pequenos erros de formatação através de conversões especiais

É capaz de enviar a sua saída para outros programas e dispositivos

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Arquitetura em Camadas

Responsável pela comunicação direta com o dispositivo de impressão

Porta Paralela

Serial

USB

etc????

Usuário

Programa

Cliente de Impressão

Servidor de Impressão

Filtro

Kernel

Como é um filtro de impressão?

Um filtro de impressão possui a obrigação de converter a entrada que recebe em uma saída aceitável pelo dispositivo de impressão.

Apesar de não ser uma obrigação do filtro, aqueles que possuem reconhecimento do tipo de arquivo cumprem melhor a sua função.

Como é um filtro de impressão?

#!/bin/sh

#

/usr/bin/gs -q -dSAFER -dBATCH -dNOPAUSE

-dPARANOIDSAFER

-sDEVICE=ijs -sIjsServer=/usr/bin/ijsgimpprint

-dIjsUseOutputFD

-sPAPERSIZE=a4 -sDeviceManufacturer=EPSON

-sDeviceModel=escp2-c40sx

-sOutputFile=- -

Filtro simples, apenas converte PostScript para o formato utilizado por algumas impressoras da Epson

Como é um filtro de impressão?

Um filtro mais complexo, que detecta o tipo de arquivo que chega e faz o tratamento adequado para cada tipo de entrada.

Os filtros devem seguir “mais ou menos” essa filosofia, para prevenir possíveis erros.

DATE=`date +%b%d-%Hh%Mm%Ss`

PDFUSER=`echo $CONTROL | tr " " "\n" | grep "^P" | tr -d "P"`

FILENAME="${PDFUSER}-${DATE}"

PDFHOME="/home/pdf"

Como é um filtro de impressão?

Esta primeira parte do filtro serve apenas para configurar algumas variáveis que serão utilizadas pelo restante do filtro.

A variável $CONTROL contem informação da “linha de comando” utilizada para imprimir o arquivo, como o usuário, qual a impressora, de onde veio, etc...

Como é um filtro de impressão?

cat > $PDFHOME/${DATE}.temp

TYPE=`file -b $PDFHOME/${DATE}.temp | cut -f 1 -d " "`

Estas linhas copiam o arquivo que chega para um

temporário. O arquivo que chega vem pela entrada

padrão.

O tipo do arquivo é descoberto utilizando o comando

“file”, específico para coletar esta informação

Como é um filtro de impressão?

if	[ "$TYPE" = "ISO-8859" ]||\

[ "$TYPE" = "Bourne" ]||\

[ "$TYPE" = "ASCII" ]; then

enscript $PDFHOME/${DATE}.temp -o - | \

ps2pdf - $PDFHOME/${FILENAME}.pdf

elif [ "$TYPE" = "PostScript" ]; then

ps2pdf $PDFHOME/${DATE}.temp $PDFHOME/${FILENAME}.pdf

else

rm $PDFHOME/${DATE}.temp

exit 1

fi

De acordo com o tipo de arquivo, o filtro toma a atitude correta. Se ele não sabe o que é o arquivo,

retorna um erro.

Como é um filtro de impressão?

O filtro apresentado transforma a entrada em

um arquivo PDF, armazenado no $PDFHOME.

O próximo filtro irá realizar a “impressão”

de outra maneira, mostrando a flexibilidade do sistema de impressão.

Como é um filtro de impressão?

SPOOL=`echo ${12} | cut -f 2- -d /`

FILENAME="/$SPOOL/`echo ${13} | cut -f 2- -d e`"

TYPE=`file $FILENAME | cut -f2 -d:`

Seleciona o arquivo que está armazenado no “spooler” e verifica o tipo do arquivo enviado.

Como é um filtro de impressão?

if [ "`echo $TYPE | grep -i MP3`" != "" ]; then

madplay $FILENAME

elif [ "`echo $TYPE | grep -i WAVE`" != "" ]; then

play $FILENAME

elif [ "`echo $TYPE | grep -i VORBIS`" != "" ]; then

ogg123 $FILENAME

else

exit 1

fi

Utiliza o programa apropriado para tocar cada

tipo de música. Utilizar um “case” aqui pode deixar

o programa mais interessante.

Sistemas de Impressão Comuns

LPR

O BSD LPR é o sistema de impressão original. Com sintaxe levemente diferente, se apresenta o SysV LPR. Ambos possuem a configuração em arquivos texto e o “acesso” através de comandos do sistema de impressão.

Sistemas de Impressão Comuns

CUPS

O CUPS é uma tentativa de se fazer um “novo” sistema de impressão para os *nixes, com uma nova forma de comunicação e outras funcionalidades. Teoricamente é um método de impressão mais simples, configurável via web

Sistemas de Impressão Comuns

LPRng

LPRng segue a mesma filosofia do LPR original, possuindo compatibilidade praticamente total com este último. Uma interface consistente e uma série de características profissionais completam o pacote.

Mais Informações

man page

cupsd

lpd

lpr

apsfilter

Slackwarezine #2

Slackwarezine #3

e-mail:

piterpk@terra.com.br

homepage:

www.piterpunk.hpg.com.br

Contatos

2004-09-10T23:50:03