2017-03-21 15 views
0

es meine Codes ist, extraCmds := []string{"-q", "-dBATCH", "-dNOPAUSE", "-dSAFER", "-sDEVICE=pcxmono", fmt.Sprintf("-r%v", dpi), // -r600 "-sOutputFile=BBB%03d.pcx", "WO-BC-CARE.pdf", } s, _ := exec.Command("gs", extraCmds...).Output() reslt := string(s) log.Println(reslt) immer Fehler beim Aufruf ghostscrip von exec.Command von golang

zeigen Fehler, 2017/03/21 09:24:48 Error: /undefinedfilename in --findlibfile-- Operand stack: () Execution stack: %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval- - 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- fa lse 1 %stopped_push --nostringval-- 1864 1 3 %oparray_pop --nost ringval-- Dictionary stack: --dict:1200/1684(ro)(G)-- --dict:0/20(G)-- --dict:78/200(L)-- Current allocation mode is local Last OS error: No such file or directory

klingt nicht ps Bibliothek finden, aber nicht wissen, wie zu setzen gs Pfad mit exec.Command. danke für den Vorschlag im Voraus.

[Update], löste ich das Problem über die Aktualisierung von gs von 9.20 bis 9.21. Ein weiterer Fallstrick benötigt Aufmerksamkeit während der Verwendung von Golang exec.Command. Es ist kein Zitat in Parametern, sagen "BBB%03d.pcx". Sie müssen stattdessen BBB%03d.pcx verwenden.

Antwort

0

Der Fehler weist darauf hin, dass ein Dateiname nicht definiert ist, dass es sich um eine Bibliotheksdatei handelt und der Name der Datei leer ist. Die() sind String-Trennzeichen und der obere Teil des Operandenstapels enthält diese Zeichenfolge.

Sie haben leider nicht die gesamte Fehlermeldung zitiert, so dass ich nicht sagen kann, welche Version von Ghostscript Sie verwenden. Ich gehe davon aus, dass Sie Linux verwenden, weil Sie 'gs' verwendet haben. Sie sagen auch nicht, wo Sie die Version von Ghostscript haben, die Sie verwenden.

Sie können dem Ghostscript-Suchpfad Verzeichnisse hinzufügen, indem Sie den Schalter -I verwenden, aber das scheint hier nicht hilfreich zu sein, da Sie vermutlich immer noch nach einem leeren Namen suchen, was natürlich nicht der Fall ist gefunden.

Ich würde beginnen, indem Sie die genaue Befehlszeile, die Sie an exec gesendet haben, und versuchen, dass aus der Shell, wenn das funktioniert, dann können wir weiter fortfahren.

+0

danke. was ich benutze ist gs 9.20 auf window os. (Ich kopiert gswin32c in gs :)) – Mujiang

+0

und laden Sie die Kopie von der offiziellen Website https://ghostscript.com/download/gsdnld.html. irgendwelche Informationen, die Sie wollen? – Mujiang

+0

Nun, die Windows-Version von Ghostscript hat alle Ressourcen in die Binärdatei kompiliert, so dass es keine fehlende Bibliotheksdatei sein kann. Also zurück zu; 'drücke die Befehlszeile aus, die du an execommand übergibst, und versuche das über die Windows-Befehlsshell'. Wenn das Ihnen einen Fehler gibt, können Sie einen Link auf die Eingabedatei und die Befehlszeile und ich kann es versuchen. Wenn es dir keinen Fehler gibt, dann ist es etwas mit 'exec.Command' zu tun, mit dem ich dir nicht helfen kann. Oh, ich würde wahrscheinlich auch nicht '-q' verwenden, da das Unterdrücken von Informationen beim Debuggen nicht hilfreich ist. – KenS

Verwandte Themen