Gambar
TCPDF-Next mendukung penyematan gambar raster dan vektor ke dalam dokumen PDF. Subsistem gambar berada di modul Graphics dan diakses melalui fluent API Document.
Format yang Didukung
| Format | Ekstensi | Alpha | Catatan |
|---|---|---|---|
| JPEG | .jpg, .jpeg | Tidak | Baseline dan progressive |
| PNG | .png | Ya | 8-bit, 24-bit, 32-bit dengan transparansi |
| WebP | .webp | Ya | Lossy dan lossless |
| AVIF | .avif | Ya | Memerlukan GD atau Imagick dengan dukungan AVIF |
| SVG | .svg | -- | Vektor — di-render melalui SvgParser |
| EPS | .eps, .ai | -- | PostScript — di-render melalui EpsParser |
image()
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->image('/path/to/logo.png', 10, 10, 50, 0); // Lebar=50mm, tinggi otomatisSignature
php
image(
string $file, // Path file, URL, atau string @base64
float $x = '', // Posisi X ('' = X saat ini)
float $y = '', // Posisi Y ('' = Y saat ini)
float $w = 0, // Lebar (0 = otomatis dari rasio aspek)
float $h = 0, // Tinggi (0 = otomatis dari rasio aspek)
string $type = '', // Paksa format: 'JPEG', 'PNG', 'WebP', dll.
mixed $link = '', // URL atau identifier link internal
string $align = '', // Alignment setelah gambar: T, M, B, N
bool $resize = false,
int $dpi = 300,
string $palign = '', // Alignment gambar dalam cell: L, C, R
bool $fitbox = false,
bool $fitonpage = false
): staticPosisi dan Skala
php
$pdf->image('/path/to/photo.jpg', 10, 60, 100, 80); // Absolut: 100x80mm di (10,60)
$pdf->image('/path/to/banner.png', 10, 10, 190, 0); // Tinggi otomatis dari lebar
$pdf->image('/path/to/portrait.jpg', 10, 10, 0, 100); // Lebar otomatis dari tinggi
$pdf->image('/path/to/photo.jpg', 10, 10, 80, 60, fitbox: true); // Pas dalam kotak
$pdf->image('/path/to/chart.png', 10, 10, 0, 0, fitonpage: true); // Pas di halaman- Posisi absolut — berikan koordinat
$x,$yeksplisit (unit default: mm). - Tinggi/lebar otomatis — set satu dimensi ke
0; dimensi lain dihitung dari rasio aspek. - Pas dalam kotak (
fitbox: true) — skala agar muat dalam$wx$hdengan menjaga rasio aspek. - Pas di halaman (
fitonpage: true) — pastikan gambar tidak melebihi area cetak.
DPI dan Resolusi
Parameter $dpi mengontrol pemetaan pixel-ke-ukuran-fisik saat $w dan $h keduanya 0:
php
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 150); // Lebih besar di halaman
$pdf->image('/path/to/scan.jpg', 10, 10, 0, 0, dpi: 300); // Lebih kecil di halamanGambar dari String atau URL
php
$pdf->image('https://example.com/logo.png', 10, 10, 50, 0); // Dari URL
$pdf->image('@' . base64_encode($imageData), 10, 10, 50, 0, 'PNG'); // Dari base64Saat memuat dari string base64, berikan parameter $type agar parser mengetahui formatnya.
Gambar dengan Link
php
$pdf->image('/path/to/logo.png', 10, 10, 40, 0, link: 'https://example.com');Gambar SVG
imageSvg() me-render SVG sebagai path vektor PDF native — tanpa rasterisasi:
php
imageSvg(string $file, float $x, float $y, float $w, float $h, mixed $link = '', string $align = '', string $palign = '', mixed $border = 0): staticphp
$pdf->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100);Gambar EPS / PostScript
php
imageEps(string $file, float $x, float $y, float $w, float $h, mixed $link = '', bool $useBBox = true, string $align = '', string $palign = '', mixed $border = 0): staticphp
$pdf->imageEps('/path/to/illustration.eps', 10, 10, 80, 60);Contoh Lengkap
php
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->image('/path/to/logo.png', 10, 10, 50, 0)
->image('/path/to/photo.jpg', 10, 60, 100, 80)
->imageSvg('/path/to/diagram.svg', 10, 150, 180, 100)
->save('output.pdf');Tips
- Alpha channel PNG sepenuhnya dipertahankan dalam output PDF.
- Untuk kualitas cetak terbaik, gunakan gambar dengan 300 DPI atau lebih tinggi.
- Rendering SVG mendukung sebagian besar fitur statis; animasi dan JavaScript diabaikan.
- Saat menyematkan banyak gambar, pertimbangkan untuk meresize file besar terlebih dahulu untuk mengontrol penggunaan memori.