2012-02-08 3 views
0

Я бегу команду Ghostscript из оболочки, чтобы преобразовать файл постскриптума в JPG, так как:Ghostscript отказоустойчивый механизм?

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

Большую часть времени это работает отлично, но иногда плохой файл приведет к зависанию.

Как я не ожидаю в GhostScript, я не могу сказать, есть ли встроенные отказоустойчивые механизмы, которые могут помешать ему сбой или, по крайней мере, сделать его неудачным изящным образом (прямо сейчас у меня есть чтобы убить процесс)

Благодаря

+0

Я достал бирку python. Здесь я не вижу питона. –

+1

Теги говорят постскриптум, но пример показывает pdf: что это ?! –

+0

@luserdroog: К сожалению, это был тип. Исправлена. – Goro

ответ

2

В этих плохих файлах я предлагаю попробовать их с помощью -dNotRANSPARENCY и/или -dNOINTERPOLATION. Отключение прозрачности, если это имеет значение, скорее всего, приведет к неправильному выводу, , но, это даст вам подсказку о том, нашли ли вы ошибку или медленный файл. Смешивание прозрачности и интерполяция изображений - это обе области, которые могут легко потреблять много процессорного времени и памяти.

Возможно, вы попробуете оставить его на ночь, снова, пытаясь установить, является ли это ошибкой или нет.

Кроме того, если вы еще этого не сделали, вы можете рассмотреть возможность обновления до последней версии (9.05), мы исправили ряд проблем и несколько улучшили производительность в последних выпусках.

Наконец, если у вас есть пример вы можете поделиться, сообщить об этом на примере в Ghostscript Bugzilla

Parenthetically, используя Postscript RIP в традиционной конфигурации «Сервер» обычно опирается на бесконечный цикл Postscript - «сервер цикл "обычно выполняется в Postscript.

Chris

1

PostScript является полностью язык программирования. Таким образом, программы PostScript, такие как программы на любом другом полном языке программирования, могут застревать в бесконечных циклах, а также ошибаться во всех других обычных способах. Теорема о приостановлении доказывает, что, как правило, невозможно предсказать, будет ли заданная программа застревать в цикле или не просто из какого-либо автоматического ее анализа (кроме собственно ее запуска).

Единственный способ защитить себя от зависаний - наложить какое-то произвольное временное ограничение на выполнение программы PostScript и убить процесс Ghostscript, когда это время будет превышено.

+0

Но пример показывает pdf. Все петли развернуты. –

+0

Тогда почему вы спрашиваете о PostScript? –