Ghostscript 设置 - 将任何 jpg 转换为 pdf 时出错



我正在尝试在Windows 9.52机器上使用Ghostscript v10,但是当我尝试将任何jpg文件转换为pdf时,我收到一个空白的pdf和此错误:

Error: /undefined in Test-JPG.jpg
Operand stack:
Execution stack:
%interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--
Dictionary stack:
--dict:738/1123(ro)(G)--   --dict:0/20(G)--   --dict:78/200(L)--
Current allocation mode is local
GPL Ghostscript 9.52: Unrecoverable error, exit code 1

我尝试了以下命令:

C:UsersWorkDesktop>gswin64c -sDEVICE=pdfwrite -o myFile.pdf "C:Program Filesgsgs9.52libviewjpeg.ps" -c Test-JPG.jpg viewJPEG
C:UsersWorkDesktop>gswin64c -sDEVICE=pdfwrite -o out.pdf viewjpeg.ps -c "Test-JPG.jpg viewJPEG" -f 
C:UsersWorkDesktop>gswin64c -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf Test-JPG.jpg

到目前为止我尝试过:

  • 尝试使用ghostscript合并两个PDF文件 - 没有问题,所以Ghostscript在某种程度上可以工作。
  • 尝试了不同的JPG文件 - 都给出相同的错误
  • 尝试在其他Windows程序中打开JPG文件 - 没有问题,所以文件本身应该没有任何问题

我找到的最接近的答案是这个问题,但是答案是上面的第二个命令,这对我不起作用。鉴于我尝试的所有jpg都会发生这种情况,我想知道在安装ghostscript时是否有未正确设置的内容?

Ghostscript是一个PostScript解释器,它还包含一个PostScript程序,该程序将插入PDF文件。就这样。它(目前)不直接读取任何图像格式。

但是,PostScript是一种编程语言,Ghostscript提供了一些辅助PostScript程序,它将读取一些图像格式。

您的第一个命令行运行 viewjpeg,ps 然后执行-c开关,这会导致命令行被读取为 PostScript 程序,直到下一个-f。"Test-JPG.jpg viewJPEG"不是有效的PostScript(PostScript语言或 ViewJPEG.ps 程序中没有名为Test-JPG.jpg的运算符或函数),因此它不起作用。

第二个命令行本质上是相同的,只是用"包装,所以它也不起作用。它也没有提供完全限定的 viewjpeg.ps 路径,因此可能无法找到 viewjpg.ps。

你的第三个命令行甚至不使用 viewjpeg.ps 所以它试图将JPEG内容读取为PostScript,这不出所料,这也不起作用。

如果您阅读 viewjpeg.ps 它实际上在评论中有一个示例用法:

% Usage example:
%   (jpeg-6/testimg.jpg) viewJPEG

不要注意文件名周围的 (),命令行中缺少这些。如果这样做:

gswin64c -sDEVICE=pdfwrite -o myFile.pdf "C:Program Filesgsgs9.52libviewjpeg.ps" -c "(Test-JPG.jpg) viewJPEG" -f

那么它可能会起作用。假设所有文件都在正确的位置。

但是,从版本9.50开始,Ghostscript的默认行为是SAFER,而不是NOSAFER。这意味着不允许PostScript程序(如 viewJPEG.ps)从磁盘访问任意文件。

Ghostscript 不遗余力地尝试确保允许在命令行上指定为输入或输出文件的任何文件,但是如果您希望 PostScript 程序读取文件,则必须使用在这种情况下安全的-dNOSAFER运行,但我不建议这样做,或者,您必须将文件添加到允许的文件读取列表中。

这在文档中进行了解释 此处向下滚动到更安全以查看它。

最新更新