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