Field Formulir
Modul Form (FormFieldManager, FormField) membuat field AcroForm interaktif di dalam PDF. Tipe field didefinisikan oleh enum FormFieldType: TEXT, PASSWORD, TEXTAREA, CHECKBOX, RADIO, LISTBOX, COMBOBOX, BUTTON. Semua method mengembalikan static, sehingga setiap panggilan bisa di-chain.
Referensi Cepat
| Method | Tipe Field |
|---|---|
textField() | Input teks satu baris |
checkboxField() | Toggle checkbox |
radioField() | Radio button (dikelompokkan) |
listboxField() | List yang bisa di-scroll |
comboboxField() | Selector dropdown |
buttonField() | Push button dengan aksi JavaScript opsional |
flattenFields() | Konversi semua field interaktif ke konten statis |
Contoh Dasar
use Yeeefang\TcpdfNext\Core\Document;
$pdf = Document::create()
->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, 'Formulir Pendaftaran', newLine: true)
->ln(5)
// Text field
->cell(30, 8, 'Nama:')
->textField('name', 45, null, 80, 8, [
'border' => ['width' => 1],
'maxLength' => 100,
])
->ln(12)
// Email field
->cell(30, 8, 'Email:')
->textField('email', 45, null, 80, 8)
->ln(12)
// Checkbox
->checkboxField('agree', 15, null, 5, 5)
->cell(0, 5, ' Saya setuju dengan ketentuan', newLine: true)
->ln(10)
// Dropdown
->cell(30, 8, 'Negara:')
->comboboxField('country', 45, null, 60, 8, ['ID', 'US', 'UK', 'TW', 'JP', 'DE'])
->ln(12)
// Tombol submit
->buttonField('submit', 45, null, 40, 10, 'Submit', 'submitForm("https://example.com/submit")');Field Teks dan Checkbox
$pdf->textField(string $name, float $x, float $y, float $w, float $h, array $prop = []);
$pdf->checkboxField(string $name, float $x, float $y, float $w, float $h, bool $checked = false);Berikan null untuk $y untuk menggunakan posisi kursor vertikal saat ini.
Field Radio Button
$pdf->radioField(string $name, float $x, float $y, float $w, float $h, array $prop = []);Radio button dengan $name yang sama membentuk grup yang saling eksklusif:
$pdf->cell(30, 8, 'Jenis Kelamin:')
->radioField('gender', 45, null, 5, 5, ['value' => 'male'])
->cell(10, 5, ' L')
->radioField('gender', 65, null, 5, 5, ['value' => 'female'])
->cell(10, 5, ' P');Field List, Combo Box, dan Button
$pdf->listboxField(string $name, float $x, float $y, float $w, float $h, array $values, array $prop = []);
$pdf->comboboxField(string $name, float $x, float $y, float $w, float $h, array $values, array $prop = []);
$pdf->buttonField(string $name, float $x, float $y, float $w, float $h, string $caption, string $action = '');listboxField() me-render list multi-baris yang bisa di-scroll. comboboxField() me-render dropdown satu baris. buttonField() membuat push button dengan string aksi JavaScript opsional.
$pdf->buttonField('reset', 15, null, 40, 10, 'Reset', 'this.resetForm()')
->buttonField('print', 60, null, 40, 10, 'Cetak', 'this.print()');Properti Field
Array $prop mengontrol tampilan dan perilaku field:
| Key | Tipe | Deskripsi |
|---|---|---|
border | array | Style border dengan key width, color, style |
bgcolor | array | Warna background sebagai [r, g, b] |
font | string | Nama font family |
fontSize | float | Ukuran font dalam poin |
alignment | string | Alignment teks: left, center, right |
maxLength | int | Jumlah karakter maksimum (text field) |
readonly | bool | Cegah pengeditan pengguna |
required | bool | Tandai sebagai wajib untuk validasi formulir |
value | string | Nilai default / awal |
Form Flattening
Flattening mengonversi semua field interaktif menjadi konten statis yang tidak bisa diedit. Ini berguna untuk mengarsipkan formulir yang sudah diisi atau menghasilkan PDF final read-only.
$pdf->flattenFields(); // Konversi semua field formulir ke konten statisSetelah flattening, nilai field menjadi teks permanen. Field tidak bisa lagi diedit di PDF viewer.