🎃
[ubuntu] コマンドラインで画像をpdf化
きっかけ
研究室に所属しlatexを書く機会があったのですが,画像はpdf化して貼る必要があるらしく,今後も同様のシチュエーションが多発するだろうと思い画像をpdf化するbash関数を作成しました.
環境
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
必要なツールのインストール
imagemagickをインストールする.
sudo apt install imagemagick
pdf変換を行えるようにするため設定ファイルの編集
/etc/ImageMagick-6/policy.xml
を以下のように変更する.
/etc/ImageMagick-6/policy.xml
~略~
- <policy domain="coder" rights="none" pattern="PDF" />
+ <policy domain="coder" rights="read|write" pattern="PDF" />
~略~
bash関数の作成
~/.bashrc
に以下の関数を追加する.
~/.bashrc
~略~
topdf() {
local path=$1
# 引数がファイルの場合
if [[ -f "$path" ]]; then
local output_file="${path%.*}.pdf"
convert "$path" -auto-orient "$output_file"
echo "converted $path to $output_file."
# 引数がディレクトリの場合
elif [[ -d "$path" ]]; then
# ディレクトリ内のすべてのサポートされる画像ファイルに対してループ
for img_file in "$path"/*; do
# ファイルが画像ファイルかどうかをチェック
if [[ -f "$img_file" ]]; then
local mimetype=$(file --mime-type -b "$img_file")
if [[ "$mimetype" == image/* ]]; then
local output_file="${img_file%.*}.pdf"
convert "$img_file" -auto-orient "$output_file"
echo "converted $img_file to $output_file."
fi
fi
done
else
echo "Please specify a supported image file or folder."
fi
}
~/.bashrc
の読み込み
source ~/.bashrc
利用例
topdf hoge.jpg # hoge.jpgがpdf化されhoge.pdfが生成される
topdf . # 現在のディレクトリ内のすべての画像がpdf化される
Discussion