それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

RubyのRmagickからPDFを分割したり、変換したり出来る

rubyのRMagickはImageMagickをラッパーで呼び出すので、rubyからもPDFを変換分割が出来そう。

require 'rubygems'
require 'RMagick'
pdf_imagelist =  Magick::ImageList.new("20101005095309.pdf")
pdf_imagelist.first.write('sample.jpg')

irbでの出力例

irb(main):004:0> image_list = Magick::ImageList.new "test.pdf"
=> [test.pdf PDF 591x732 591x732+0+0 DirectClass 8-bit 24mb,
test.pdf PDF 594x734 594x734+0+0 DirectClass 8-bit 24mb,
test.pdf PDF 590x731 590x731+0+0 DirectClass 8-bit 24mb,
(略
test.pdf PDF 597x732 597x732+0+0 DirectClass 8-bit 24mb]
scene=19


ちょっと重いけど、ちゃんと動いたね。


ただ、画像解像度が落ちちゃうのです。これは現在調査中。

Rmagickは

別途コンパイル済みパッケージをインストールし無いと動かないと思います。
インストールはこっちにまとめた→RMagick (imagemagick for ruby )のインストール(win/linux) - ブックマクロ開発に

結局バッチ処理させた

rubyのライブラリ内部で解決すると思ったのですが。解像度2476x3036だったのが590x731に落ちちゃったので、結局バッチでごりごり呼び出すことにした。何で出来ないかなー

dirname = 'C:\Documents and Settings\All Users\Documents\ScanSnap_PDF'
Dir.chdir dirname
files = Dir.glob '*.pdf' #PDFファイル名を一覧する
files.each{|filename|
working_dir = File.basename(filename, ".pdf")
Dir.mkdir working_dir unless FileTest.exists? working_dir
Dir.chdir working_dir
cmd = "\"C:\\Program Files\\gs\\gs9.00\\bin\\gswin32c.exe\" 
       -dSAFER -dBATCH -dNOPAUSE -sDEVICE=jpeg -r300
       -sOutputFile=#{working_dir}_%02d.jpg ..\\#{filename}"
`#{cmd}`
Dir.chdir dirname
}

あ、そういえば

MacBook Air 11インチ欲しい!