2012-02-08 68 views
0

我从shell运行的ghostscript命令到PostScript文件转换为JPG,像这样:Ghostscript故障保护机制?

gs -dBATCH - dSAFER -dNOPAUSE -sDEVICE=jpeg -sOutputFile=out.jpg source.ps 

大部分能正常工作的时间,但偶尔一个坏文件将导致其挂起。

因为我对GhostScript并不期待,所以我不能说是否有任何内置的故障安全机制可以防止它失败,或者至少让它以更优雅的方式失败(现在我有以杀死进程)

谢谢

+0

我拿出了python标签。我在这里看不到python。 – 2012-02-08 08:00:58

+1

标签说postscript,但例子显示pdf:这是什么?! – 2012-02-10 00:20:19

+0

@luserdroog:对不起,这是一种类型。固定。 – Goro 2012-02-17 18:51:06

回答

2

对于那些不好的文件,我建议用-dNOTRANSPARENCY和/或-dNOINTERPOLATION尝试它们。禁用透明度(如果它有所作为)可能会导致输出不正确,但是它会提示您是否发现了错误或缓慢的文件。透明度混合和图像插值都可以轻松消耗大量CPU时间和内存。

您可能会尝试让它在一夜之间运行,再次试图确定这是否为错误。

另外,如果你不这样做,你可以考虑升级到最新版本(9.05),我们已经有些固定在过去的几个版本中存在的一些问题,并提高性能。

最后,如果你有,你可以分享一个例子,在Ghostscript Bugzilla

顺便与示例举报,在传统的“服务器”的配置通常依赖于一个后记无限循环使用PostScript RIP - 在“服务器循环“通常在Postscript中实现。

Chris

1

PostScript是一种完全通用的编程语言。因此,PostScript程序(如任何其他完整编程语言中的程序)可能陷入无限循环,以及以其他常见方式出错。停止定理证明,通常,不可能预测给定的程序是否会陷入循环中,或者不是纯粹从某个自动分析(除了实际运行它)之外。

防止挂起的唯一方法是对PostScript程序的执行施加某种任意时间限制,并在超过该时间时终止Ghostscript进程。

+0

但是该示例显示了一个pdf。所有循环展开。 – 2012-02-08 08:03:14

+0

那你为什么要问关于PostScript? – 2012-02-09 23:56:16