失敗したらリトライするバージョンを作成
https://github.com/toshinori/scripts/tree/master/pdf
shrink_pdf.sh
#!/bin/sh
# use xpdf, pdftk, imagemagick, poppler
set -e
readonly TARGET=$1
if [ ! -e "${TARGET}" ];
then
echo "${TARGET} not found."
exit 1
fi
readonly DIR=`dirname "${TARGET}"`
readonly FILENAME=`basename "${TARGET}"`
readonly BASENAME=`basename "${TARGET}" ".pdf"`
cd "${DIR}"
readonly PRIFIX="work"
echo "${FILENAME}"
echo "PDF to PPM"
readonly RESOLUTION=150
`pdftoppm "${FILENAME}" -r ${RESOLUTION} "${PRIFIX}"`
echo "PPM to JPG"
readonly SIZE=1024
`mogrify -format jpg -geometry ${SIZE}x${SIZE} "${PRIFIX}*.ppm"`
echo "JPG to PDF"
`mogrify -format pdf "${PRIFIX}*.jpg"`
echo "backup target file."
`mv -f "${FILENAME}" "${FILENAME}.bak"`
echo "concat PDF."
`pdftk ${PRIFIX}*.pdf output "${FILENAME}"`
echo "dispose."
`rm -f *.ppm`
`rm -f *.jpg`
`rm -f ${PRIFIX}*.pdf`
使い方。
./shrink_pdf.sh "hoge.pdf"
まとめて実行する。
カレント配下のPDFを抽出してすでに処理済みのファイルはスキップ。
shrink_all.sh
#!/bin/sh
set -e
BACKUP=""
find . -type f -name '*.pdf' | while read PDF
do
BACKUP="${PDF}.bak"
if [ ! -e "${BACKUP}" ]; then
./shrink.sh "${PDF}"
fi
done