Como adicionar uma impressora nula falsa no CUPS?

11

Estou escrevendo um software que suporta várias impressoras. Para testá-lo, preciso adicionar várias impressoras ao meu servidor CUPS. Como posso fazer isso?

Eu quero adicionar algumas impressoras falsas que enviarão as tarefas diretamente para / dev / null. Dessa forma, posso assistir a lista de "trabalhos concluídos" na interface do CUPS e observar se meu software está usando a impressora correta para cada trabalho.

    
por Denilson Sá Maia 30.06.2011 / 20:35

5 respostas

10

Uma solução é instalar cups-pdf . Adiciona uma impressora virtual que grava arquivos PDF. Existem vários tutoriais na web sobre como instalá-lo e configurá-lo; desde que eu uso o Gentoo, eu li Gentoo-wiki , que também menciona wiki do Sabayon .

A impressora virtual

cups-pdf tem um arquivo de configuração em /etc/cups/cups-pdf.conf e, por padrão, todos os arquivos PDF são gravados em /var/spool/cups-pdf/${USER} .

(NB: No Ubuntu, ele grava em ~ / PDF /)

Existem algumas limitações:

  • Como existe apenas um arquivo de configuração, várias impressoras PDF serão salvas no mesmo diretório.

  • É impossível imprimir dados "brutos" (usando, por exemplo, lpr -o raw ). Mesmo enviar um arquivo PDF como um trabalho bruto não funcionará. Os trabalhos de impressão brutos geram um arquivo PDF em branco com apenas uma página vazia.

Mesmo com essas limitações, funciona perfeitamente para as minhas necessidades.

Nota de rodapé: se o usuário estiver usando o Gnome ou imprimindo através de um aplicativo GTK +, já existe uma pseudo-impressora "Imprimir para arquivo" na caixa de diálogo de impressão. Assim, por que o usuário ainda deseja adicionar uma impressora virtual de PDF? Aqui estão algumas razões:

  • O "Imprimir para arquivo" é específico do GTK + e não está disponível para aplicativos não-GTK +. (talvez o KDE tenha um recurso semelhante, mas não tenho certeza)
  • Torna possível gerar um PDF a partir de "aplicativos" do Flash projetados para impressão. Por exemplo, o PocketMod .
  • Adicionar uma impressora virtual ao CUPS torna possível testar a impressão usando scripts de shell ou outro software que converse diretamente com o CUPS. Isso é especialmente útil para desenvolvedores ao testar seus aplicativos.
  • É possível "compartilhar" esta impressora virtual com a rede local. Não exatamente útil, mas possível.
  • É possível anexar um comando de pós-processamento a ser executado logo após o arquivo PDF ter sido salvo.
por 22.08.2011 / 07:25
8

O Fórum Cups tem uma resposta mais completa / precisa para essa pergunta.

A resposta é que o URI do dispositivo deve ser definido como arquivo: / dev / null

Então, na minha configuração do Ubuntu:

  • URI do dispositivo: arquivo: / dev / null
  • Marca e modelo: impressora local bruta

O que funciona para mim perfeitamente.

Eu procurei no fórum do Cups novamente e achei isso:

Configuração de impressora nula Commandline no fórum Cups

No seu cupsd.conf:

FileDevice yes

Configurar impressora

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

Teste de impressoras

who |lp -d nowhere
    
por 13.03.2012 / 23:39
6

Você pode criar uma impressora com saída para /dev/null com lpadmin :

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

Isso será gravado em /etc/cups/printers.conf , mas você também pode visualizar impressoras com 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

Observe que você pode precisar ativar o FileDevice em /etc/cups/cupsd.conf em antigas distribuições Linux .

Para tornar sua nova impressora o padrão, use lpoptions :

$ sudo lpoptions -d myprinter
    
por 22.01.2015 / 12:21
1

Uma das melhores soluções é usar ippserver . Ele vem com CUPSv2.2.2 e superior. Você pode, alternativamente, obter o projeto a partir daqui: implementações de amostras do IPP .

De acordo com a descrição na página de manual :

ippserver is a simple Internet Printing Protocol (IPP) server conforming to the IPP Everywhere and IPP Shared Infrastructure Extensions (INFRA) specifications. It can be used as a standalone print server and/or a very basic infrastructure server between standard IPP clients and IPP proxies conforming to the INFRA specification.

Para usá-lo, tudo que você precisa fazer é executar ippserver "My cool printer" e ele criará uma impressora virtual com o nome My cool printer para você. Ele é executado como um servidor da Web e escuta em portas específicas.

Caso você precise de várias impressoras, você pode executar o servidor em várias portas usando ippserver "My other cool printer" -p 8888 .

Você pode até fornecer atributos da impressora usando um arquivo de atributos. Por exemplo, sua impressora suporta por padrão impressões de alta qualidade, você pode adicionar o seguinte atributo no arquivo de atributos:

ATTR enum print-quality-default high

e execute o servidor usando:

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

Referências:

  1. Amostra de IPP do PWG
  2. Página de manual ipptoolfile do CUPS
por 19.06.2017 / 23:36
0

Extraído de link :

Virtual printer in CUPS

To create a printer in CUPS that sends the data nowhere (like /dev/null), there are many ways. This page uses the socket:// method.

Set up xinetd first

What we need is the TCP Discard service on port 9. Xinetd has it built-in, so we can just use that. Make sure that the following definition is available in xinetd's configuration file(s), usually /etc/xinetd.d/discard. It should contain a service like the following:

    service discard
        type            = INTERNAL
        id              = discard-stream
        socket_type     = stream
        protocol        = tcp
        user            = root
        wait            = no
        disable         = no
        FLAGS           = IPv6 IPv4 
Run rcxinetd reload to reread the configuration files and activate the new discard service. Or use rcxinetd start if xinetd was not already active.

CUPS printer

Now go to the CUPS web frontend and add a new printer. As destination, use socket://localhost:9/, as printer choose something that looks featureful, for example the "HP 2500C Foomatic/pcl3". That's all there is to it.

    
por 24.01.2017 / 13:14

Tags