2012-02-08 46 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