2013/11/07

大量のjpgファイルを一つのPDFファイルにする

 Linuxで大量のjpgファイルを一つのPDFファイルにまとめて、本の様に扱うことはできないかなぁ。
 調べてみるとありますね。
 そうそう、imagemagicに含まれている convertコマンドです。

 jpgファイルのあるフォルダに移動して、以下のように実行すれば、*.jpgに合致するファイルを内在するall.pdfファイルが出来上がります。
convert *.jpg all.pdf
 注意すべきは、上記ではjpgファイルの参照順がファイル名順になる点です。
 これは算術ソートではなく、文字列ソートなので文字数によって思うように並ばないケースがあります。
 例えば、1.jpg,2.jpg,10.jpgとうファイルがあった場合、次のように並びます。

 1.jpg
 10.jpg
 2.jpg

 10.jpgは十ではなく、1と0という2文字の文字として扱われるからですね。
 じゃ、きちんと並べることはどうするか?
 ズバリ、文字数を統一すれば良いのです。
 次のコマンドでファイル名を4桁の前ゼロ付与した形に整形できます。
for a in *.jpg
do
   c=`basename "$a" .jpg`
   b=`printf "%04d%s" "$c" .jpg`
   mv "$a" "$b" 
done
 これで、ファイル名が次のようになったと思います。

 0001.jpg
 0010.jpg
 0002.jpg

 文字数が一致すれば、文字列ソートしても 0001.jpg,0002.jpg,0010.jpgと並ぶので、算術ソートと同じですね。
 この状態で、convertコマンドでpdfファイル化しましょう。
convert *.jpg all.pdf

0 コメント:

コメントを投稿