为什么这个 gs 命令在 --filename.pdf 上失败?

为什么这个 gs 命令在 --filename.pdf 上失败?

系统:Ubuntu 16.04 64位。代码来自这里

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=newfile.pdf badfile.pdf

输出:

用法:gs ... -- file.ps arg1 ... argn

预期输出:一个新的 .pdf 文件。

第二版

gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=newfile.ps badfile.pdf

与上面相同的输出。

拉斯克斯。我通过运行获得 GPL Ghostscript 编辑器gs。命令type -a gs给出gs is /usr/bin/gs.命令dpkg-query -s ghostscript | grep Version给出Version: 9.18~dfsg~0-0ubuntu2.gs我的系统中的 Ghostscript也是如此。


为什么gs命令失败?

答案1

gs 抱怨文件参数,例如---plaa---plaa.pdf因为它们看起来像长选项但不是。

解决方法:在文件名参数前面加上--选项表示没有更多选项,或使用路径名,例如./---plaa---plaa.pdf.

答案2

根据错误消息,您实际上并未运行ghostscript.在 ubuntu 16.04 上:

# cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04 LTS"

使用 Ghostscript 9.18:

# dpkg-query -s ghostscript | grep Version
Version: 9.18~dfsg~0-0ubuntu2

如果我运行您的示例命令,我会收到一条标准的 Ghostscript 错误消息,如下所示:

GPL Ghostscript 9.18 (2015-10-05)
Copyright (C) 2015 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Error: /undefinedfilename in (badfile.pdf)
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push
Dictionary stack:
   --dict:1196/1684(ro)(G)--   --dict:0/20(G)--   --dict:78/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.18: Unrecoverable error, exit code 1

我怀疑gs你的$PATH.需要检查的一些事项:

  • 如果您只是gs自行运行,您会发现自己出现GS>提示吗?

    # gs
    GPL Ghostscript 9.18 (2015-10-05)
    Copyright (C) 2015 Artifex Software, Inc.  All rights reserved.
    This software comes with NO WARRANTY: see the file PUBLIC for details.
    GS>
    
  • type -a gs显示gs is /usr/bin/gs还是其他什么?

  • 显式运行/usr/bin/gs而不只是gs导致不同的行为吗?

相关内容