Skip to content

Images

Intégrez des images raster et vectorielles dans vos PDF en utilisant les méthodes fluides image() et imageSvg(), avec contrôle complet sur position et taille.

Exemple complet

php
<?php

declare(strict_types=1);

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

use TcpdfNext\Document;

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

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

    // -- 1. JPEG (mode flux) --------------------------------------------
    ->setFont('helvetica', style: 'B', size: 13)
    ->cell(0, 10, '1. JPEG -- auto height', newLine: true)
    ->image(
        file:   __DIR__ . '/assets/photo.jpg',
        x:      null,                         // X actuel
        y:      null,                         // Y actuel
        width:  60,                           // 60 mm de large
        height: null,                         // auto (préserver ratio)
    )

    // -- 2. PNG avec transparence ---------------------------------------
    ->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. Graphique vectoriel SVG ------------------------------------------
    ->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. Positionnement absolu ----------------------------------------
    ->image(
        file:   __DIR__ . '/assets/badge.png',
        x:      150,                          // 150 mm du bord gauche
        y:      10,                           // 10 mm du haut
        width:  30,
        height: 30,
    )

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

echo 'PDF created.' . PHP_EOL;

Modes de positionnement

Mode flux

Passez null pour x et y. L'image est placée à la position actuelle du curseur et le curseur avance vers le bas :

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

Mode absolu

Passez des coordonnées explicites. Le curseur ne bouge pas -- idéal pour logos, badges ou superpositions de filigrane :

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

Comportement de mise à l'échelle

widthheightRésultat
60nullLargeur fixe, hauteur auto (ratio d'aspect préservé)
null40Largeur auto, hauteur fixe (ratio d'aspect préservé)
6040Dimensions exactes (peut étirer)
nullnullTaille pixel originale convertie en mm à 96 DPI

Formats supportés

FormatNotes
JPEGBaseline et progressif ; espace colorimétrique CMYK supporté
PNG8-bit, 24-bit et 32-bit avec transparence alpha complète
SVGVia imageSvg() -- rend chemins, texte et CSS basique

Retour à la ligne autour d'une image

Utilisez positionnement absolu pour l'image et contraignez la largeur multiCell() pour éviter le chevauchement :

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');

Sortie

L'exemple complet produit une page avec une photo JPEG, un logo PNG transparent, un diagramme SVG et un badge positionné absolument dans le coin supérieur droit.

Distribué sous licence LGPL-3.0-or-later.