我正在尝试使用ghostscript压缩pdf文件,如下所示:
gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH -sOutputfile=output.pdf input.pdf
我过去成功完成了这项工作,但由于某些原因,现在它无效。我收到以下错误:
GPL Ghostscript 9.15 (2014-09-22)
Copyright (C) 2014 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
**** Unable to open the initial device, quitting.
Unrecoverable error: undefinedfilename in setpagedevice
Operand stack:
true --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval-- --nostringval--
[编辑:我将输入错误从-SOutputFile修复为-sOutputFile以避免这个红鲱鱼。 (但这就是一些评论/答案所指的。)]
答案 0 :(得分:6)
这对我有用......
gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/printer \
-dNOPAUSE \
-dQUIET \
-dBATCH \
-sOutputFile=output.pdf \
input.pdf
由-kp编辑 -
明确地拼写出来(并重新重复KenS在评论中写的内容):
-SOutputFile=...
不起作用-sOutputFile=...
是正确的语法。 (Ghostscript命令行参数区分大小写!)此外,使用最新版本的Ghostscript,您现在可以使用-o output.pdf
而不是长版本。 -o ...
也会自动且隐含地设置-dBATCH -dNOPAUSE
参数。因此,编写此命令的最短方法是:
gs \
-sDEVICE=pdfwrite \
-dCompatibilityLevel=1.4 \
-dPDFSETTINGS=/printer \
-q \
-o output.pdf \
input.pdf
答案 1 :(得分:0)
可能只是混淆了输入和输出文件名。我之前已经做过并得到了同样的信息。这很容易,因为输出文件命令在输入文件之前。