cups-pdf: Una impresora virtual para convertir archivos a PDF. | Algo de Linux

miércoles, 14 de noviembre de 2007

cups-pdf: Una impresora virtual para convertir archivos a PDF.

Como dice el autor en su web, cups-pdf está diseñado para producir ficheros PDF en una red heterogénea (con diferentes sistemas operativos), proporcionando una impresora PDF en un servidor central.
Este software está disponible bajo la licencia GPL y se encuentra empaquetado para diferentes distribuciones. Además, puede ser instalado directamente desde el código fuente.

Podemos descargarlo desde:
http://www.cups-pdf.de/download.shtml

La última versión disponible en código fuente es la siguiente: cups-pdf_2.4.6.tar.gz

Como LinEx no tiene una versión muy reciente, he preferido instalar el software desde el código fuente.

Los pasos a seguir para instalarlo son:
  • Lo primero es descargar cups-pdf_2.4.6.tar.gz
  • Una vez descargado, descomprimimos: tar xfvz cups-pdf_2.4.6.tar.gz
  • Se nos creará el siguiente directorio: cups-pdf_2.4.6
  • Entramos en el directorio src que hay dentro de cups-pdf_2.4.6
  • Editamos el fichero cups-pdf.h que hay dentro de src, si no queremos que el fichero de configuración de cups-pdf tenga como nombre /etc/cups/cups-pdf.conf
  • Ahora compilamos cups-pdf (No olvidemos que tenemos que estar dentro del directorio src para hacerlo): gcc -O9 -s -o cups-pdf cups-pdf.c
  • Una vez compilado el software, tenemos que instalarlo. Bien, pues instalarlo es tan sencillo como copiar cups-pdf al directorio backend de CUPS (usualmente /usr/lib/cups/backend): cp cups-pdf /usr/lib/cups/backend/
  • Cambiamos los permisos de cups-pdf: chmod 700 /usr/lib/cups/backend/cups-pdf
  • Una vez hecho lo anterior, copiamos el fichero cups-pdf.conf que hay en el directorio extra a /etc/cups/ (o a la localización que hayamos elegido en cups-pdf.h): cp extra/cups-pdf.conf /etc/cups/
  • Podemos modificar cups-pdf.conf sin tener que reiniciar ningún servicio, aunque las opciones por defecto deberían funcionar bien en la mayoría de los sistemas.
  • Por último, copiamos el driver PostScript que viene en el directorio extra: cp extra/PostScript.ppd /usr/share/cups/model/
Una vez instalado, tendremos que configurar la impresora en el servidor. Podemos hacerlo desde cups. P. ej:Mediante el navegador: http://ipservidor:631

Una vez configurada la impresora virtual, cuando un usuario quiera guardar un archivo como PDF, no tendrá más que imprimirlo en dicha impresora.

La primera vez que cada usuario lo use, se creará un directorio llamado PDF en su cuenta, en el que se almacenarán los archivos pdf. Debemos tener en cuenta que si para las cuentas de usuario, estamos exportando el home mediante nfs, en el fichero /etc/exports tendremos que especificar como opción de exportación no_root_squash

Y eso es todo. Tan sólo tendremos que compartir la impresora con las máquinas de nuestra red, para que pueda ser utilizada desde cualquier equipo. La configuración se hace como con cualquier impresora real.

6 comentarios:

Girly dijo...

Hola ENavas,
Instale este cups-pdf en mi servidor linux Fedora Core8, el mismo lo administro con webmin, cuando envio una pagina de prueba
el printer pdf me pone por defecto este nombre del archivo pdf resultante:
"184687_1_test_print.pdf"
Como puedo cambiarlo??

enavas dijo...

No sé exactamente lo que quieres hacer, así que si no te sirve lo que te comento, explícamelo, a ver si puedo ayudarte.

En el fichero cups-pdf.conf encontrarás algunas opciones para cambiar la forma en que se generan los nombres de los archivos.

Te pego a continuación las opciones de ajuste de generación de los nombres de mi fichero de configuración:

###########################################################################
# #
# Filename Settings #
# #
###########################################################################

### Key: Cut
## removing file name extensions before appending .pdf to output
## extensions will only be removed if _both_ the following criteria are met:
## - the extension (w/o the dot) is not longer than Out characters
## - the remaining filename has a minimal length of 1 character
## set Cut to -1 in order to disable cutting
## recommended values: pure UNIX environment : -1
## mixed environments : 3
### Default: 3

#Cut 3

### Key: Label
## label all jobs with a unique job-id in order to avoid overwriting old
## files in case new ones with identical names are created; always true for
## untitled documents
## 0: label untitled documents only, 1: label all documents
### Default: 0

Label 0

### Key: TitlePref
## where to look first for a title when creating the output filename
## (title in PS file or title on commandline):
## 0: prefer title from %Title statement in the PS file
## 1: prefer title passed via commandline
### Default: 0

#TitlePref 0

###########################################################################

Girly dijo...

Hola Enavas,
Gracias por tu pronta respuesta.

Tengo otra consulta.
Tengo mi server linux la impresora pdf instalada, cuando le digo a un ordenador windows que instale dicha impresora me pide los drivers.
Donde puedo conseguirlos?

enavas dijo...

No hay de qué.

No he tenido la necesidad de utilizar la impresora PDF desde clientes windows porque en mi centro de trabajo la mayoría de los clientes son Linux y en los windows utilizan OpenOffice para generar archivos PDF a partir de documentos.
Cuando windows te pida los drivers, prueba a elegir una impresora PostScript para la que windows tenga controladores. Busca por ejemplo una HP Laserjet PostScript, para no tener que descargar controladores.

Girly dijo...

Gracias nuevamente.

Sin embargo el printer me sale con Access denied, unable to connect.
Tiene que ver con permisos del samba? ya tengo creado un usuario.
Has tenido alguna esperiencia con esto?

enavas dijo...

¿Has configurado el servidor de impresión para conceder acceso a tu red local o a las máquinas que quieras permitir imprimir?

Puedes configurar los permisos para acceder a las diferentes secciones de cups.
Por ejemplo, puedes añadir un:
Allow From 192.168.1.*
para permitir acceso a las máquinas de tu red a la sección que desees.