#!/usr/bin/perl # # dcnote-ps2gif : # # ps file を scan image gif に変換する. # # ●Usage : dcnote-ps2gif [-d output_dir] hogehoge.ps # # ●作成されるファイル # # hogehoge/ : 作業ディレクトリ. # 001.gif... : gif ファイル. # # ●必要な小道具 # convert または netpbm(netpbm-nonfree) # # # 履歴 1998/11/24 竹広真一 # 1999/05/10 林祥介 # 1999/05/13 小高正嗣; perl スクリプトに変更 # 1999/07/19 小高正嗣 # 1999/10/27 竹広真一; カラーに対応. pgm -> pnm # 1999/12/20 杉山耕一朗; 注釈を加える # ###################################################################### # # コマンド等の指定 # $CONVERT='/usr/bin/X11/convert' ; $PPMTOGIF='/usr/bin/ppmtogif' ; $GIFDENSITY="100x100" ;# gif image の大きさ指定, convert での解像度指定 $DESTDIR='.' ; # 生成ファイル格納ディレクトリ(初期値) # オプション: 生成物置場の指定 ## @ARGV[0] が - で始まらない場合はループを抜ける. while (@ARGV) { last unless ($ARGV[0] =~ /^-/); $_ = shift; if (/^-d/) { $DESTDIR = shift; next; } die "unknown option $_"; } # 前処理: # 引数に file 名が与えられないとエラーを返す. # die "Usage: dcnote-ps2gif [-d output_dir] [ps file].\n" if @ARGV == 0 ; # メインループ; # $DESTDIR がなければ作成する. # サブルーチン makegif を呼ぶ. # foreach $file (@ARGV) { $file =~ s/.ps$// ; mkdir $DESTDIR, 0777 unless -d $DESTDIR ; &makegif($file) ; } exit 0; # サブルーチン; # gif ファイルを生成する. # sub makegif{ local($file) = @_ ; # ローカル変数の定義 $ps ="$file.ps" ; # ps ファイルがない場合, サブルーチンを抜ける. if ( ! -e $ps ) { print "Warning: $ps not found.\n" ; return ; } # 各ページの gif イメージ作成 # gif ファイル名は「英数字 3 つ + 拡張子」で与える. print "$CONVERT $ps...\n" ; system ("$CONVERT -density $GIFDENSITY $ps %03d.pnm") ; opendir(DIR, ".") ; @temp = readdir(DIR) ; @temp = grep(/^[0-9][0-9][0-9]\.pnm$/, @temp); foreach $base (@temp) { $base =~ s/.pnm$// ; system ("$PPMTOGIF $base.pnm > $base.gif") ; } closedir(DIR) ; # 片付けと格納 print "clean *.pnm\n" ; system ("rm [0-9][0-9][0-9].pnm") ; system ("mv [0-9][0-9][0-9].gif $DESTDIR") ; }