ImageMagickを用いて、画像をA4のPDFに変換する方法を備忘録として。
コマンドconvertに、
・convert -density “解像度(dpi)” -geometry “横幅(px)”x”縦幅(px)” “入力画像名” “出力PDFファイル名”
と指定すると、対応したサイズのPDFファイルが出力される。
PDFファイルは210×297[mm]なので、150dpiであれば、
・横幅:210*150/25.4 ≒ 1240 [px]
・縦幅:297*150/25.4 ≒ 1754 [px]
となり、縦横比を保持する場合のコマンド例は以下となる。
$ convert -density 150 -geometry 1240x1754 input.jpg output.pdf
縦横比を保持しない場合は以下。
$ convert -density 150 -geometry 1240x1754! input.jpg output.pdf
解像度を度々変更し、縦横のpxの算出が面倒な場合には、以下のようなPHPスクリプトを用いる。
(PHPの場合はphp-imagickを用いることも可能だが、ここでは外部プログラムを実行)
<?php // 指定解像度&サイズのPDF出力 /* -------------------------------------- */ // パラメータ設定 /* -------------------------------------- */ // 画像ファイル名 $f = 'input.jpg'; // 解像度 [dpi] $dpi = 100; // 横幅の指定 [mm] $w = 210; // 縦幅の指定 [mm] $h = 297; /* -------------------------------------- */ /* -------------------------------------- */ // PDFファイルの出力 /* -------------------------------------- */ // [mm] -> [px] $w = round($w*$dpi/25.4); $h = round($h*$dpi/25.4); // コマンド $cmd = sprintf('convert -density %d -geometry %dx%d! %s output.pdf', $dpi, $w, $h, $f); // コマンドの実行 exec($cmd); /* -------------------------------------- */ ?>