PDFの表紙のサムネールを作成する

●指定したディレクトリからPDFファイルを検索して表紙(1ページ目)の縮小画像(PNG)をPNGディレクトリを作成してそこに生成する。
requires ImageMagick
※追記 convertコマンドはPDF/AI/EPSなどGhostscriptライブラリを使用する形式はセキュリティー強化のためデフォルトでブロックされ、エラーが出ると思います。その場合は、policy.xml(ubuntu16だと /etc/ImageMagick-6/policy.xml 等) を編集する必要があります。詳しくは「ImageMagick policy.xml」でググれば情報が得られると思います。

※追記 Windows用のImageMagickを使う場合は、あらかじめ Windows用のGhostscriptが必要です。Windows10 21H1以降であれば コマンドコンソールから、”winget install ArtifexSoftware.GhostScript” を叩くといいでしょう。

#!/bin/sh
#usage: pdf2png.sh <pdf search path>
if [ -z "$1" -o ! -d $1 ]; then
  dir=.
else
  dir=$1
fi

for file in `find $dir -type f -name '*.pdf'`
do
  odir=`dirname $file`/png
  if [ ! -d $odir ]; then
    mkdir ${odir} > /dev/null 2>&1
  fi
  convert ${file}[0] -monitor -alpha remove -resize 300x300 PNG8:${odir}/`basename $file .pdf`.png
done

exit 0

※ 注意しなければならないのが一つ。PDFから大きいサイズ(例えば300DPIとか)の画像に変換する場合、入力ファイルより前に指定する必要があります。

> convert  hogehoge.pdf[0] -density 300 output.jpg

とかやっても思ったような結果はでません。

正しくは・・・

> convert -density 300 hogehoge.pdf[0] output.jpg