# Capítulo 3. Pondo o KLJetTool a Trabalhar

Algumas distribuições de Linux têm um subsistema de impressão demasiado ganancioso que não respeita os ficheiro PJL gerados pelo LJetTool. O subsistema de impressão dessas distribuições não reconhece um ficheiro PJL e tenta transformá-lo usando os seus filtros. Isto faz com que o KLJetTool funcione mal.

Esta secção descreve os passos necessários para pôr o LJetTool a trabalhar num sistema RedHat Linux 5.0 (o KLJetTool não deve trabalhar correctamente nas distribuições baseadas no RedHat linux 5.0). Eu penso que em outros sistemas, os passos sejam similares. Estes passos que necessitam de ser executados não são difíceis. Tudo o que é necessário fazer é obrigar o teu subsistema de impressão a mandar ficheiros PJL sem estarem modificados para a tua impressora.

Um sistema RedHat Linux não reconhece um ficheiro PJL, e tenta modificá-lo e manda-o modificado para a impressora; portanto temos que ensiná-lo a lidar com um ficheiro PJL. Contudo, antes de fazeres alguma modificação, sugiro-te que te certifiques que o teu sistema não é compatível com os ficheiro GPL.

Num sistema Redhat o script `/var/spool/lpd/lp/filter` é invocado de `/etc/printcap`, e imprimido usando o comando 'lpr'. O filtro corre o programa 'file' no ficheiro a ser impresso e o 'file' diz ao script 'filter' que tipo de documento é que estão a mexer. Depois, dependendo do tipo do documento, o programa adequado executa e produz uma resposta num formato que a impressora entende. O programa 'file' usa o ficheiro `/etc/magic` para determinar o tipo de documento a ser impresso (ex.: PostScript, dvi, text...)

Por exemplo, se eu imprimir um documento postscript, meuficheiro.ps, o 'file' diz ao script 'filter' que estamos a lidar com um ficheiro postscript e o 'filter' vai correr o ghostscript primeiro para converter o meuficheiro.ps em pcl 5, uma linguagem que a impressora percebe, antes de mandar o ficheiro para a impressora.

Infelizmente um sistema RedHat não reconhece um ficheiro PJL e tenta fazer coisas erradas com o ficheiro PJL, em vez de mandar logo o ficheiro para a impressora.

Para que o LJetTool trabalhe num sistema RedHat só precisamos de fazer duas coisas:

- Acrescentar uma linha ao ficheiro `/etc/magic` para que o programa 'file' trabalhe correctamente e reconheça um ficheiro PJL como um ficheiro PJL. Simplesmente basta adicionar as duas seguintes linhas no teu ficheiro /etc/magic. O sitio onde tu insires as duas linhas no ficheiro `/etc/magic` não tem importancia.

       # HP Printer Job Language, Bernd Wuebben (wuebben@math.cornell.edu)
       0	string		\033%-12345X	 HP PJL printer commands

- Agora, ensina ao script /var/spool/lpd/lp/filter o que fazer com um ficeiro PJL. Isto pode ser feito adicionando a seguinte linha para o script 'filter':

          *pjl* )
                                                     startpnt="INPUT-to-prdata";;

  Se deres uma vista de olhos no script filter será fácil veres onde colocar esta linha (cerca da linha 220 na minha versão). Estas linhas simples dizem ao script para deixar um ficheiro PJL sózinho e não o modificar.

Este programa inclui uma cópia do meu script de filter tal como o meu /etc/magic. Podes usá-los se tiveres problemas a fazer estas modificações. Deves encontrá-lo no mesmo directório que a documentação do KLJetTool.

Adoraria ouvir instruções (se as houver) acerca do que deveria ser feito para que o KLJetTool trabalhasse noutros sistemas que usem um subsistema de filtro de impressão.