Skip to content

Изображения

Встраивайте растровые и векторные изображения в ваши PDF с помощью fluent-методов image() и imageSvg() с полным контролем позиции и размера.

Полный пример

php
<?php

declare(strict_types=1);

require __DIR__ . '/vendor/autoload.php';

use TcpdfNext\Document;

Document::create()
    ->setTitle('Image Examples')
    ->addPage()

    // -- Title -----------------------------------------------------------
    ->setFont('helvetica', style: 'B', size: 18)
    ->cell(0, 12, 'Embedding Images', newLine: true)

    // -- 1. JPEG (flow mode) --------------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '1. JPEG -- auto height', newLine: true)
    ->image(
        file:   __DIR__ . '/assets/photo.jpg',
        x:      null,                         // current X
        y:      null,                         // current Y
        width:  60,                           // 60 mm wide
        height: null,                         // auto (preserve ratio)
    )

    // -- 2. PNG with transparency ---------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '2. PNG with alpha channel', newLine: true)
    ->image(
        file:   __DIR__ . '/assets/logo.png',
        x:      null,
        y:      null,
        width:  40,
        height: null,
    )

    // -- 3. SVG vector graphic ------------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '3. SVG vector image', newLine: true)
    ->imageSvg(
        file:   __DIR__ . '/assets/diagram.svg',
        x:      null,
        y:      null,
        width:  80,
        height: 50,
    )

    // -- 4. Absolute positioning ----------------------------------------
    ->image(
        file:   __DIR__ . '/assets/badge.png',
        x:      150,                          // 150 mm from left edge
        y:      10,                           // 10 mm from top
        width:  30,
        height: 30,
    )

    ->save(__DIR__ . '/images.pdf');

echo 'PDF created.' . PHP_EOL;

Режимы позиционирования

Поточный режим

Передайте null для x и y. Изображение размещается в текущей позиции курсора, и курсор перемещается вниз:

php
->image(file: 'photo.jpg', x: null, y: null, width: 60, height: null)

Абсолютный режим

Передайте явные координаты. Курсор не перемещается -- идеально для логотипов, значков или наложений водяных знаков:

php
->image(file: 'badge.png', x: 150, y: 10, width: 30, height: 30)

Поведение масштабирования

widthheightРезультат
60nullФиксированная ширина, автоматическая высота (соотношение сторон сохраняется)
null40Автоматическая ширина, фиксированная высота (соотношение сторон сохраняется)
6040Точные размеры (может растянуть)
nullnullИсходный размер в пикселях, конвертированный в мм при 96 DPI

Поддерживаемые форматы

ФорматПримечания
JPEGBaseline и progressive; поддержка цветового пространства CMYK
PNG8-bit, 24-bit и 32-bit с полной альфа-прозрачностью
SVGЧерез imageSvg() -- рендерит пути, текст и базовый CSS

Обтекание текста вокруг изображения

Используйте абсолютное позиционирование для изображения и ограничьте ширину multiCell(), чтобы избежать наложения:

php
Document::create()
    ->setTitle('Text Wrap')
    ->addPage()
    ->image(file: 'photo.jpg', x: 140, y: 30, width: 50, height: null)
    ->setFont('helvetica', size: 11)
    ->setXY(10, 30)
    ->multiCell(width: 125, height: 6, text: 'Your paragraph text here...')
    ->save('text-wrap.pdf');

Результат

Полный пример создаёт одну страницу с JPEG-фотографией, прозрачным PNG-логотипом, SVG-диаграммой и абсолютно позиционированным значком в правом верхнем углу.

Распространяется по лицензии LGPL-3.0-or-later.