Como imprimir com ghostscript no modo silencioso

Como imprimir com ghostscript no modo silencioso

Estou usando o seguinte comando Ghostscript para imprimir um documento postscript:

C:\Program Files\gs\gs9.14\bin>gswin64c.exe -sDEVICE=mswinpr2 testprinter.ps

Este comando abre uma caixa de diálogo Imprimir onde posso alterar a impressora, especificar o intervalo de impressão e as cópias e com os botões Ok e Cancelar.

No entanto, meu requisito é fazer com que o Ghostscript imprima silenciosamente, suprimindo a caixa de diálogo Imprimir.

Existe uma opção de comando que me permite imprimir silenciosamente? Então posso simplesmente emitir o comando e a impressora imprime.

Não consegui obter nenhuma informação do Google ou de outros documentos do Ghostscript disponíveis na Internet. Então, eu gostaria de verificar com o amigável e experientesuperusuáriocomunidade.

Responder1

Extraído dedocumentação fantasma, Impressoras MS Windows

Se nenhum nome de impressora do Windows for especificado em -sOutputFile, o Ghostscript solicitará uma impressora do Windows usando a caixa de diálogo Configuração de impressão padrão. ...

Se um nome de impressora do Windows for especificado em -sOutputFile usando o formato "%printer%printer_name", por exemplo

gs ... -sOutputFile="%printer%Apple LaserWriter II NT" 

então o Ghostscript tenta abrir a impressora do Windows sem avisar (exceto, é claro, se a impressora estiver conectada ao FILE:)

Dependendo de como o processo final deve funcionar, talvez você também precise das opções -dBATCHe-dNOPAUSE

notas: %printer%é literal para Ghostscript, mas a sintaxe colidirá com cmdo analisador que vê %printer%como uma operação de leitura de variável.

Dentro dos arquivos em lote, os sinais de porcentagem podem ser escapados dobrando-os ( %%printer%%), mas no modo de linha de comando não há como escapar do sinal de porcentagem se estiver dentro de uma string entre aspas (como mostrado na documentação, eles são necessários para lidar com espaços em argumentos).

No modo de linha de comando, existem duas alternativas:

  • Certifique-se de que a printervariável de ambiente não exista (se não existir, a operação de leitura não será executada e o literal %printer%será mantido no comando final executado).
  • Defina alguma variável de ambiente para que quando a operação de leitura for executada o comando resultante esteja correto.

Apenas alguns exemplos de linha de comando:

rem ensure the variable does not exist
set "printer="
gs ... -sOutputFile="%printer%Apple LaserWriter II NT"

rem store the full literal
set p=%^printer%
gs ... -sOutputFile="%p%Apple LaserWriter II NT" 

rem store the percent sign
set "p=%"
gs ... -sOutputFile="%p%printer%p%Apple LaserWriter II NT"     

informação relacionada