入門 7 - 画像の配置 -
1. PDFlib のサポートする画像形式
PDFlib では、下記の画像ファイル形式のPDF文書へのインポート及び配置を行うことができます。各形式のファイルごとにサポートの内容や制限事項に違いがありますので、詳細は日本語チュートリアルマニュアルの「8.1.2 対応画像ファイル形式」を、また画像ファイルの処理全般については「8 画像・SVG グラフィック・PDFページを取り込む」の記述を参照してください。
- PNG形式
- JPEG形式
- JPEG 2000形式
- JBIG 2形式
- GIF形式
- TIFF形式
- BMP形式
- CCITT形式
- RAW形式
- SVG形式
SVG形式については下記の画像の取り扱いとは少し異なります。
2. 画像の配置
PDFlib に取り込んだ画像は、拡大縮小、方向変換、回転などの処理をして配置することができます。画像の配置は以下の手順で行います。
まず、画像ファイルを以下のような形でロードします。
$imagefile="../data/php.gif";
$image=$p->load_image("auto", $imagefile, "");
PHP 8 / PDFlib 10
ここで、第1パラメータは、イメージタイプで、"auto"と指定すると、raw及びCCITT形式以外の画像ファイルは PDFlib が各画像形式を自動的に認識してファイル形式に従って画像を読み込み、PDF文書にコピーします。第2パラメータは画像ファイルのパス、第3パラメータはオプションリストになります。
次にfit_image()関数により、画像を編集しながら配置していきます。下図に各fit_image()関数の出力例を示します。
$p->fit_image($image, 20, 70, "");
PHP 8 / PDFlib 10
最初にオリジナルの画像をそのまま出力しています。(画像「A」) ここで第1パラメータはload_image()関数の戻り値として得た画像オブジェクトのハンドル、第2、第3パラメータは画像を配置するための参照点の座標、第4パラメータはオプションリストです。ここで出力される画像はロードされた元の画像を参照しているだけなので、fit_image()関数を何度呼んでも画像データのコピーによりドキュメントサイズが大きくなることはありません。
次に、画像を縮小、向きを変えて出力してみると画像「B」のようになります。
$p->fit_image($image, 250, 195, "scale 0.5 orientate west");
PHP 8 / PDFlib 10
指定は上記のようにオプションリストで行います。「scale 0.5」で0.5倍に縮小、「orientate west」で左90度、方向変換しています。fit_text()関数と同じように、画像を指定したボックスに応じて変形させることもできます。
$p->fit_image($image, 200, 45, "boxsize {180 100} fitmethod clip");
PHP 8 / PDFlib 10
ここでは、180 × 100のボックスを指定して画像をボックスに配置しています。「fitmethod clip」としているため、画像「C」の上部100を超える部分がクリッピングされて、Cのように出力されます。画像の処理としては、このほか透過や画像マスクの指定、マルチページ画像ファイルの処理、OPI関連処理などを行うことができます。