En este artículo voy a demostrar cómo instalar una impresora de PDF y cómo imprimir desde línea de comandos, gracias a el paquete cups-pdf. Solución útil para aquellos casos en que una aplicación o servicio, corriendo en un servidor, requiere generar documentos PDF.



En los sistemas Unix, CUPS es el software que se utiliza para imprimir desde aplicaciones como procesadores de texto, clientes de correo, navegadores, etcétera. Convierte la descripción de página producida por una aplicación a un formato que las impresoras puedan interpretar, y luego envía esta información a la impresora seleccionada para su impresión.

En esta oportunidad me encuentro migrando a la nube una aplicación que posee cierta funcionalidad para imprimir listados. El problema es que, al migrar el sistema a un servidor en la nube, se pierde el acceso a las impresoras locales. Sin embargo esto no es un gran inconveniente para esta aplicación en particular, ya que (más allá de que en la actualidad afortunadamente imprimir en papel es algo cada vez menos necesario y útil) se puede reemplazar esta funcionalidad por una impresión a PDF para luego descargar el archivo generado e imprimirlo en papel en cualquier impresora (siempre que fuese necesario, claro está, pues en la mayoría de los casos será suficiente con acceder al documento PDF).

Entonces el problema se reduce a instalar una impresora de PDF y configurar la aplicación para que haga uso de la misma. A tal fin es posible recurrir al paquete cups-pdf

Manos a la obra

Para comenzar, instalar el paquete cups-pdf. Por supuesto, si el servidor aún no posee CUPS, será instalado como dependencia:

# apt-get install cups-pdf

Finalizada la instalación, se observa la nueva impresora, denominada "PDF":

root@servidor:~# lpstat -a
PDF accepting requests since Fri 29 Sep 2017 12:25:44 PM UTC

La impresora acepta trabajos y se encuentra habilitada:

root@servidor:~# lpstat -p
printer PDF is idle.  enabled since Fri 29 Sep 2017 12:25:44 PM UTC

El servidor CUPS recién instalado tiene los siguientes dispositivos:

root@servidor:~# lpinfo -v
file cups-pdf:/
network socket
network ipp
network https
direct hp
network beh
network http
network ipps
network smb
network lpd
direct hpfax

Si el servidor CUPS es nuevo (como en este caso) y no tiene acceso a otras impresoras, se recomienda establecer la impresora de PDF como dispositivo de impresión por defecto. Para ello se recurre a la herramienta lpadmin:

root@servidor:~# lpadmin -d PDF
root@servidor:~# lpstat -p -d
printer PDF is idle.  enabled since Fri 29 Sep 2017 12:25:44 PM UTC
system default destination: PDF

La configuración de la impresora se encuentra en el archivo /etc/cups/cups-pdf.conf. Desde allí es posible modificar el destino y nombre de los archivos .pdf creados, opciones de conversión a PDF, preferencias de seguridad, etc. Inicialmente se recomienda dejar la configuración por defecto, la cual genera los archivos dentro de un directorio PDF en el $HOME del usuario:

root@servidor:~# mkdir ~/PDF

El tamaño de hoja se toma desde el archivo /etc/papersize:

root@servidor:~# cat /etc/papersize
a4

Imprimir desde línea de comandos

Veamos cómo verificar el funcionamiento de la impresora de PDF enviando un nuevo trabajo desde línea de comandos. Para ello crear un archivo de texto a modo de prueba:

admin@servidor:~$ nano prueba.txt
Hola mundo!

A ver si anda.

Para imprimir desde línea de comandos, recurrir al utilitario lp (parte del paquete CUPS):

admin@servidor:~$ lp -d PDF prueba.txt 
request id is PDF-1 (1 file(s))

Inmediatamente se genera un nuevo archivo PDF dentro del directorio ~/PDF:

admin@servidor:~$ ll ~/PDF/
total 16
drwxr-xr-x 2 admin admin 4096 Sep 29 13:02 .
drwx------ 5 admin admin 4096 Sep 29 12:57 ..
-rw------- 1 admin admin 7267 Sep 29 13:02 prueba.pdf

Es posible visualizar el archivo PDF utilizando herramientas como pdftotext, pero mejor comprobar cómo se visualiza en un lector de PDF GUI.

Descargar el archivo utilizando scp:

emi@hal9000:~ % scp -P 22 admin@servidor:~/PDF/prueba.pdf .
admin@servidor's password: 
prueba.pdf                                100% 7267     7.1KB/s   00:00    
emi@hal9000:~ %

Abrirlo con un visor de PDF como Okular:

¡Exito!

Para más información sobre los utilitarios de CUPS, revisar las siguientes páginas de manual:

man lpstat
man lpinfo
man lpadmin
man lp
man lpoptions

Referencias


Tal vez pueda interesarte


Compartí este artículo