仕事で必要になったのでチョコチョコスクリプト書いたメモ。
やること
tifは全てシングル。(複数画像がアーカイブされているマルチtifってのもあるのだ)
PDFは全て1ページだけで構成されている。
出力は上の2つを合わせた2ページのPDF。を任意のディレクトリに保存する
全てファイル名は一緒。元となるtifとPDFはそれぞれ任意のディレクトリにまとめて置いてある。
環境はこないだ作ったのと一緒の・・はず。
http://www.mokoaki.net/blogdata/2007/05/imagemagickrmagick.php
とりあえずこんな感じのスクリプトを書いてみる。
require 'kconv'
require 'RMagick'
tifdir = "C:/Documents and Settings/moko/デスクトップ/in1/".tosjis
pdfdir = "C:/Documents and Settings/moko/デスクトップ/in2/".tosjis
outdir = "C:/Documents and Settings/moko/デスクトップ/out/".tosjis
Dir::glob(tifdir + '*.tif').each{|tiffilename|
tiffilename = tiffilename.tosjis
pdffilename = pdfdir + File.basename(tiffilename, ".*") + '.pdf'
outfilename = outdir + File.basename(tiffilename, ".*") + '.pdf'
puts tiffilename
puts pdffilename
puts outfilename
puts "TifReadStart"
tifimg = Magick::ImageList.new(tiffilename)
puts "TifReadEnd"
puts "PdfReadStart"
pdfimg = Magick::ImageList.new(pdffilename)
puts "PdfReadEnd"
puts "ImgMergeStart"
outimg = tifimg + pdfimg
puts "ImgMergeEnd"
puts "PdfWriteStart"
outimg.write(outfilename)
puts "PdfWriteEnd"
puts "GC Start"
GC.start
puts "GC End"
}
するとこんなエラーを出しやがる。
read : Postscript delegate failed `C:/パス/xxx.pdf' (Magick::ImageMagickError)
Google先生に聞いてみたら
「GhostScript」が要るって事が分かったのでインスコしてみる。
今回インスコしたのは「gs854w32full.zip」ってヤツが最新版っぽい。
ネット上のいろんなトコでミラーされてるみたいなので適当にぐぐればおけ。
http://www.nsknet.or.jp/~tony/TeX/install/win/gs.htm#ghostscript
この「3」を参考にインスコした。
「Use Windows TrueType fonts for Chinese, Japanese and Korean」にチェックを入れた以外は特にいじってない。
ていうか
「Chinese, Japanese and Korean」
なんか いやだ
なんか「GSview」っていうやつの説明もあるけど、こっちはインスコしてない。
んで、その後実行してみると普通に出来た。コレだけ。
思いがけない効果としては、tif画像の出力が出来るようになってた。
もちろん2ページ入りのマルチtif。
まぁ今回はtif出力は関係ないし、画像サイズも大きくなってるっぽかったのであまり気にしてない。
そのうち必要になったら調べてみようかねぇ