Ghostscript:堆栈下溢错误

时间:2015-08-20 12:35:12

标签: ghostscript

我正在尝试从相当大的PS生成PDF。

运行:

/usr/bin/ps2pdf -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dPDFSettings=/printer /home/sls/slspdf.tmp.8bcbd0365c30f4d287e416e8.ps

结果:

Error: /usr/bin/ps2pdf returned code 1: Error: /stackunderflow in --pop--
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1951   1   3   %oparray_pop   1950   1   3   %oparray_pop   1934   1   3   %oparray_pop   1820   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   1   1   5   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1186/1684(ro)(G)--   --dict:0/20(G)--   --dict:132/200(L)--   --dict:29/40(L)--
Current allocation mode is local
Last OS error: Not a directory
Current file position is 797649
GPL Ghostscript 9.15: Unrecoverable error, exit code 1

通过直接gs(没有ps2pdf包装器)抛出它也不会产生太多可用信息:

gs -sDEVICE=pdfwrite -o test.pdf - < /home/sls/slspdf.tmp.8bcbd0365c30f4d287e416e8.ps

输出:

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.
Can't find (or can't open) font file /usr/share/ghostscript/9.15/Resource/Font/NimbusMonL-Bold.
Can't find (or can't open) font file NimbusMonL-Bold.
Can't find (or can't open) font file /usr/share/ghostscript/9.15/Resource/Font/NimbusMonL-Bold.
Can't find (or can't open) font file NimbusMonL-Bold.
Querying operating system for font files...
Loading NimbusMonL-Bold font from /usr/share/fonts/default/Type1/n022004l.pfb... 4754536 3291634 8267744 6868788 1 done.
Loading NimbusMonL-Regu font from /usr/share/fonts/default/Type1/n022003l.pfb... 4797552 3426617 8463168 7042500 2 done.
Error: /stackunderflow in --pop--
Operand stack:

Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   --nostringval--   false   1   %stopped_push   1951   1   3   %oparray_pop   1950   1   3   %oparray_pop   1934   1   3   %oparray_pop   1820   1   3   %oparray_pop   --nostringval--   %errorexec_pop   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   1   1   5   --nostringval--   %for_pos_int_continue   --nostringval--   --nostringval--
Dictionary stack:
   --dict:1180/1684(ro)(G)--   --dict:0/20(G)--   --dict:132/200(L)--   --dict:29/40(L)--
Current allocation mode is local
Last OS error: Not a directory
GPL Ghostscript 9.15: Unrecoverable error, exit code 1

似乎唯一让我这样做的是物理地使输入文件更小......这当然不是一个非常可接受的解决方案。然而,我们可以编写这个脚本以生成几个“页面”的PDF输出,然后在第二遍中将它们附加在一起,如果这是最佳答案的话。有关根本原因的任何想法吗?

我看到关于Last OS error: Not a directory的一点,这只是最后一次最后一次操作系统错误,还是特别是从Ghostscript抛出的错误?似乎它是通用的,因为截断文件使它工作,但我不知道。

1 个答案:

答案 0 :(得分:1)

忘记上一次操作系统错误。

您的问题是您的PostScript程序有错误。 PostScript是一种基于堆栈的语言,它告诉您执行'pop'操作符以从堆栈中删除顶部元素,并且堆栈为空。

没有看到PostScript程序,我不能说更多。可能它在某种程度上被腐蚀了。