Skip to content

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

FormatEkstensiAlphaCatatan
JPEG.jpg, .jpegTidakBaseline dan progressive
PNG.pngYa8-bit, 24-bit, 32-bit dengan transparansi
WebP.webpYaLossy dan lossless
AVIF.avifYaMemerlukan 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 otomatis

Signature

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
): static

Posisi 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, $y eksplisit (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 $w x $h dengan 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 halaman

Gambar 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 base64

Saat memuat dari string base64, berikan parameter $type agar parser mengetahui formatnya.

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): static
php
$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): static
php
$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.

Didistribusikan di bawah lisensi LGPL-3.0-or-later.