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 -dBATCH
e-dNOPAUSE
notas: %printer%
é literal para Ghostscript, mas a sintaxe colidirá com cmd
o 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
printer
variá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"