民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS Yet Another "PDFを画像ファイルにするツール"

<<   作成日時 : 2008/01/16 23:24   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

Adobe Reader で PDF ファイルを開いて、必要な範囲をスナップショットツールで選択してクリップボードにコピーし、Windows付属のペイントに貼り付けて名前をつけて保存、などといちいちやってられないくらい、大量のPDFを処理しなければならないような場面が、時折ある。
このような場合、バッチ処理で便利なのが、ImageMagick だ。GhostScript をインストールしておけば、ImageMagick の convert ユーティリティで PDF を他の画像形式、例えば、PNG などに変換できる。コマンドラインツールなので、バッチ処理も楽々。なのだが、この ImageMagick を使った PDF の処理は、異様に遅いという問題がある。
案件によっては処理速度が問題にならないこともある。私もこれまでは、会社から帰る直前にバッチファイルで ImageMagick を走らせ、翌朝出社すると、画像ファイルがたくさん出来上がっているというような使い方で、事なきを得てきた。
それが、今日、どうしても短時間で処理しなければいけない案件がでてきて困った。
まず、頭にひらめいたのは、このブログでも何度も紹介している SumatraPDF Viewer。これのソースを改造してどうにかできないかと思った。で、調べると、SumatraPDF Viewer は PDF のレンダリングに MuPDF というライブラリを使っているらしい(というか、これは前から知っていた)。じゃあ、その MuPDF を使用して簡単なユーティリティを作ってしまえるかも知れないと思ったら、何のことはない。既にそのようなユーティリティが存在していたのだ。MuPDF の公式サイト内に。

http://ccxvii.net/apparition/

ここで apparition というツールをダウンロードすると、同じアーカイブ内に pdftool.exe というコマンドラインツールがついてくる。こいつでもって、

pdftool draw -o out%%0.3d.pnm hoge.pdf 1-3

などとやると、hoge.pdf の1ページ目から3ページ目までが、それぞれ、out000.pnm out001.pnm out002.pnm というファイル名の ppm 形式の画像ファイルとして取り出される。
こいつを ImageMagick で PNG に変換してやれば、ghostscript 経由よりもはるかに高速に ONG ファイルを得ることができる。 ざっと3倍くらいのスピードだろうか。

ただし、この pdftool.exe、処理する PDF ファイルによっては、なぜか例外を発生して機能を停止してしまう。エラーで落ちてくれればいいのに、例の Windows の「このエラーを Microsoft に報告しますか?」のダイアログが出てしまうのだ。誰かが OK か キャンセル をクリックしないと処理が先に進まない。これでは、会社の帰りがけにバッチを走らせて無人走行させておくというような技が使えない。
まあ、今のところ、目の前で走らせてもいいくらいの十分な実行速度が得られているので、かまわないのだが。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
Yet Another "PDFを画像ファイルにするツール" 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる