N ページの PDF から N 個の jpeg 画像を取得する

N ページの PDF から N 個の jpeg 画像を取得する

N ページで構成される PDF があります。この PDF を N 個の jpeg 画像に変換したいと考えています (コマンド ラインで、Php、Java、その他のプログラミング言語は使用しません)。

私は GHOSTSCRIPT でこれを実行しようとしていますが、GS が取得する出力は私が求めている出力とはまったく異なります。

例:

gs \
  -sDEVICE=jpeg \
  -dNOCACHE \
  -dDEVICEHEIGHTPOINTS=72 -dDEVICEWIDTHPOINTS=72 \
  -r300 \
  -g800x600 \
  -dFIXEDMEDIA \
  -dPDFFitPage \
  -sOutputFile=output/%d.jpg \
   mypdf.pdf 

800x600 解像度の N 個の jpeg 画像を生成しますが、PDF ページが切り取られて収まらないようです。

N ページの PDF から N 個の jpeg 画像を簡単に取得するにはどうすればよいでしょうか (コマンド ラインから)?

答え1

alesdario が使用したコマンドラインは次のことを行います。

  1. Ghostscript に、出力サイズとして 800 x 600 ピクセルを使用するように指示します。
  2. Ghostscript に 300dpi (インチあたりのドット数) の解像度を使用するように指示します。
  3. Ghostscript に 72 デバイス ポイントの出力次元を使用するように指示します。

これら 3 つを同時に動作させることはできません。2 つを同時に実行すると、3 つ目と矛盾することになるからです。

300dpi では、800 x 600 のキャンバスの物理的な寸法は 2.33 インチ x 2 インチ (インチ) になります。これは、元の PDF ページ サイズ (おそらく) よりもはるかに小さくなります。

「N ページの PDF から N 個の jpeg 画像を取得するだけです (コマンドラインから)」このコマンドを使用します:

 gs \
   -sDEVICE=jpeg \
   -o output/%d.jpg \
    mypdf.pdf

これは最も単純な呼び出しであり、何も切り取られず、次の Ghostscript のデフォルト設定が使用されます。

  • 画像解像度: JPEG出力の場合は72dpi
  • 出力画像の寸法: これはそれぞれの PDF ページ サイズに従います (ただし、Ghostscript は PDF が 720dpi を使用すると想定します)。

NページのPDFからN個のJPEG画像を取得するにはあらかじめ定義された解像度とあらかじめ定義された画像寸法で-r、自分で計算して、それに応じてと の値を設定する必要が-gあります。たとえば、JPEG に 200 dpi が必要な場合 (PDF ページ サイズは ISO A4 [595x842 pt] です)。つまり、切り取りを-r200 -g1652x2338避けたい場合は、コマンドラインに を追加する必要があります。これにより、Ghostscript が再サンプルすべてのページとそこに含まれるオブジェクトを新しい解像度に変更します。

答え2

試すイメージマジック必要なコマンドは次のようになります:

$ convert -density 400 my.pdf my.jpeg

関連情報