jueves, 31 de diciembre de 2020

Imprimir archivos pdf o ps desde consola en GNU/Linux utilizando el comando lp

Yo tengo por costumbre imprimir mis facturas expedidas y recibidas en formato .pdf. Como usuario de Debian, una distribución de GNU/Linux, puede ser una buena idea utilizar el terminal que consume menos recurso y hacer un pequeño script en BASH para imprimir una larga lista de archivos pdf sin tener que abrirlos uno por uno o utilizar pdftk para unirlos en un solo archivo pdf. Si se desea imprimir archivos de la suite de offimática libreoffice con extensión .odt u ods, o de la popular suite Microsoft Office con extensión .doc xdoc. .xls o xlsx, puedes convertirlos en pdf.

Se escribe el siguiente comando en el terminal de GNU/Linux para averiguar que impresora tenemos:

user@debian:~$ lpstat -p -d

En mi caso, aparece este mensaje:

la impresora OKI_DATA_CORP_C5600 está inactiva.  activada desde sáb 26 dic 2020 15:57:35 CET destino predeterminado del sistema: OKI_DATA_CORP_C5600

En caso que cómo resultado, aparezca un mensaje similar a este "error el destino especificado no existe" o en inglés "no system default destination". Tendrán que añadir su impresora. En mi caso particular, la impresora es una OKI C5600:

user@debian:~$ lpoptions -d OKI_DATA_CORP_C5600

Verificamos que la impresora está lista:

user@debian:~$ lpq
OKI_DATA_CORP_C5600 está preparada
no hay entradas
Para imprimir un archivo, usa el siguiente comando: 

user@debian$ lp archivo_a_imprimir
Para imprimir un archivo con varias páginas, seleccionando varias páginas o un intervalo de páginas, deberás escribir un comando similar al de este ejemplo. Asi imprimirás las páginas 2, 5 y además el intervalo de páginas comprendidas entre la página 8 y la página 20, ambas inclusive.

user@debian:~$ lp - P 2,5,8-20 archivo_a_imprimir

Si además quieres indicar el número de copias de un archivo a imprimir. Así imprimirás 5 copias de la página o páginas que contenga el archivo a imprimir. Si tienes varias impresoras y quieres seleccionar una en concreto:


user@debian:~$ lp -n 5 archivo_a_imprimir
Para ver en la cola de impresión, los trabajos a imprimir, nombre de archivo, peso en bytes del archivo, usuario que envió un archivo a la cola de impresión en caso de trabajar en red o el estado de del trabajo de impresión (activo, inactivo, esperando, etc) se escribe el siguiente comando: 

user@debian: lp -d nombre_de_la_impresora archivo_a_imprimir

Si quieres cancelar la impresión de todos los trabajos:

user@debian:~$ lprm -

Si quieres cancelar un trabajo en concreto de una cola de impresión

user@debian:~$ lprm 6

Su quieres seleccionar el tamaño de hoja sobre la que irá la impresión: carta, hoja A4, etc.

user@debian:~$ lp -o media=A4 archivo.pdf


Aquí hay una lista larga de opciones: 

Letter – US Letter (8.5×11 pulgadas, o 216x279mm).
Legal – US Legal (8.5×14 pulgadas, o 216x356mm).
A4 – ISO A4 (8.27×11.69 pulgadas, o 210x297mm).
COM10 – US #10 Envelope (9.5×4.125 pulgadas, o 241x105mm).
DL – ISO DL Envelope (8.66×4.33 pulgadas, o 220x110mm).
Transparency – imprimir sobre hojas de acetato.
Upper – bandeja superior de papel de la impresora.
Lower – bandeja inferior de papel de la impresora.
MultiPurpose – bandeja multiproposito de la impresora.
LargeCapacity – bandeja de gran capacidad de la impresora.

Si se desea establecer el tamaño manual de la impresión utilizando el ancho y largo, si usamos milímetros, escribiremos este comando: 
user@debian:~$ lp -o media=Custom.100x200mm archivo_a_imprimir

Si deseas imprimir un archivo en una hoja con orientación horizontal

user@debian:~$ lp -o landscape archivo_a_imprimir

Si deseas imprimir un archivo  para que  su contenido se ajuste a la página

user@debian:~$ lp -o fitplot archivo_a_imprimir

 Si deseas imprimir un archivopara que ocupe el 100% del interior de los márgenes de la página, debes escribir el siguiente comando. Esto permite reducir el tamaño de la impresión para valores menores de 100 o aumentarlo para valores superiores de 100, lo que hará que la impresora necesite imprimir más de una hoja para realizr el trabajo.