6

PDFの特定のページを次のようにPNGに変換できますが:

gs \
  -dSAFER \
  -dBATCH \
  -dNOPAUSE \
  -sDEVICE=png16m \
  -dGraphicsAlphaBits=4 \
  -sOutputFile=gymnastics-20.png \
  -dFirstPage=20 \
  -dLastPage=20 \
   gymnastics.pdf

Ghostscript の JOBSERVER モードを使用して、毎回 Ghostscript を起動するコストを発生させずに複数の変換を処理できるかどうか疑問に思っています。

から: http://pages.cs.wisc.edu/~ghost/doc/svn/Use.htm

-dJOBSERVER

\004 (^D)通常はジョブ サーバーで実行される Adob​​e PS インタープリターとの互換性のために使用される新しいカプセル化されたジョブを開始するように定義します。ジョブ サーバーは常に保存レベルで入力 PostScript を実行するため、が指定されている場合、-dNOOUTERSAVEスイッチは無視されます。 -dJOBSERVER-dNOOUTERSAVE

これには、入力が stdin からのものである必要もあります。そうしないと、エラーが発生します ( Error: /invalidrestore in --restore--)。

使用例は次のとおりです。

   gs ... -dJOBSERVER - < inputfile.ps
                -or-
   cat inputfile.ps | gs ... -dJOBSERVER - 

注: TBCP ^D(Tagged Binary Communication Protocol) に依存する一部の PostScript プリンターで^Dは、ストリーム入力データで EOF を通知するために帯域外が発生する可能性があるため、 stdin ではファイル終了アクションにはなりません。これは、flushfileやなどの stdin に対する直接的なファイル アクションが、ストリーム内closefileを超えたデータの処理に影響を与えることを意味します。^D

アイデアは、ghostscript をインプロセスで実行することです。スクリプトは、pdf の特定のページに対する要求を受け取り、ghostscript を使用して指定された画像を生成します。毎回新しい Ghostscript プロセスを開始したくありません。

4

1 に答える 1

2

では、次のようなコマンドを単純に使用できないのはなぜですか。

gs \
  -sDEVICE=png16m \
  -dGraphicsAlphaBits=4 \
  -o pngimages_%03d.png \
   \
  -dFirstPage=20 \
  -dLastPage=20 \
   gymnastics.pdf
   \
  -dFirstPage=3 \
  -dLastPage=3 \
   sports.pdf
   \
  -dFirstPage=33 \
  -dLastPage=33 \
   athletics.pdf
   \
  -dFirstPage=4 \
  -dLastPage=4 \
   lazyness.pdf

これにより、一度に複数の PDF から複数の PNG 画像が生成されます。

于 2011-06-06T20:32:24.227 に答える