複数の jpg ファイルを一つの pdf にまとめるシェルスクリプト

(2024-04-21)

たくさんの jpg ファイルを一つの pdf ファイルにまとめます。

環境は、linux mint 21.3 です。

/etc/ImageMagick-6/policy.xml の編集

sudo nano /etc/ImageMagick-6/policy.xml

下の方にある、

<policy domain="coder" rights="none" pattern="PDF" />

を以下のように変更します。

<policy domain="coder" rights="read|write" pattern="PDF" />

jpg を一括して一つの pdf に変換

以下のようなシェルスクリプトを作成します。

#!/bin/bash
# 一時フォルダを作成
temp_dir=$(mktemp -d)
# ファイルリストを作成
ls -v *.jpg > "$temp_dir/list.txt"
# ファイルリストを読み込み、convertコマンドに渡す
while IFS= read -r file; do
echo "Processing file: $file"
convert "$file" "${temp_dir}/$(basename "${file%.jpg}.pdf")"
done < "$temp_dir/list.txt"
# PDFファイルをまとめる
pdfunite "${temp_dir}"/*.pdf output.pdf
echo "PDF created: output.pdf"
# 一時フォルダを削除
rm -r "$temp_dir"