Ghostscript PDF Druck über CLI funktioniert nicht

Knalltuete

Lieutenant
Registriert
Aug. 2006
Beiträge
519
Moin!

Ich versuche ein PDF per Ghostscript an einen über das Netzwerk freigegebenen Drucker zu schicken. Das Dokument landet in der Warteschlange und ja.. Das wars. Es wird nicht vom Drucker gedruckt. Das normale Drucken aus Anwendungen heraus funktioniert ohne Probleme. Ich habe es auch mit verschiedenen PDF-Dateien probiert.

Der Aufruf sieht wie folgt aus:
Code:
"C:\Program Files\gs\gs9.54.0\bin\gswin64c.exe" -dBatch -dNOPAUSE -dNOPROMPT -dDuplex -sDEVICE=mswinpr2 -sOutputFile="%printer%\\SERVER\DRUCKERNAME" "C:\Pfad\Zur\Datei.pdf"

Hat jemand eine Idee woran es liegen könnte?
 
Den Satz verstehe ich nicht; inhaltlich. Und ein Verdoppeln von % ist mir noch nie untergekommen.

@ Knalltuete
Wenn es doch so ein komisches Phänomen sein sollte stell deiner Befehlszeile ein ECHO vor und schau ob das was rauskommen soll auch rauskommt.

CN8
 
cumulonimbus8 schrieb:
ein Verdoppeln von % ist mir noch nie untergekommen
Bin kein Experte für die Windows-Kommandozeile, aber die Suchmaschine spuckt einiges zu dem Thema aus, siehe z.B. hier:
The CMD shell reads through each line of a batch file once from left to right, when it finds a percent sign it checks the next character and proceeds as follows:
  • If the next character is another percent sign (%), CMD replaces the two with a single percent sign and then reads the third character evaluating it either as a FOR parameter or, if not in a FOR loop, just treating it as the plain character '%'.
    %%G => somevalue
    %%Hello => %Hello
  • If the next character is a digit (0-9) CMD replaces the percent sign and digit with the value of the corresponding command line parameter. Also if the character is a tilde (~) then Parameter Extensions will be applied.
    %1 => somevalue
  • If the next character is anything else (so not a number or a % symbol) CMD treats everything up to the next percent sign as the name of a variable and replaces it with the value of that variable.
    %_somevariable% => somevalue
When working at the command line (not in a batch script) there is no possibility of any batch file parameters %1, %2 etc so the logic above is not followed and hence FOR parameters on the command line only need a single %.
One other place where a percent character is used is as the modulus operator in the SET /A command, in a batch file this should always be passed as a pair of double %%'s.

cumulonimbus8 schrieb:
Den Satz verstehe ich nicht; inhaltlich.
Was genau verstehst du nicht? man page = manual page, falls es das ist.
 
Wenn es sich um einen UNC-Pfad handelt und in der Variablen der Laufwerksbuchstabe enthalten sein sollte, dann könnte das die Ursache für das Problem sein.
 
SJAFNWEIF schrieb:
Was genau verstehst du nicht?
«man page» war mir neu; das gabs damals nich nicht als ich an UNIX-Teminals gebastelt habe; aber was verstehst du an «inhaltlich» nicht?
Da wird von dir also eine LINUX-Anleitung gezogen wie % unter MS eingesetzt werden müssen. Gehen wir also davon aus, dass unter LINUX eine MS-Zeile in einer geeigenten Umgeung ausglöst würde? Ich sehe dazu beim TE nichts.

Dass man am CMD-Prompt nur 1 % nutzt und in der Batch 2 ist ja nun ein alter Hut:
for %a in (hund katze maus) do echo %a %windir%
for %%a in (hund katze maus) do echo %%a %windir%

Blöd ist nur, dass Systemvariablen immer in der Form %Variable% benutzt werden müssen, ein % vorne und eins hinten dran, ob am Promt oder in der Batch.

Deshalb verstehe ich weder die Neotwendigkeit des Satzes noch seinen Inhalt.

CN8
 
@cumulonimbus8
In der man page geht es um die Nutzung von Ghostscript an sich, da es das für unterschiedliche Betriebssysteme gibt findet man da auch Hinweise zur Nutzung unter Windows (wenn es denn überhaupt Unterschiede zwischen den Betriebssystemen gibt). In dem Satz geht es also einfach um die normale Nutzung von Ghostscript unter Windows. Der Hinweis findet sich auch in ähnlicher Form in der Dokumentation auf der Ghostscript-Webseite.
cumulonimbus8 schrieb:
Blöd ist nur, dass Systemvariablen immer in der Form %Variable% benutzt werden müssen, ein % vorne und eins hinten dran, ob am Promt oder in der Batch.
-sOutputFile="%printer%\\SERVER\DRUCKERNAME" ;)

War ja auch nur eine Idee von mir, ob das tatsächlich das Problem des TE löst werden wir erst erfahren, wenn der TE sich zurückmeldet.
 
Dann will ich mich auch mal zu Wort melden. Vielen Dank erstmal für die Hinweise!

Also an dem %printer% liegt es definitiv nicht. Auch wenn ich ein echo vor die Befehlszeile stelle, dann bekomme ich %printer% in der Ausgabe. Ich glaube auch nicht, dass da der Fehler liegt. Ansonsten würde der Druckauftrag wahrscheinlich gar nicht in der Druckerwarteschlange landen.
 
Zurück
Oben