Ghostscript:"不可恢复的错误:setpagedevice中的undefinedfilename"

ema*_*cer 4 pdf ghostscript

我正在尝试使用ghostscript压缩pdf文件,如下所示:

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.4 -dNOPAUSE -dBATCH  -sOutputfile=output.pdf input.pdf 
Run Code Online (Sandbox Code Playgroud)

我过去成功完成了这项工作,但由于某些原因,它现在无法运作.我收到以下错误:

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--
Run Code Online (Sandbox Code Playgroud)

[编辑:我将输入错误从-SOutputFile修改为-sOutputFile以避免这个红鲱鱼.(但这就是一些评论/答案所指的.)]

Spo*_*ock 6

这对我有用......

gs \
   -sDEVICE=pdfwrite \
   -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/printer \
   -dNOPAUSE \
   -dQUIET \
   -dBATCH \
   -sOutputFile=output.pdf \
    input.pdf
Run Code Online (Sandbox Code Playgroud)

由-kp-编辑

明确地拼写出来(并重新重复KenS在评论中写的内容):

  1. -SOutputFile=... 不起作用
  2. -sOutputFile=...是正确的语法.(Ghostscript命令行参数区分大小写!)

此外,使用最新版本的Ghostscript,您现在可以使用-o output.pdf而不是长版本.-o ...还自动且隐含地设置-dBATCH -dNOPAUSE参数.因此,编写此命令的最短方法是:

gs                          \
   -sDEVICE=pdfwrite        \
   -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/printer   \
   -q                       \
   -o output.pdf            \
    input.pdf
Run Code Online (Sandbox Code Playgroud)