Hình ảnh
Nhúng ảnh raster và vector vào PDF dùng method fluent image() và imageSvg(), với toàn quyền kiểm soát vị trí và kích thước.
Ví dụ đầy đủ
php
<?php
declare(strict_types=1);
require __DIR__ . '/vendor/autoload.php';
use TcpdfNext\Document;
Document::create()
->setTitle('Image Examples')
->addPage()
// -- Tiêu đề -----------------------------------------------------------
->setFont('helvetica', style: 'B', size: 18)
->cell(0, 12, 'Embedding Images', newLine: true)
// -- 1. JPEG (chế độ flow) --------------------------------------------
->setFont('helvetica', style: 'B', size: 13)
->cell(0, 10, '1. JPEG -- auto height', newLine: true)
->image(
file: __DIR__ . '/assets/photo.jpg',
x: null, // X hiện tại
y: null, // Y hiện tại
width: 60, // rộng 60 mm
height: null, // tự động (giữ tỷ lệ)
)
// -- 2. PNG với 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. Định vị tuyệt đối ----------------------------------------
->image(
file: __DIR__ . '/assets/badge.png',
x: 150, // 150 mm từ cạnh trái
y: 10, // 10 mm từ trên
width: 30,
height: 30,
)
->save(__DIR__ . '/images.pdf');
echo 'PDF created.' . PHP_EOL;Chế độ định vị
Chế độ Flow
Truyền null cho x và y. Ảnh được đặt tại vị trí con trỏ hiện tại và con trỏ di chuyển xuống:
php
->image(file: 'photo.jpg', x: null, y: null, width: 60, height: null)Chế độ tuyệt đối
Truyền tọa độ rõ ràng. Con trỏ không di chuyển -- lý tưởng cho logo, badge hoặc overlay watermark:
php
->image(file: 'badge.png', x: 150, y: 10, width: 30, height: 30)Hành vi co giãn
width | height | Kết quả |
|---|---|---|
60 | null | Chiều rộng cố định, chiều cao tự động (giữ tỷ lệ) |
null | 40 | Chiều rộng tự động, chiều cao cố định (giữ tỷ lệ) |
60 | 40 | Kích thước chính xác (có thể kéo giãn) |
null | null | Kích thước pixel gốc chuyển sang mm ở 96 DPI |
Định dạng được hỗ trợ
| Định dạng | Ghi chú |
|---|---|
| JPEG | Baseline và progressive; hỗ trợ không gian màu CMYK |
| PNG | 8-bit, 24-bit và 32-bit với alpha transparency đầy đủ |
| SVG | Qua imageSvg() -- render path, text và CSS cơ bản |
Bao văn bản quanh ảnh
Dùng định vị tuyệt đối cho ảnh và giới hạn chiều rộng multiCell() để tránh chồng lấp:
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');Kết quả
Ví dụ đầy đủ tạo một trang với ảnh JPEG, logo PNG trong suốt, sơ đồ SVG, và badge định vị tuyệt đối ở góc trên bên phải.