Hasta ahora no he hablado de impresión desde GNU/Linux. La arquitectura incluye bastantes conceptos (lenguajes de impresora, rasterizadores, ficheros ppd, spoolers, CUPS, interfaces,…), y a lo largo del tiempo he ido tomando notas que comparto para quien pueda venirle bien.

Al tema: muchas impresoras multifunción (impresora+fotocopiadora+scanner+fax) en red, cuentan con las funcionalidades de Copias controladas y Auditoría de trabajos. La primera permite establecer quiénes pueden imprimir, fotocopiar, escanear,… pidiendo para ello una identificación de usuario (en base a un código, o a identificador y contraseña), de modo que cuando se usa la máquina para fotocopiar se introduce a través del panel físico de la máquina, y cuando se emplea como impresora en red se configura en las opciones del driver de impresión, sea Windows o GNU/Linux. La auditoría de trabajos o job accounting registra, a partir de lo dicho, el uso que hace cada usuario o departamento: nº de fotocopias, impresiones, escaneos, etc.

¿Cómo funciona internamente la impresión en red con identificación? cuando el PC  genera el fichero a enviar por red a la impresora mediante algún protocolo de impresión (puertos tcp 514, 515, 631,  9100), algunas líneas del fichero hacen referencia a sentencias de PCL. Si el lenguaje es PJL un ejemplo puede ser:

@PJL JOB NAME="Sin nombre1"
@PJL SET COLORMODE=MONO
...
@PJL SET USERNAME="1234"
...

En la actualidad, la forma más típica de imprimir desde GNU/Linux está basada en ficheros PPD, los cuales sirven entre otras cosas para:

  • Definir las características de la impresora.
  • A partir de lo anterior, generar automáticamente el GUI para la selección de opciones.
  • Enviar determinadas cadenas (ej. PJL) y opciones a la hora de generar el fichero para la impresora.

Yendo al caso, tengo la multifunción Samsung C8385ND de la foto y hay un problema: si se configura para que funcione con identificación y auditoría, el PPD oficial no sirve porque el fichero generado para enviar a la impresora no es correcto.

Vamos con el “hack” para conocer cómo ha de ser ese fichero y que se genere automáticamente:

  1. En un Windows (en máquina virtual o nativo), se abre el OpenOffice con un fichero cualquiera y se imprime a fichero.
  2. En un PC con GNU/Linux se imprime por red capturándose lo que envía a la impresora:
    tcpdump -i eth0 dst ip_impresora -s0 -w fich
    (no vale sólo con imprimir a fichero, pues éste es un postscript sin las sentencias PJL)
  3. Comparándose ambos ficheros, se encuentran estas líneas que no aparecen en el fichero generado desde de GNU/Linux:
    @PJL SET ACCOUNTING_INFORMATION_USERID="1234"
    @PJL SET ACCOUNTING_INFORMATION_PASSWORD="1234"
  4. Se edita el fichero PPD, y puede modificarse ej. la línea que hace referencia a JLCUser User1:
    *JCLUser User1/MiUsuario: "@PJL SET USERNAME = <22>1234<220D0A>@PJL SET ACCOUNTING_INFORMATION_USERID=<22>1234<220D0A>@PJL SET ACCOUNTING_INFORMATION_PASSWORD=<22>1234<220D0A>"
    (22 es el código ASCII del carácter “)
  5. Se reinicia CUPS.

Dejo aquí una breve info de ésta y otras multifunción Samsung que vaya encontrando.

  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • BarraPunto
  • email
  • Google Buzz
  • Identi.ca
  • LinkedIn
  • Meneame
  • PDF
  • RSS
  • Slashdot
Una Respuesta a “Hack para una impresora Samsung de red con job accounting”
  1. [...] Ya expliqué qué era el Job Accounting aplicado a una multifunción Samsung, y comento otro caso de posible interés para alguna oficina (la gente no suele tener en casa una máquina así), o didáctico en general: una Ricoh Aficio 2228c que no tiene cartucho de postscript y por tanto hay que usar el PCL5c emulado que sí soporta. [...]

  2.  
Deja una Respuesta