Come aggiungere una stampante falsa, fittizia, nulla in CUPS?


12

Sto scrivendo un software che supporta più stampanti. Per testarlo, devo aggiungere più stampanti al mio server CUPS. Come posso fare ciò?

Voglio aggiungere alcune stampanti false che invieranno i lavori direttamente a / dev / null. In questo modo, posso guardare l'elenco dei "lavori completati" nell'interfaccia di CUPS e osservare se il mio software utilizza la stampante corretta per ogni lavoro.


non è corretto "lpadmin -p lp0 -E -v / dev / null -m raw"
Ashika Umanga Umagiliya

Risposte:


11

Una soluzione è installare cups-pdf . Aggiunge una stampante virtuale che scrive file PDF. Esistono diversi tutorial sul web su come installarlo e configurarlo; da quando uso Gentoo, ho letto Gentoo-wiki , che menziona anche il wiki Sabayon .

La stampante virtuale cups-pdf ha un file di configurazione /etc/cups/cups-pdf.confe per impostazione predefinita vengono scritti tutti i file PDF /var/spool/cups-pdf/${USER}.

(NB: su Ubuntu scrive in ~ / PDF /)

Vi sono alcune limitazioni, tuttavia:

  • Poiché esiste un solo file di configurazione, più stampanti PDF salveranno nella stessa directory.

  • È impossibile stampare dati "grezzi" (usando, ad esempio, lpr -o raw). Anche l'invio di un file PDF come processo non funzionante. I lavori di stampa non elaborati genereranno un file PDF vuoto con solo una pagina vuota.

Anche con queste limitazioni, funziona perfettamente per le mie esigenze.


Nota a piè di pagina: se l'utente utilizza Gnome o stampa tramite un'applicazione GTK +, nella finestra di dialogo di stampa è già presente una pseudo-stampante "Stampa su file". Pertanto, perché l'utente dovrebbe ancora voler aggiungere una stampante PDF virtuale? Ecco alcuni motivi:

  • Che "Stampa su file" è specifico per GTK + e non è disponibile per applicazioni non GTK +. (forse KDE ha una funzione simile, ma non sono sicuro)
  • Rende possibile generare un PDF da "applicazioni" Flash progettate per la stampa. Ad esempio, PocketMod .
  • L'aggiunta di una stampante virtuale a CUPS consente di testare la stampa utilizzando script di shell o altri software che dialogano direttamente con CUPS. Ciò è particolarmente utile per gli sviluppatori durante il test delle loro applicazioni.
  • È possibile "condividere" questa stampante virtuale con la rete locale. Non esattamente utile, ma possibile.
  • È possibile allegare un comando di post-elaborazione da eseguire subito dopo il salvataggio del file PDF.

9

Il Forum di Coppe ha una risposta più completa / accurata a questa domanda.

La risposta è che l'URI del dispositivo deve essere impostato su file: / dev / null

Quindi nella mia configurazione di Ubuntu:

  • URI del dispositivo: file: / dev / null
  • Marca e modello: Local Raw Printer

Che funziona perfettamente per me.

Ho cercato di nuovo il forum delle Coppe e ho trovato questo:

Configurazione della stampante Null di Commandline nel forum di Coppe

Nel tuo cupsd.conf:

FileDevice yes

Imposta stampante

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

Test della stampante

who |lp -d nowhere

Sto solo guardando la mia stampa ora: dettagli raffinati, colori vivaci che mi saltano fuori dalla pagina. ... hey waitaminute ....
Andrew Russell

Grazie. Avevo bisogno di una stampante fittizia nella mia macchina virtuale per visualizzare alcune istruzioni. :)
njallam,

7

È possibile creare una stampante che uscite verso /dev/nullcon lpadmin:

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

Questo verrà scritto in /etc/cups/printers.conf, ma puoi anche visualizzare le stampanti 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

Nota che potresti dover abilitare FileDevice in /etc/cups/cupsd.conf su vecchie distribuzioni Linux .

Per impostare la nuova stampante come predefinita, utilizzare lpoptions:

$ sudo lpoptions -d myprinter

Come rimuoverlo?
Richard,

@Richard Use lpadmin -x myprintero l'interfaccia web.
Torkel Bjørnson-Langen,

2

Una delle migliori soluzioni è quella di utilizzare ippserver. Viene con CUPSv2.2.2e più in alto. In alternativa, è possibile ottenere il progetto da qui: implementazioni di esempio IPP .

Secondo la descrizione nella pagina del manuale :

ippserver è un semplice server IPP (Internet Printing Protocol) conforme alle specifiche IPRA Everywhere e IPP Shared Infrastructure Extensions (INFRA). Può essere utilizzato come un server di stampa autonomo e / o un server di infrastruttura di base tra client IPP standard e proxy IPP conformi alla specifica INFRA.

Per usarlo, tutto ciò che devi fare è eseguire ippserver "My cool printer"e creerà una stampante virtuale con il nome che fa My cool printerper te. Funziona come un web server e ascolta su porte specifiche.

Nel caso in cui siano necessarie più stampanti, è possibile eseguire il server su più porte utilizzando ippserver "My other cool printer" -p 8888.

È anche possibile fornire gli attributi della stampante utilizzando un file di attributi. Ad esempio, la stampante supporta per impostazione predefinita stampe di alta qualità, è possibile aggiungere il seguente attributo nel file degli attributi:

ATTR enum print-quality-default high

ed esegui il server usando:

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

Riferimenti:

  1. Esempio di IPP PWG
  2. Pagina man di ipptoolfile di CUPS

1

Tratto da http://inai.de/linux/adm_virtualprinter :

Stampante virtuale in CUPS

Per creare una stampante in CUPS che non invia i dati da nessuna parte (come /dev/null), ci sono molti modi. Questa pagina utilizza il socket:// metodo

Configurare prima xinetd

Ciò di cui abbiamo bisogno è il servizio TCP Discard sulla porta 9. Xinetd lo ha integrato, quindi possiamo semplicemente usarlo. Assicurati che la seguente definizione sia disponibile nei file di configurazione di xinetd, di solito /etc/xinetd.d/discard. Dovrebbe contenere un servizio come il seguente:

    scartare il servizio
        tipo = INTERNO
        id = discard-stream
        socket_type = stream
        protocollo = tcp
        utente = root
        wait = no
        disabilita = no
        FLAGS = IPv6 IPv4 
Esegui rcxinetd reloadper rileggere i file di configurazione e attivare il nuovo discardservizio. Oppure usa rcxinetd startse xinetd non era già attivo.

Stampante CUPS

Ora vai al frontend Web di CUPS e aggiungi una nuova stampante. Come destinazione, utilizzare socket://localhost:9/, poiché la stampante sceglie qualcosa che sembra caratteristico, ad esempio "HP 2500C Foomatic / pcl3". Questo è tutto quello che c'è da fare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.