# Capítulo 3. Poner KLJetTool a trabajar

Algunas distribuciones Linux tienen un subsistema de impresión demasiado afanoso que no respeta los archivos PJL generados por LJetTool. El subsistema de impresión de dichos sistemas no reconoce un archivo PJL tal como es e intenta transformarlo usando sus filtros. Esto causará un funcionamiento incorrecto de KLJetTool.

Esta sección describe los pasos necesarios para poner LJetTool a trabajar en sistemas RedHat Linux anteriores a la 5.0 (KLJetTool trabajaría externamente en distribuciones basadas en RedHat Linux 5.0). Asumo que pasos similares serían necesarios en otros sistemas. Sin embargo, los pasos que se necesitan emprender no son difíciles. Todo lo que tiene que hacer es asegurarse de que el subsistema de impresión envía archivos PJL sin modificar a la impresora.

Un sistema RedHat Linux no reconoce PJL externamente, e intenta hacer cosas extrañas con él más que enviárlo sin modificar a la impresora, así tenemos que enseñarle como tratar con un archivo PJL. Sin embargo antes realize los cambios aquí sugeridos en su sistema, asegúrese de que reálmente KLJetTool no trabaja en su sistema. RedHat y otras distribuciones podrían haber actualizado sus subsistemas de impresión cuando lea esto.

Asumo que otras distribuciones con un subsistema de impresión iguálmente 'sofisticado' como el del sistema RedHat podrían necesitar ser enseñados también como tratar un archivo PJL ( Printer Job Language ) que son enviados a la impresora.

En un sistema RedHat el script `/var/spool/lpd/lp/filter` es invocado desde `/etc/printcap`, cada vez que algo es impreso usando el comando 'lpr'. El filtro ejecuta el programa 'file' en el archivo a imprimir y 'file' le dirá al script 'filter' con qué tipo de documento está tratando. Entonces dependiendo del tipo de documento el programa que está en ejecución producirá una salida en un formato que la impresora pueda interpretar. El programa 'file' usa el archivo `/etc/magic` para determinar el tipo de documento a imprimir ( p.e PostScript, dvi, texto, etc )

Por ejemplo, si imprimimos un documento postscript, miarchivo.ps, 'file' le dice al script 'filter' que estamos tratando con un archivo postscript y 'filter' ejecutará primero ghostscript para convertir miarchivo.ps en pcl 5, un lenguaje que mi laserjet comprende, antes de enviar el archivo a la impresora.

Desafortunadamente un sistema RedHat no reconoce un archivo PJL e intenta hacer cosas incorrectas con el archivo PJL más que enviarlo a la impresora sin modificar.

En orden para poner LJetTool a trabajar en un sistema RedHat solo necesitamos hacer dos cosas:

- Añadir una linea al archivo `/etc/magic` para que el programa 'file' reconozca corréctamente un archivo PJL como un archivo PJL. Símplemente añada las dos lineas siguientes a su archivo /etc/magic. Donde añada estas lineas en el archivo `/etc/magic` reálmente no importa.

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

- Enseñar al script /var/spool/lpd/lp/filter qué hacer con archivos PJL. Esto puede hacerse añadiendo las lineas siguientes al script 'filter'

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

  Si echa un vistazo al script 'filter' se aclarará donde añadirlo (sobre la linea 220 en la versión que tengo). Estas lineas símplemente le dicen al script que deje un archivo PJL solo y lo envie sin modificar a la impresora.

He incluido una copia de mi script de filtro así como mi /etc/magic. Puede usarlos si tiene problemas haciendo las modificaciones anteriores. Los encontrará en el mismo directorio donde encontró la documentación de KLJetTool.

Sería hermoso recibir instrucciones de qué necesita hacerse (si es posible) para poner LJetTool a trabajar en otros sistemas que usen un filtro elaborado de subsistema de impresión.