Skip to content

Hình ảnh

Nhúng ảnh raster và vector vào PDF dùng method fluent image()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 xy. Ả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

widthheightKết quả
60nullChiều rộng cố định, chiều cao tự động (giữ tỷ lệ)
null40Chiều rộng tự động, chiều cao cố định (giữ tỷ lệ)
6040Kích thước chính xác (có thể kéo giãn)
nullnullKích thước pixel gốc chuyển sang mm ở 96 DPI

Định dạng được hỗ trợ

Định dạngGhi chú
JPEGBaseline và progressive; hỗ trợ không gian màu CMYK
PNG8-bit, 24-bit và 32-bit với alpha transparency đầy đủ
SVGQua 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.

Phân phối theo giấy phép LGPL-3.0-or-later.