Ich verwende den folgenden Ghostscript-Befehl, um ein Postscript-Dokument zu drucken:
C:\Program Files\gs\gs9.14\bin>gswin64c.exe -sDEVICE=mswinpr2 testprinter.ps
Dieser Befehl öffnet ein Druckdialogfeld, in dem ich den Drucker ändern, Druckbereich und Kopien angeben und auf die Schaltflächen „OK“ und „Abbrechen“ zugreifen kann.
Meine Anforderung besteht jedoch darin, dass Ghostscript nur stillschweigend druckt und den Druckdialog unterdrückt.
Gibt es einen Befehlsschalter, mit dem ich im Hintergrund drucken kann? Ich kann also einfach den Befehl eingeben und der Drucker druckt ihn aus.
Ich konnte keine Informationen von Google oder anderen Ghostscript-Dokumenten im Internet erhalten. Daher würde ich gerne den freundlichen und sachkundigenSuperuserGemeinschaft.
Antwort1
Extrahiert ausGhostscript-Dokumentation, MS Windows Drucker
Wenn in -sOutputFile kein Windows-Druckername angegeben ist, fordert Ghostscript über das Standarddialogfeld „Druckereinrichtung“ zur Eingabe eines Windows-Druckers auf. ...
Wenn in -sOutputFile ein Windows-Druckername im Format "%Drucker%Druckername" angegeben wird, beispielsweise
gs ... -sOutputFile="%printer%Apple LaserWriter II NT"
dann versucht Ghostscript, den Windows-Drucker ohne Nachfrage zu öffnen (außer natürlich, wenn der Drucker mit FILE: verbunden ist)
Abhängig davon, wie der Endprozess ablaufen soll, benötigen Sie möglicherweise auch die Schalter -dBATCH
und-dNOPAUSE
Anmerkungen: %printer%
ist ein Literal für Ghostscript, aber die Syntax kollidiert mit dem Parser, der es als Lesevorgang für eine Variable cmd
betrachtet .%printer%
In Batchdateien können die Prozentzeichen durch Verdoppeln ( %%printer%%
) maskiert werden, aber im Befehlszeilenmodus gibt es keine Möglichkeit, das Prozentzeichen zu maskieren, wenn es sich in einer in Anführungszeichen gesetzten Zeichenfolge befindet (wie in der Dokumentation gezeigt, werden sie benötigt, um Leerzeichen in Argumenten zu verarbeiten).
Im Kommandozeilenmodus gibt es zwei Alternativen:
- Stellen Sie sicher, dass die
printer
Umgebungsvariable nicht vorhanden ist (wenn sie nicht vorhanden ist, wird der Lesevorgang nicht ausgeführt und das Literal%printer%
bleibt im zuletzt ausgeführten Befehl erhalten). - Definieren Sie einige Umgebungsvariablen, sodass beim Ausführen des Lesevorgangs der resultierende Befehl korrekt ist.
Nur einige Befehlszeilenbeispiele:
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"