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

时间:2014-12-13 00:48:32

标签: pdf ghostscript

我正在尝试使用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以避免这个红鲱鱼。 (但这就是一些评论/答案所指的。)]

2 个答案:

答案 0 :(得分:6)

这对我有用......

gs \
   -sDEVICE=pdfwrite \
   -dCompatibilityLevel=1.4 \
   -dPDFSETTINGS=/printer \
   -dNOPAUSE \
   -dQUIET \
   -dBATCH \
   -sOutputFile=output.pdf \
    input.pdf

由-kp编辑 -

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

  1. -SOutputFile=...不起作用
  2. -sOutputFile=...是正确的语法。 (Ghostscript命令行参数区分大小写!)
  3. 此外,使用最新版本的Ghostscript,您现在可以使用-o output.pdf而不是长版本。 -o ...也会自动且隐含地设置-dBATCH -dNOPAUSE参数。因此,编写此命令的最短方法是:

    gs                          \
       -sDEVICE=pdfwrite        \
       -dCompatibilityLevel=1.4 \
       -dPDFSETTINGS=/printer   \
       -q                       \
       -o output.pdf            \
        input.pdf
    

答案 1 :(得分:0)

可能只是混淆了输入和输出文件名。我之前已经做过并得到了同样的信息。这很容易,因为输出文件命令在输入文件之前。