2

Я не знаю язык постскриптума.

У меня есть система эмуляции дуплексной печати, написанная на bash. Сначала печатаются нечетные страницы, а затем четные страницы. Он должен знать, есть ли нечетное количество страниц, чтобы он мог извлечь последнюю нечетную страницу, у которой нет соответствующей четной стороны. Он также использует количество страниц для отчетности.

Я не знал, как сделать это правильно, поэтому я написал код, который просматривает конец и, если необходимо, начало файла postscript, ищущего «%% Pages:», за которым следует число страниц. Это работает практически на всем, кроме файлов, напечатанных браузером Opera.

Кто-нибудь может предложить другой способ получить эту информацию?

Файлы Postscript, как правило, довольно большие и содержат много нечитаемого человеком контента, поэтому я еще не потратил много времени на просмотр тех, что появляются в Opera.

ТИА

Текущий код по адресу:

http://sourceforge.net/projects/duplexpr/

function ps_page_ct

3 ответа3

5

Следующая команда Ghostscript будет надежно подсчитывать страницы в вашем файле PostScript, но она может быть довольно медленной, потому что требует полной интерпретации (запуска) файла, как @afrazier уже указывало в комментарии:

gs \
 -o /dev/null \
 -sDEVICE=bbox \
  input.ps 2>&1 \
| grep HiResBoundingBox \
| wc -l
5

К сожалению, не существует простого способа поиска страниц в необработанном файле Postscript. Вот почему было создано соглашение %%Pages (Соглашения о структурировании документов Adobe).

Команда для выдачи страницы - showpage . В простых случаях их просто нужно считать.

Но эта команда может быть встроена в тело функции, и тогда вам понадобится анализатор Postscript.

2

Я нашел этот небольшой фрагмент где-то, он очень быстро обработает документ и распечатает количество страниц. Это может помочь, если exiftool не печатает эту информацию метаданных, потому что документ не был сгенерирован правильно:

gs -dNODISPLAY -dBATCH -dNOPAUSE -o /dev/null source|grep -P '^Page'|wc -l

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .