我正在从shell运行ghostscript命令将postscript文件转换为JPG,如下所示:
gs -dBATCH - dSAFER -dNOPAUSE -sDEVICE=jpeg -sOutputFile=out.jpg source.ps
大多数时候这种方法很好,但偶尔会有一个坏文件导致它挂起。
由于我不是GhostScript的期望,我不能说是否有任何内置的故障保护机制可以防止它失败,或者至少让它以更优雅的方式失败(现在我必须杀死这个过程)
由于
答案 0 :(得分:2)
在那些坏文件上,我建议使用-dNOTRANSPARENCY和/或-dNOINTERPOLATION来尝试它们。禁用透明度,如果它有所不同,可能会导致输出不正确,但它会给你一个关于你是否发现错误或文件速度缓慢的提示。透明度混合和图像插值都是容易消耗大量CPU时间和内存的区域。
您可以尝试让它在一夜之间运行,再次尝试确定这是否是一个错误。
另外,如果您还没有这样做,可以考虑升级到最新版本(9.05),我们已经修复了一些问题,并在最近几个版本中有所改进。
最后,如果您有一个可以共享的示例,请使用Ghostscript Bugzilla
上的示例进行报告顺便说一下,在传统的“服务器”配置中使用Postscript RIP通常依赖于Postscript无限循环 - “服务器循环”通常在Postscript中实现。
克里斯
答案 1 :(得分:1)
PostScript是一种完全通用的编程语言。因此,PostScript程序,如任何其他完整编程语言中的程序,可能会陷入无限循环,并且在所有其他常见方式中出错。 Halting定理证明,一般来说,不可能预测一个给定的程序是否会陷入一个循环,或者不是纯粹来自它的一些自动分析(除了实际运行它)。
防止挂起的唯一方法是对PostScript程序的执行施加某种任意的时间限制,并在超过该时间时终止Ghostscript进程。