¿Cómo agregar una impresora falsa, ficticia y nula en CUPS?

12

Estoy escribiendo un software que admite múltiples impresoras. Para probarlo, necesito agregar varias impresoras a mi servidor CUPS. ¿Cómo puedo hacer eso?

Quiero agregar algunas impresoras falsas que enviarán los trabajos directamente a / dev / null. De esa manera, puedo ver la lista de "trabajos completados" en la interfaz CUPS y observar si mi software está utilizando la impresora correcta para cada trabajo.

Denilson Sá Maia
fuente
isnt this correct "lpadmin -p lp0 -E -v / dev / null -m raw"
Ashika Umanga Umagiliya
1
Consulte también la creación de una impresora ficticia .
Wilfred Hughes

Respuestas:

11

Una solución es instalar cups-pdf . Agrega una impresora virtual que escribe archivos PDF. Hay varios tutoriales en la web sobre cómo instalarlo y configurarlo; Desde que uso Gentoo, he leído Gentoo-wiki , que también menciona Sabayon wiki .

La impresora virtual cups-pdf tiene un archivo de configuración /etc/cups/cups-pdf.confy, de forma predeterminada, se graban todos los archivos PDF /var/spool/cups-pdf/${USER}.

(Nota: en Ubuntu escribe a ~ / PDF /)

Sin embargo, hay algunas limitaciones:

  • Como solo hay un archivo de configuración, varias impresoras PDF se guardarán en el mismo directorio.

  • Es imposible imprimir datos "en bruto" (usando, por ejemplo lpr -o raw). Incluso enviar un archivo PDF como trabajo sin procesar no funcionará. Los trabajos de impresión sin formato generarán un archivo PDF en blanco con solo una página vacía.

Incluso con estas limitaciones, funciona perfectamente para mis necesidades.


Nota al pie: si el usuario está usando Gnome, o imprimiendo a través de una aplicación GTK +, entonces ya hay una pseudo-impresora "Imprimir en archivo" en el cuadro de diálogo de impresión. Por lo tanto, ¿por qué el usuario todavía debería querer agregar una impresora PDF virtual? Aquí hay algunas razones:

  • Ese "Imprimir en archivo" es específico de GTK + y no está disponible para aplicaciones que no sean GTK +. (tal vez KDE tiene una característica similar, pero no estoy seguro)
  • Permite generar un PDF a partir de "aplicaciones" de Flash que fueron diseñadas para imprimir. Por ejemplo, el PocketMod .
  • Agregar una impresora virtual a CUPS permite probar la impresión utilizando scripts de shell u otro software que se comunica directamente con CUPS. Esto es especialmente útil para los desarrolladores mientras prueban sus aplicaciones.
  • Es posible "compartir" esta impresora virtual con la red local. No exactamente útil, pero posible.
  • Es posible adjuntar un comando de procesamiento posterior que se ejecutará justo después de que se haya guardado el archivo PDF.
Denilson Sá Maia
fuente
9

El Foro de Copas tiene una respuesta más completa / precisa a esta pregunta.

La respuesta es que el URI del dispositivo debe establecerse en archivo: / dev / null

Entonces, en mi configuración de Ubuntu:

  • URI del dispositivo: archivo: / dev / null
  • Marca y modelo: Impresora local sin procesar

Lo que me funciona perfectamente.

Busqué en el foro de Copas nuevamente y encontré esto:

Configuración de impresora de línea de comando nula en el foro de tazas

En tu cupsd.conf:

FileDevice yes

Configurar impresora

lpadmin -p nowhere -E -v file:/dev/null

Impresora de prueba

who |lp -d nowhere
Andrew Russell
fuente
Ahora estoy mirando mi impresión: detalles finos, colores vibrantes, simplemente salta de la página hacia mí. ... hey waitaminute ....
Andrew Russell
Gracias. Necesitaba una impresora ficticia en mi máquina virtual para capturar algunas instrucciones. :)
njallam
7

Puede crear una impresora que a salidas /dev/nullcon lpadmin:

$ sudo lpadmin -p myprinter -E -v file:///dev/null

Esto se escribirá en /etc/cups/printers.conf, pero también puede ver impresoras con lpstat:

$ sudo lpstat -s
myprinter accepting requests since Thu 22 Jan 2015 11:04:46 AM GMT
system default destination: myprinter
device for myprinter: ///dev/null

Tenga en cuenta que es posible que deba habilitar FileDevice en /etc/cups/cupsd.conf en distribuciones de Linux antiguas .

Para hacer que su nueva impresora sea la predeterminada, use lpoptions:

$ sudo lpoptions -d myprinter
Wilfred Hughes
fuente
¿Cómo quitarlo?
Richard
@ Richard Use lpadmin -x myprintero la interfaz web.
Torkel Bjørnson-Langen
2

Una de las mejores soluciones es usar ippserver. Viene con CUPSv2.2.2y superior. Alternativamente, puede obtener el proyecto desde aquí: implementaciones de muestra IPP .

Según la descripción en la página del manual :

ippserver es un servidor simple de Protocolo de impresión de Internet (IPP) que cumple con las especificaciones IPP Everywhere e IPP Shared Infrastructure Extensions (INFRA). Se puede usar como un servidor de impresión independiente y / o un servidor de infraestructura muy básico entre clientes IPP estándar y servidores proxy IPP que cumplan con la especificación INFRA.

Para usarlo, todo lo que necesita hacer es ejecutar ippserver "My cool printer", y creará una impresora virtual con el nombre My cool printerpara usted. Se ejecuta como un servidor web y escucha en puertos específicos.

En caso de que necesite varias impresoras, puede ejecutar el servidor en múltiples puertos usando ippserver "My other cool printer" -p 8888.

Incluso puede suministrar atributos de impresora utilizando un archivo de atributos. Por ejemplo, su impresora admite por defecto impresiones de alta calidad, puede agregar el siguiente atributo en el archivo de atributos:

ATTR enum print-quality-default high

y ejecuta el servidor usando:

ippserver "My high quality cool printer" -a attributes-file.txt

Referencias

  1. Muestra de PWG IPP
  2. Página de manual de CUPS ipptoolfile
Sahil Arora
fuente
1

Tomado de http://inai.de/linux/adm_virtualprinter :

Impresora virtual en CUPS

Para crear una impresora en CUPS que envía los datos a ninguna parte (como /dev/null), hay muchas formas. Esta página usa el socket:// método.

Configurar xinetd primero

Lo que necesitamos es el servicio TCP Discard en el puerto 9. Xinetd lo tiene incorporado, por lo que podemos usarlo. Asegúrese de que la siguiente definición esté disponible en los archivos de configuración de xinetd, por lo general /etc/xinetd.d/discard. Debe contener un servicio como el siguiente:

    descarte de servicio
        tipo = INTERNO
        id = descartar secuencia
        socket_type = flujo
        protocolo = tcp
        usuario = root
        espera = no
        deshabilitar = no
        BANDERAS = IPv6 IPv4 
Ejecute rcxinetd reloadpara releer los archivos de configuración y activar el nuevo discardservicio. O use rcxinetd startsi xinetd aún no estaba activo.

Impresora CUPS

Ahora vaya a la interfaz web de CUPS y agregue una nueva impresora. Como destino, use socket://localhost:9/, como impresora, elija algo que se vea funcional, por ejemplo, el "HP 2500C Foomatic / pcl3". Eso es todo al respecto.

Golar Ramblar
fuente