ImageMagickを用いたA4サイズのPDF出力

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);
/* -------------------------------------- */
?>