画像をA4のPDFファイルに変換するPHPスクリプト

任意の画像をA4サイズのPDFに変換するPHPスクリプトのメモです。

ブラウザ上で、アップロードした画像をPDFに変換するスクリプトを作成する必要があり、その一部分をメモとして残します。
解像度は100dpiや150dpiを超える値は時間が非常にかかり、サーバにも負荷をかけるので注意が必要です。

以下では、’output.pdf’というPDFファイルに出力しています。

// ファイルの書き出し
$image->writeImage('output.pdf');

または、以下のようなコードで、作成したPDFファイルをそのまま表示することも可能です。

// ファイルの表示
header('Content-type: application/pdf');
echo $image;

以下が、コードの全体です。

<?php
// JPG画像のPDFへの変換

// 初期値の設定
$img  = 'lenna.jpg'; // 読み込む画像
$dpi  = 100;         // PDFの解像度 [dpi]
$w    = 210.0;       // PDFの横幅 [mm]
$h    = 297.0;       // PDFの縦幅 [mm]

// mm -> px
$pw  = intval($w/25.4*$dpi);
$ph  = intval($h/25.4*$dpi);

// 画像の読み込み
$image = new Imagick();
$image->setResolution($dpi, $dpi);
$image->setPage($pw, $ph, 0, 0);
$image->readImage($img);

// 画像の再サンプル
$image->resampleImage($pw, $ph, imagick::FILTER_UNDEFINED, 1);
$image->setImageFormat('pdf');

// ファイルの書き出し
$image->writeImage('output.pdf');

// ファイルの表示
/*
header('Content-type: application/pdf');
echo $image;
*/
?>