Skip to content

画像

TCPDF-Nextは、PDFドキュメントへのラスター画像とベクター画像の埋め込みをサポートしています。画像サブシステムはGraphicsモジュールに含まれ、Document のフルエントAPIを通じてアクセスします。

サポートされる形式

形式拡張子アルファ備考
JPEG.jpg.jpegなしベースラインおよびプログレッシブ
PNG.pngあり8ビット、24ビット、透過付き32ビット
WebP.webpあり非可逆および可逆
AVIF.avifありAVIFサポート付きのGDまたはImagickが必要
SVG.svg--ベクター — SvgParser でレンダリング
EPS.eps.ai--PostScript — EpsParser でレンダリング

image()

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->image('/path/to/logo.png', 10, 10, 50, 0);   // 幅=50mm、高さ自動

シグネチャ

php
image(
    string $file,             // ファイルパス、URL、または @base64文字列
    float  $x     = '',       // X位置('' = 現在のX)
    float  $y     = '',       // Y位置('' = 現在のY)
    float  $w     = 0,        // 幅  (0 = アスペクト比から自動)
    float  $h     = 0,        // 高さ(0 = アスペクト比から自動)
    string $type  = '',       // 形式を強制:'JPEG'、'PNG'、'WebP' など
    mixed  $link  = '',       // URLまたは内部リンク識別子
    string $align = '',       // 画像後の配置:T, M, B, N
    bool   $resize    = false,
    int    $dpi       = 300,
    string $palign    = '',   // セル内の画像配置:L, C, R
    bool   $fitbox    = false,
    bool   $fitonpage = false
): static

位置指定とスケーリング

php
$pdf->image('/path/to/photo.jpg', 10, 60, 100, 80);      // 絶対位置:(10,60)に100x80mm
$pdf->image('/path/to/banner.png', 10, 10, 190, 0);       // 幅から自動高さ
$pdf->image('/path/to/portrait.jpg', 10, 10, 0, 100);     // 高さから自動幅
$pdf->image('/path/to/photo.jpg', 10, 10, 80, 60, fitbox: true);    // ボックス内にフィット
$pdf->image('/path/to/chart.png', 10, 10, 0, 0, fitonpage: true);   // ページ内にフィット
  • 絶対位置 — 明示的な $x$y 座標を指定します(デフォルト単位:mm)。
  • 自動高さ/幅 — 一方の寸法を 0 に設定すると、アスペクト比から他方が計算されます。
  • ボックス内にフィットfitbox: true) — アスペクト比を保ちながら $w x $h に収まるようにスケーリングします。
  • ページ内にフィットfitonpage: true) — 画像が印刷可能領域を超えないようにします。

DPIと解像度

$dpi パラメータは、$w$h の両方が 0 の場合にピクセルから物理サイズへの変換を制御します:

php
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 150);  // ページ上で大きく表示
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 300);  // ページ上で小さく表示

文字列またはURLからの画像

php
$pdf->image('https://example.com/logo.png', 10, 10, 50, 0);           // URLから
$pdf->image('@' . base64_encode($imageData), 10, 10, 50, 0, 'PNG');   // base64から

base64文字列から読み込む場合は、パーサーが形式を認識できるよう $type パラメータを指定してください。

リンク付き画像

php
$pdf->image('/path/to/logo.png', 10, 10, 40, 0, link: 'https://example.com');

SVG画像

imageSvg() はSVGをネイティブPDFベクターパスとしてレンダリングします — ラスタライゼーションは行いません:

php
imageSvg(string $file, float $x, float $y, float $w, float $h, mixed $link = '', string $align = '', string $palign = '', mixed $border = 0): static
php
$pdf->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100);

EPS / PostScript画像

php
imageEps(string $file, float $x, float $y, float $w, float $h, mixed $link = '', bool $useBBox = true, string $align = '', string $palign = '', mixed $border = 0): static
php
$pdf->imageEps('/path/to/illustration.eps', 10, 10, 80, 60);

完全な例

php
use Yeeefang\TcpdfNext\Core\Document;

$pdf = Document::create()
    ->addPage()
    ->image('/path/to/logo.png', 10, 10, 50, 0)
    ->image('/path/to/photo.jpg', 10, 60, 100, 80)
    ->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100)
    ->save('output.pdf');

ヒント

  • PNGのアルファチャンネルはPDF出力で完全に保持されます。
  • 最高の印刷品質を得るには、300 DPI以上の画像を使用してください。
  • SVGレンダリングはほとんどの静的機能をサポートしています。アニメーションとJavaScriptは無視されます。
  • 多数の画像を埋め込む場合は、メモリ使用量を制御するために大きなファイルを事前にリサイズすることを検討してください。

LGPL-3.0-or-later ライセンスの下で公開されています。