2009年8月18日火曜日

PDFファイルをページ毎にJPEG化するスクリプト

ここのところ、ずっと更新をサボリ気味で申し訳ありません。更に、今回は純粋なMacネタでもありません...。ただ、便利なスクリプトを知ったので、自分用の備忘録として残して置こうと思います。

PDFはとても便利なフォーマットではあるのですが、ちょっと使いたいな〜というケースでは重過ぎると感じる事もあります。そんな時は、PDFファイルを、画像ファイルに変換してしまった方が便利かもしれません。

Macで、PDFから画像ファイルに変換する一番簡単な方法は、プレビュー.appを利用する事だと思います。具体的には、メニューの「ファイル」→「別名で保存...」をクリックし、表示されたダイアログの「フォーマット」を「JPEG」や「PNG」など画像形式を選択して保存すればOKです。


↑プレビュー.appでもPDFから画像ファイルに変換する事ができる


と、プレビュー.appはとても便利なのですが、表示しているページしか画像化できないという制限(?)があり、複数ページあるPDFの画像ファイル化は、結構手間が掛かってしまいます...。そこで、次のシェルスクリプトを使うと、複数ページあるPDFもページ毎にまとめて画像ファイル化する事が可能です。ちなみに情報源となったのはコチラのページです。

#!/bin/bash

if [ $# -ne 2 ];then
echo “Usage: $0 target.pdf outfile”
exit
fi

TARGET=$1
OUTFILE=$2

gs \
-dSAFER \
-dBATCH \
-dNOPAUSE \
-sDEVICE=jpeg \
-r150 \
-dTextAlphaBits=4 \
-dGraphicsAlphaBits=4 \
-dMaxStripSize=8192 \
-sOutputFile=${OUTFILE}_%d.jpg \
${TARGET}

このスクリプトを「pdf2jpg.sh」等と保存して、「pdf2jpg hoge.pdf fuga」と実行すると、PDFファイル「hoge.pdf」から、ページ毎に「fuga_1.jpg」「fuga_2.jpg」...という画像ファイルが生成されます。実行例はこんな感じです。

$/bin/bash pdf2jpg.sh hoge.pdf fuga
GPL Ghostscript 8.64 (2009-02-03)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 2.
Page 1
Page 2
$

なお、このスクリプトでは、「Ghostscript」を使って画像に変換しているので、事前にインストールしておく必要があります。(MacPortsを導入済みの環境では、「sudo port install ghostscript」でOKです)


最後に、soundscape outさんも「PDF は、PNG か JPEG にする」という記事を書かれていて、参考になりました。ここで紹介されていた「ImageOptim」を試してみたところ、上記スクリプトで生成された画像ファイルも、一瞬で7〜8%程のスリム化する事ができました。という訳で、画像最適化ツールを組み合わせて利用すると、更に快適に利用できるかもしれませんね。

1 件のコメント:

グッチー さんのコメント...

役立ちました。ありがとう!
JQueryに組み込むブックリーダーを作ろうとしているのですが、PDFから画像を作るツールやクラウドサービスをネットで探していました。