web-dev-qa-db-ja.com

ポストスクリプトファイル(Operaによって生成された)からページ数を確認するにはどうすればよいですか?

追記言語がわかりません。

私はbashで書かれた両面印刷エミュレーションシステムを持っています。最初に奇数ページを印刷し、次に偶数ページを印刷します。対応する偶数側がない最後の奇数ページを排出できるように、奇数ページ数があるかどうかを知る必要があります。また、レポートの目的でページ数を使用します。

これを正しく行う方法がわからなかったので、「%% Pages:」の後にページ数が続く「%% Pages:」を検索するポストスクリプトファイルの最後と、必要に応じて最初を調べるコードを作成しました。これは、Operaブラウザによって印刷されたファイルを除くほとんどすべてで機能します。

誰かがこの情報を取得する別の方法を提案できますか?

Postscriptファイルはかなり大きく、人間が読めないコンテンツがたくさんある傾向があるので、Operaから出てくるファイルに注ぐのにまだ多くの時間を費やしていません。

TIA

現在のコードは次のとおりです。

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

function ps_page_ct
2
Joe

次のGhostscriptコマンドは、PostScriptファイルのページを確実にカウントしますが、@ afrazierがコメントですでに述べているように、ファイルを完全に解釈(実行)する必要があるため、かなり遅くなる可能性があります。

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

残念ながら、生のPostscriptファイルでページを見つける簡単な方法はありません。それが理由です %%Pagesコンベンションが作成されました(Adobe Document StructuringConventions)。

ページを発行するためのコマンドはshowpageです。単純なケースでは、それらを数える必要があります。

ただし、このコマンドは関数の本体に埋め込むことができるため、Postscriptパーサーが必要です。

5
mouviciel

この小さなスニペットをどこかで見つけました。ドキュメントを非常に高速に処理し、ページ数を出力します。これは、ドキュメントが正しく生成されなかったためにexiftoolがこのメタデータ情報を印刷しない場合に役立ちます。

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