Página 1 de 1

PDF::API2 direccionar PDF a una bandeja de impresora

NotaPublicado: 2015-09-08 07:05 @336
por silva
Agradecería si me pudiesen orientar con lo siguiente:

Utilizo PDF::API2 para generar documentos PDF. Necesitaría incorporarle una clausula para que la impresión se realice en una bandeja de la impresora. ¿Cómo puedo hacerlo?

¡Gracias!

Re: PDF::API2 direccionar PDF a una bandeja de impresora

NotaPublicado: 2015-09-08 07:33 @356
por explorer
Yo supongo que estás en Windows...

Entonces, puedes intentar usar Win32::Printer, que permite, con el atributo source, indicar la procedencia del papel a usar.

Lo malo... que la documentación dice que este módulo es obsoleto, así que a lo mejor te resulta muy complicado de instalar.

Depende un poco de cómo sea tu impresora. En algunas de ellas, el controlador exporta una ruta para cada una de las bandejas de la impresora, por lo que vale con hacer un open() e imprimir el documento en ella.

Aquí hay algún ejemplo: http://www.perlmonks.org/?node_id=127684

Otros módulos: Printer

No he encontrado más, lo siento.

Re: PDF::API2 direccionar PDF a una bandeja de impresora

NotaPublicado: 2015-09-08 07:37 @359
por silva
¡Gracias por la respuesta! Estoy trabajando en Linux. ¿Cómo puedo hacerlo desde Linux?

Re: PDF::API2 direccionar PDF a una bandeja de impresora

NotaPublicado: 2015-09-08 08:01 @376
por explorer
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
Sintáxis: [ Descargar ] [ Ocultar ]
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.003 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:
Sintáxis: [ Descargar ] [ Ocultar ]
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.
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
$ pdftops archivo.pdf | lpr
Coloreado 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.