Изображения
Встраивайте растровые и векторные изображения в ваши 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)Поведение масштабирования
width | height | Результат |
|---|---|---|
60 | null | Фиксированная ширина, автоматическая высота (соотношение сторон сохраняется) |
null | 40 | Автоматическая ширина, фиксированная высота (соотношение сторон сохраняется) |
60 | 40 | Точные размеры (может растянуть) |
null | null | Исходный размер в пикселях, конвертированный в мм при 96 DPI |
Поддерживаемые форматы
| Формат | Примечания |
|---|---|
| JPEG | Baseline и progressive; поддержка цветового пространства CMYK |
| PNG | 8-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-диаграммой и абсолютно позиционированным значком в правом верхнем углу.