制作したシステムやコンテンツにレイアウトの崩れがないかざっくりと効率よくみるために、CasperJSやPhantomJSでまとめてスクリーンショットを撮ることがあります。
それらの結果の閲覧効率を上げたり、エビデンスとして他の誰かに共有するためにひとつのPDFにしたいケースがあるためシェルスクリプトを作成しました。
#!/bin/sh
###########################################
# Convert PNG files to one PDF
###########################################
CURRENT_DIR=$(cd $(dirname $0);pwd)
TMP_PDF1=${CURRENT_DIR}/tmp1.pdf
TMP_PDF2=${CURRENT_DIR}/tmp2.pdf
OUTPUT_PDF=${CURRENT_DIR}/screen.pdf
PNG_DIR=${CURRENT_DIR}/images/origin
rm ${OUTPUT_PDF}
find ${PNG_DIR} -name '*.png' | while read PNG; do
echo ${PNG}
if [ -f ${OUTPUT_PDF} ]; then
convert -page A4 ${PNG} ${TMP_PDF1}
mv ${OUTPUT_PDF} ${TMP_PDF2}
pdftk ${TMP_PDF2} ${TMP_PDF1} cat output ${OUTPUT_PDF}
else
convert -page A4 ${PNG} ${OUTPUT_PDF}
fi
done
if [ -f ${TMP_PDF1} ]; then
rm ${TMP_PDF1}
fi
if [ -f ${TMP_PDF2} ]; then
rm ${TMP_PDF2}
fi
ちなみにpdftkコマンドとconvertコマンドはbrewから下記のようにすればインストールされます。
brew install --devel casperjs
brew tap docmunch/pdftk
brew install pdftk
brew install imagemagick