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
width | height | Résultat |
|---|---|---|
60 | null | Largeur fixe, hauteur auto (ratio d'aspect préservé) |
null | 40 | Largeur auto, hauteur fixe (ratio d'aspect préservé) |
60 | 40 | Dimensions exactes (peut étirer) |
null | null | Taille pixel originale convertie en mm à 96 DPI |
Formats supportés
| Format | Notes |
|---|---|
| JPEG | Baseline et progressif ; espace colorimétrique CMYK supporté |
| PNG | 8-bit, 24-bit et 32-bit avec transparence alpha complète |
| SVG | Via 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.