Desde la línea de comandos, si tienes instalado el paquete cups, puedes preguntar y ajustar las opciones de la impresora.
Por ejemplo, si ejecutas
Using bash Syntax Highlighting
$ lpoptions
-l
PrintoutMode
/Print Quality: Draft
*Normal High
PageSize
/Page Size: Custom.WIDTHxHEIGHT Letter
*A4 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5 EnvMonarch Executive Legal
InputSlot
/Media Source:
*Default Upper Middle Lower Multipurpose Automatic Manual
Duplex
/Double-Sided Printing: DuplexNoTumble DuplexTumble
*None
PrinterResolution
/Resolution:
*FromPrintoutMode 300x300dpi 600x600dpi 1200x1200dpi
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Observa que la línea InputSlot es la indica la bandeja de donde va a salir el papel.
Entonces, vale con ejecutar el comando otra vez para modificarlo a lo que queremos:
Using bash Syntax Highlighting
$ lpoptions
-o inputslot=Middle
$ lpoptions
-l
PrintoutMode
/Print Quality: Draft
*Normal High
PageSize
/Page Size: Custom.WIDTHxHEIGHT Letter
*A4 11x17 A3 A5 B5 Env10 EnvC5 EnvDL EnvISOB5 EnvMonarch Executive Legal
InputSlot
/Media Source: Default Upper
*Middle Lower Multipurpose Automatic Manual
Duplex
/Double-Sided Printing: DuplexNoTumble DuplexTumble
*None
PrinterResolution
/Resolution:
*FromPrintoutMode 300x300dpi 600x600dpi 1200x1200dpi
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora solo queda enviar el documento a la impresora.
Using bash Syntax Highlighting
$ pdftops archivo.pdf
| lprColoreado en 0.001 segundos, usando
GeSHi 1.0.8.4
(suponiendo que mi impresora no sepa imprimir un PDF, pero sí un PostScript, necesito convertirlo antes de pasárselo.)
Tienes más información
aquí, y en el resto de la documentación de CUPS.
En Perl tienes unos cuantos módulos para gestionar CUPS, como por ejemplo
Net::CUPS, o imprimir directamente (sin pasar por lpr), por medio de
Net::Printer.