#!/bin/bash
#
#= pdftopng.sh -- PDF 講演資料から PNG 画像を作成する(GFD seminar 用).
#
MAINTAINERS="Taichi KITAMORI, Yasuhiro MORIKAWA"
PACKAGE_NAME="dcreal"
URL='http://www.gfd-dennou.org/library/cc-env/dcreal'

CVSTAGNAME='$Name: dcreal-0_3_5-1 $'
CVSDATE='$Date: 2006/03/30 09:30:45 $'
CVSREVISION='$Revision: 1.4 $'
#
#
#== 概要
#
# このコマンドによって PDF から作成された PNG 画像は ./img-web (デフォ
# ルト: 幅 700) に作成される.  (オプション指定で ./img-real (320x240) 
# にも作成する). これらのディレクトリがない場合は作成する. PNG 画像の
# ファイル名は 001.png から通し番号でついており, dcreal に対応した名前
# になっている.
#
#
#== 使用法
#
#     $ ./pdftopng.sh pdffile
#
#       -h, --help   print this message
#
#== DEPENDANCE
#
# このスクリプトは pdftoppm, convert コマンドがないと動きません.  これ
# らのコマンドを利用するには, 以下のソフトウェアをインストールする必要
# があります.
#
#   * Xpdf        ((<URL:http://www.foolabs.com/xpdf/>))
#   * ImageMagick ((<URL:http://www.imagemagick.org/>))
#
#== NOTE
#
# このスクリプトは PDF → PPM → PNG と 2 段階の画像変換を
# 行っている. PDF → PPM の変換には Xpdf の pdftoppm を, PPM → PNG
# の変換には ImageMagick の convert を用いている.
#
#
#== HISTORY
#
#These entries is generated by CVS automatically.
#So don't add new information manually.
#(But please adjust old log format to latest log format manually,
#if format gap between them causes).
#
#$Log: dcreal-pdftopng.sh,v $
#Revision 1.4  2006/03/30 09:30:45  morikawa
#* ちょっとだけ無駄を排除.
#
#Revision 1.3  2006/03/30 03:49:41  morikawa
#* 依存プログラムの動作チェック機構を追加.
#* バージョンナンバーを表記するよう修正.
#
#Revision 1.2  2006/03/29 16:22:39  morikawa
#* ヘルプメッセージに URL と CVS のタグ名も出力するように変更.
#
#Revision 1.1  2006/03/29 15:56:09  morikawa
#* PDF から PNG 画像 (001.png, 002.png, ...) を簡単に作成する
#  北守太一氏作成シェルスクリプト. PDF の講演資料をビデオと合わせて
#  Web 上に公開するための画像変換ツール.
#
#Original Version 2005/11/28 21:08:33 kitamo
#* 北守君によって作成
#
######################################################################
#
#== Settings
#
#=== User Settings

IMGWEBDIR='./img-web'
IMGREALDIR=''
#IMGREALDIR='./img-real'

IMGWEBSIZE='700x1200'
IMGREALSIZE=''
#IMGREALSIZE='700x1200'

# End Settings
######################################################################

######################################################################
#== Replace CVS keywords

UPDATE=`echo ${CVSDATE} | sed 's/\$\w\+: //' | sed 's/\$$//'`
VERSION=`echo ${CVSREVISION} | sed 's/\$\w\+: //' | sed 's/\$$//'`

PACKAGE_VERSION=`echo ${CVSTAGNAME} | sed 's/\$\w\+: //' | sed 's/\$$//'`
PACKAGE_VERSION=`echo ${PACKAGE_VERSION} | sed "s/${PACKAGE_NAME}-//"`
PACKAGE_VERSION=`echo ${PACKAGE_VERSION} | sed 's/_/./g'`

if [ X"${PACKAGE_VERSION}" = X"" ]; then
    PACKAGE_VERSION='(Latest CVS version)'
fi

######################################################################

pdftopnghelp(){

    cat <<EOF

  `basename $0`: ${PACKAGE_NAME} ${PACKAGE_VERSION}
    <URL: ${URL}>
    Copyright: Copyright (C) 2001-2006 GFD Dennou Club

  `basename $0` makes PNG files from a PDF file (for GFD seminar).
  Created PNG files are located in

EOF

if [ ! X"${IMGWEBDIR}" = X"" ]; then
    cat <<EOF
    ${IMGWEBDIR} (size: ${IMGWEBSIZE})
EOF
fi

if [ ! X"${IMGREALDIR}" = X"" ]; then
    cat <<EOF
    ${IMGREALDIR} (size: ${IMGREALSIZE})
EOF
fi

    cat <<EOF

  Usage:
    `basename $0` [OPTIONS]

  Options
       -h,-H: print this message

EOF

  pdftopngprintversion
}

pdftopngprintversion(){
    cat <<EOF
  `basename $0` Version ${VERSION},
  Last Update: ${UPDATE}

  ${MAINTAINERS}
    All Right Reserved.

EOF
}

# 引数のチェック
if [ X"$1" = X"" ]; then
    pdftopnghelp
    exit 1
fi

# プログラムの動作チェック

if ! which pdftoppm > /dev/null 2>&1 ; then
    cat <<EOF

  Error: `basename $0` depends "pdftoppm"
         Please install Xpdf <http://www.foolabs.com/xpdf/>

EOF
    exit 1
fi

if ! which convert > /dev/null 2>&1 ; then
    cat <<EOF

  Error: `basename $0` depends "convert"
         Please install ImageMagick <http://www.imagemagick.org/>

EOF
    exit 1
fi


# PDF から ppm ファイルを作成 (pdftoppm コマンド利用)

echo "convert pdf to ppm"
pdftoppm $1 tmp

# ディレクトリのチェック. ない場合は作る.

dirs=${IMGWEBDIR} ${IMGREALDIR}
for dir in ${dirs}
do
  until test -d $dir
  do
    echo "create directory $dir"
    mkdir $dir
  done
done

i=1
for fname in `ls tmp-??????.ppm` 
do
  newname="`printf \%03d $i`.png"
  echo "convert $fname $newname"
  if [ ! X"${IMGWEBDIR}" = X"" ] &&
      [ ! X"${IMGWEBSIZE}" = X"" ] ; then
      convert -resize ${IMGWEBSIZE} $fname ${IMGWEBDIR}/$newname
  fi

  if [ ! X"${IMGREALDIR}" = X"" ] &&
      [ ! X"${IMGREALSIZE}" = X"" ]; then
      convert -resize ${IMGREALSIZE} $fname ${IMGREALDIR}/$newname
  fi
  i=`expr $i + 1`
done

echo "rm tmp-*.ppm"
rm tmp-*.ppm
