PHPのPDFlibでクリッピングパスが指定された画像を扱う方法です。 load_image関数はデフォルトで画像のクリッピングパスが有効になっています。 load_image関数のオプションで 'honorclippingpath=false' とすると、画像のクリッピングパスが無効になります。 詳細は、PDFlib/PDI/PPSリファレンスのp.121の「表7.3 PDF_load_image()のオプション」を参照してください。
<?php // PDFlibではURLからの画像読み込みは不可 // クリッピングパスには、ファイルタイプがjpegかtiffの画像のみ対応 // クリッピングパスを設定した画像のパスを指定すること $img_file = '/path/to/clip_sample.jpg'; define('PATH_CMaps', '/usr/local/pdflib7/resource/cmap'); try { $p = new PDFlib(); $p->set_parameter("SearchPath", PATH_CMaps); $p->set_parameter("errorpolicy", "return"); $p->begin_document("", ""); // TIFF画像に対してクリッピングパスのパスの名前を設定した場合は、clippingpathnameを指定することが可能 // $img = $p->load_image("tiff", $img_file, "clippingpathname=pass1"); // load_image関数のオプションで"honorclippingpath=true"がデフォルトになっている // "honorclippingpath=false"になっているとクリッピングパスが適用されない // $img = $p->load_image("auto", $img_file, "honorclippingpath=false"); $img = $p->load_image("auto", $img_file, ""); if ( $img == 0 ) { echo $p->get_errmsg(); exit; } $p->begin_page_ext(595, 842, ''); $p->fit_image($img, 50, 750, ''); $p->close_image($img); $p->end_page_ext(''); $p->end_document(''); $buf = $p->get_buffer(); $len = strlen($buf); header("Content-type: application/pdf"); header("Content-Length: $len"); header("Content-Disposition: inline; filename=img_clipping.pdf"); print $buf; } catch (PDFlibException $e) { die("PDFlib exception occurred in hello sample:\n" . "[" . $e->get_errnum() . "] " . $e->get_apiname() . ": " . $e->get_errmsg() . "\n"); } catch (Exception $e) { die($e); } $p = 0;
このPDFを見る
codeなにがし::PDFlibでクリッピングパスが指定された画像を扱う