Skip to content

API Value Object

Semua value object di TCPDF-Next adalah immutable. Setiap method "modifier" mengembalikan instance baru, membiarkan yang asli tidak berubah. Ini menghilangkan kategori bug yang disebabkan oleh shared mutable state.


PageSize

Namespace: TcpdfNext\ValueObjects\PageSize

Merepresentasikan dimensi halaman. Secara internal semua pengukuran disimpan dalam PDF point (1/72 inci).

Factory Method (Seri A ISO)

PageSize::a0(): static
841 x 1189 mm
PageSize::a1(): static
594 x 841 mm
PageSize::a2(): static
420 x 594 mm
PageSize::a3(): static
297 x 420 mm
PageSize::a4(): static
210 x 297 mm (default)
PageSize::a5(): static
148 x 210 mm
PageSize::a6(): static
105 x 148 mm

Factory Method (Seri B ISO)

PageSize::b0(): static
1000 x 1414 mm
PageSize::b1(): static
707 x 1000 mm
PageSize::b2(): static
500 x 707 mm
PageSize::b3(): static
353 x 500 mm
PageSize::b4(): static
250 x 353 mm
PageSize::b5(): static
176 x 250 mm

Factory Method (Amerika Utara)

PageSize::letter(): static
8.5 x 11 in (215.9 x 279.4 mm)
PageSize::legal(): static
8.5 x 14 in (215.9 x 355.6 mm)
PageSize::tabloid(): static
11 x 17 in (279.4 x 431.8 mm)

Kustom & Lookup

PageSize::fromMm(float $width, float $height, string $name = 'Custom'): static
Buat ukuran halaman dari dimensi milimeter.
PageSize::fromPoints(float $width, float $height, string $name = 'Custom'): static
Buat ukuran halaman dari dimensi point.
PageSize::fromName(string $name): static
Cari ukuran halaman standar berdasarkan nama (case-insensitive). Melempar InvalidArgumentException untuk nama yang tidak dikenal.

Helper Orientasi

landscape(): static
Kembalikan PageSize baru dengan lebar dan tinggi ditukar sehingga lebar > tinggi.
portrait(): static
Kembalikan PageSize baru dengan lebar dan tinggi ditukar sehingga tinggi > lebar.

Property

PropertyTipeDeskripsi
$widthfloatLebar dalam point
$heightfloatTinggi dalam point
$namestringNama yang bisa dibaca manusia (misalnya, 'A4', 'Letter')

Method Convenience

widthMm(): float
Kembalikan lebar dalam milimeter.
heightMm(): float
Kembalikan tinggi dalam milimeter.

Contoh

php
use TcpdfNext\ValueObjects\PageSize;

$a4 = PageSize::a4();
$landscape = $a4->landscape();   // 297 x 210 mm
$custom = PageSize::fromMm(140, 216, 'Half Letter');
$letter = PageSize::fromName('Letter');

Margin

Namespace: TcpdfNext\ValueObjects\Margin

Merepresentasikan margin halaman empat sisi. Penyimpanan internal dalam PDF point.

Factory Method

Margin::mm(float $top, float $right, float $bottom, float $left): static
Buat margin dari nilai milimeter.
Margin::pt(float $top, float $right, float $bottom, float $left): static
Buat margin dari nilai point.
Margin::uniform(float $value): static
Keempat sisi sama (dalam point).
Margin::uniformMm(float $value): static
Keempat sisi sama (dalam milimeter).
Margin::symmetric(float $horizontal, float $vertical): static
Margin simetris (horizontal = kiri + kanan, vertikal = atas + bawah) dalam point.
Margin::zero(): static
Semua margin diset ke nol.

Property

PropertyTipeDeskripsi
$topfloatMargin atas dalam point
$rightfloatMargin kanan dalam point
$bottomfloatMargin bawah dalam point
$leftfloatMargin kiri dalam point

Method Modifier

withTop(float $value): static
Kembalikan Margin baru dengan nilai atas yang diganti (dalam point).
withRight(float $value): static
Kembalikan Margin baru dengan nilai kanan yang diganti.
withBottom(float $value): static
Kembalikan Margin baru dengan nilai bawah yang diganti.
withLeft(float $value): static
Kembalikan Margin baru dengan nilai kiri yang diganti.

Method Kalkulasi

printableArea(PageSize $pageSize): Dimension
Kembalikan Dimension yang bisa dicetak (ukuran halaman dikurangi margin).

Contoh

php
use TcpdfNext\ValueObjects\Margin;
use TcpdfNext\ValueObjects\PageSize;

$margin = Margin::mm(top: 15, right: 20, bottom: 15, left: 20);
$narrow = $margin->withLeft(36.0)->withRight(36.0);
$area = $margin->printableArea(PageSize::a4());
echo $area->widthMm(); // 170.0

Position

Namespace: TcpdfNext\ValueObjects\Position

Pasangan koordinat x--y immutable dalam PDF point.

Factory Method

new Position(float $x, float $y)
Buat dari nilai point.
Position::mm(float $x, float $y): static
Buat dari nilai milimeter (dikonversi ke point secara internal).

Property

PropertyTipeDeskripsi
$xfloatKoordinat horizontal dalam point
$yfloatKoordinat vertikal dalam point

Method

translate(float $dx, float $dy): static
Kembalikan Position baru yang digeser sebesar (dx, dy) point.
xMm(): float
Kembalikan x dalam milimeter.
yMm(): float
Kembalikan y dalam milimeter.

Contoh

php
use TcpdfNext\ValueObjects\Position;

$pos = Position::mm(x: 25.4, y: 50.8);
$shifted = $pos->translate(dx: 10, dy: 20);
echo $shifted->xMm(); // ~28.9

Dimension

Namespace: TcpdfNext\ValueObjects\Dimension

Pasangan lebar--tinggi immutable dalam PDF point.

Factory Method

new Dimension(float $width, float $height)
Buat dari nilai point.
Dimension::mm(float $width, float $height): static
Buat dari nilai milimeter.

Property

PropertyTipeDeskripsi
$widthfloatLebar dalam point
$heightfloatTinggi dalam point

Method

swap(): static
Kembalikan Dimension baru dengan lebar dan tinggi ditukar.
widthMm(): float
Kembalikan lebar dalam milimeter.
heightMm(): float
Kembalikan tinggi dalam milimeter.
area(): float
Kembalikan luas dalam point kuadrat.

Contoh

php
use TcpdfNext\ValueObjects\Dimension;

$dim = Dimension::mm(width: 210, height: 297);
echo $dim->width;      // 595.28
echo $dim->widthMm();  // 210.0
$swapped = $dim->swap(); // Ekuivalen 297 x 210 mm

Unit

Namespace: TcpdfNext\ValueObjects\Unit

Class utilitas statis untuk konversi antar unit pengukuran. Semua konversi didasarkan pada standar PDF yaitu 72 point per inci.

Method Konversi

Unit::mm(float $value): float
Konversi milimeter ke point. Alias untuk mmToPoints().
Unit::pt(float $value): float
Identitas -- mengembalikan nilai tanpa perubahan (untuk konsistensi API).
Unit::cm(float $value): float
Konversi sentimeter ke point.
Unit::in(float $value): float
Konversi inci ke point (value x 72).
Unit::mmToPoints(float $mm): float
Konversi milimeter ke point (mm x 72 / 25.4).
Unit::pointsToMm(float $pt): float
Konversi point ke milimeter (pt x 25.4 / 72).
Unit::inchesToPoints(float $inches): float
Konversi inci ke point (inches x 72).
Unit::pointsToInches(float $pt): float
Konversi point ke inci (pt / 72).
Unit::cmToPoints(float $cm): float
Konversi sentimeter ke point (cm x 72 / 2.54).
Unit::pointsToCm(float $pt): float
Konversi point ke sentimeter (pt x 2.54 / 72).
Unit::convert(float $value, string $from, string $to): float
Converter serbaguna. String unit yang didukung: 'mm', 'cm', 'in', 'pt'.

Contoh

php
use TcpdfNext\ValueObjects\Unit;

$points = Unit::mmToPoints(210.0);       // 595.28
$mm     = Unit::pointsToMm(595.28);      // 210.0
$points = Unit::inchesToPoints(8.5);     // 612.0
$result = Unit::convert(1.0, 'in', 'mm'); // 25.4

Color

Namespace: TcpdfNext\Graphics\Color

Representasi warna immutable yang mendukung beberapa color space. Meskipun Color berada di package Graphics, class ini digunakan secara luas di seluruh library (warna teks, warna draw, warna fill, warna bookmark, warna anotasi).

Factory Method

Color::rgb(int $r, int $g, int $b): static
Buat warna DeviceRGB. Nilai berkisar dari 0 sampai 255.
Color::cmyk(float $c, float $m, float $y, float $k): static
Buat warna DeviceCMYK. Nilai berkisar dari 0 sampai 100.
Color::gray(int $level): static
Buat warna DeviceGray. Level berkisar dari 0 (hitam) sampai 255 (putih).
Color::spot(string $name, Color $fallback, float $tint = 100): static
Buat named spot (Separation) color dengan fallback warna proses dan persentase tint.
Color::hex(string $hex): static
Buat warna dari string hex 3 atau 6 digit (dengan atau tanpa '#').
Color::black(): static
Convenience: rgb(0, 0, 0).
Color::white(): static
Convenience: rgb(255, 255, 255).
Color::transparent(): static
Convenience: warna sepenuhnya transparan.

Property

PropertyTipeDeskripsi
$spaceColorSpaceEnum color space (DeviceRGB, DeviceCMYK, DeviceGray, Separation)

Method

toRgbArray(): array
Kembalikan [r, g, b] dengan nilai 0--255. Konversi dari CMYK atau Gray jika diperlukan.
toCmykArray(): array
Kembalikan [c, m, y, k] dengan nilai 0--100.
toHex(): string
Kembalikan string hex 6 digit (misalnya, 'ff6600').
withAlpha(float $alpha): static
Kembalikan Color baru dengan alpha yang diberikan (0.0--1.0).
equals(Color $other): bool
Bandingkan dua warna untuk kesetaraan nilai.

Contoh

php
use TcpdfNext\Graphics\Color;

$brand  = Color::hex('#0066CC');
$print  = Color::cmyk(100, 0, 0, 0);
$spot   = Color::spot('PANTONE 286 C', Color::cmyk(100, 66, 0, 2));
$faded  = $brand->withAlpha(0.5);
echo $brand->toHex(); // '0066cc'

Lihat Juga

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