【Mac】zip にまとめられたイメージを PDF に

自炊した本や雑誌を、zip にまとめて閲覧しているひとは多いかと思う。
 これを Kindle で読むために、PDF にしてみたいと思った。
 プレビュー.app の印刷で、「PDF で保存」を使えば簡単だろうが、ここではコマンドを利用したい。

imageMagick のインストールと convert

jpg を PDF に変換するようなコマンドが、なんかあるだろ、と思っていろいろ捜してみたんだが、けっきょく imageMagick に頼るのか一番みたいだ。
 imageMagick は Homebrew でインストールできる。

brew install imagemagick

imageMagick をインストールすると、convert というコマンドが使えるようになる。convert をもちいれば、画像を pdf 書類に変換できるようになるわけだ。
 基本は、

convert 画像ファイル 出力PDF

とシンプル。
 複数の画像を指定する場合は、ワイルドカードの「 * 」が使える。

convert フォルダのパス/*.jpg out.pdf

これでフォルダ内の jpg ファイルが、ひとつの PDF としてまとめられるはずである。

シェルスクリプト

画像ファイルだけを内包した zip ファイルを pdf ファイルにする場合、シェルスクリプトにすればこんな風になるかと思う。
 zip2pdf.sh アーカイブ.zip というような使い方を想定している。

📝 zip2pdf.sh

#!/bin/bash

# zipファイルのある場所へ移動
dir=`dirname "$1"`
cd "${dir}"

# zip ファイルのファイル名を摘出
# ${変数%.*} は拡張子を消す変数展開
zipName=`basename "${1}"`
folder=`echo ${zipName%.*}`

# unzip でファイルを解凍。-d オプションで展開先
# のディレクトリを指定している。
# cd でそのディレクトリへ移動
unzip -d "${folder}" "${zipName}"
cd "${folder}"

# フォルダの中身すべてを PDF にコンバートする。
# 中身は全部、画像ファイルである、という前提である。
convert * ../"${folder}".pdf

# 必要なら展開先のフォルダを削除
# cd ../
# rm -r "${folder}"

これで出来上がる pdf のファイルサイズは、zip ファイルのサイズとあまり変わらないので、おそらく画像は劣化していないと思う。
 ちなみに、pdf を kindle へ送るのは、以下のサイトさまのような方法で出来るらしい。

PDFの技術書をKindleで快適に読む – Qiita