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

问题描述 投票:0回答:1

[我正在尝试在Windows 10计算机上使用Ghostscript v9.52,但是当我尝试将任何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:\Users\Work\Desktop>gswin64c -sDEVICE=pdfwrite -o myFile.pdf "C:\Program Files\gs\gs9.52\lib\viewjpeg.ps" -c Test-JPG.jpg viewJPEG
C:\Users\Work\Desktop>gswin64c -sDEVICE=pdfwrite -o out.pdf viewjpeg.ps -c "Test-JPG.jpg viewJPEG" -f 
C:\Users\Work\Desktop>gswin64c -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=output.pdf Test-JPG.jpg

到目前为止我尝试过的:

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

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

command-line jpeg ghostscript
1个回答
0
投票

Ghostscript是PostScript解释器,它还集成了将解释PDF文件的PostScript程序。就这样。 (当前)它不直接读取任何图像格式。

但是,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,因此它尝试以PostScript读取JPEG内容,这也就不足为奇了。

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

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

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

gswin64c -sDEVICE=pdfwrite -o myFile.pdf "C:\Program Files\gs\gs9.52\lib\viewjpeg.ps" -c "(Test-JPG.jpg) viewJPEG" -f

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

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

Ghostscript竭尽全力以确保允许在命令行上指定为输入或输出文件的任何文件are,但是如果要PostScript程序读取文件,则必须使用[ C0]在这种情况下是安全的,但我不建议这样做,否则您必须将文件添加到允许的文件读取列表中。

这在文档-dNOSAFER中有解释,向下滚动到SAFER以查看它。

© www.soinside.com 2019 - 2024. All rights reserved.