Forms
Forms
Halaman ini mencakup pembuatan dan pengelolaan bidang interaktif AcroForm. Form, yang dapat diakses melalui doc.Form, adalah antarmuka untuk setiap tipe bidang; setiap metode Add*() membuat bidang yang terikat pada halaman dan persegi panjang widget serta mengembalikan handle bertipe (TextField, CheckboxField, ChoiceField, ButtonField, atau RadioField) yang berbagi properti Field Value, ReadOnly, dan Required.
Membuat Bidang
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox(), dan saudara-saudaranya masing-masing menerima objek opsi yang menyebutkan page target (berdasarkan indeks 0), rect widget, sebuah name bidang, dan gaya seperti borderColor dan backgroundColor.
const form = doc.Form;
const pageNum = page.Number;
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
borderColor: [0.05, 0.1, 0.3], backgroundColor: [0.9, 0.93, 1], borderWidth: 1,
font: 'Helvetica', fontSize: 12,
});
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true, borderColor: [0.05, 0.1, 0.3], borderWidth: 1,
});
form.AddComboBox({
page: pageNum, rect: [200, 550, 350, 570], name: 'Country', value: 'US',
options: [
{ export: 'US', display: 'United States' },
{ export: 'UK', display: 'United Kingdom' },
{ export: 'DE', display: 'Germany' },
],
});Page.AddTextField() dan Page.AddCheckbox() membuat tipe bidang yang sama secara langsung pada sebuah halaman, tanpa menyebutkan doc.Form atau nomor page dalam objek opsi.
Membaca dan Memodifikasi Bidang
Form.Fields adalah array dari setiap Field pada dokumen; Form.Get() mencari satu berdasarkan nama lengkapnya. Value setiap bidang dapat dibaca atau ditetapkan kembali, dan ReadOnly / Required adalah properti boolean biasa.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Meratakan Field
Setiap metode Flatten() dari tipe field menanamkan penampilan saat ini ke dalam konten statis halaman dan menghapusnya dari AcroForm — efek permanen yang tidak interaktif yang sama seperti yang dimiliki Annotation.Flatten() untuk anotasi.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Tips dan Praktik Terbaik
- Modifikasi handle field yang dikembalikan langsung oleh panggilan
Add*(), atau yang baru dicari denganForm.Get()— referensi yang usang tidak melihat perubahan yang dibuat di tempat lain. Form.RemoveField()menerima baik handleFieldmaupun string nama field.- Panggil
Form.GenerateAppearances()setelah mengubah nilai field secara massal sehingga penampilan setiap field di layar tetap sinkron denganValue-nya. - Kotak kombo dan kotak daftar menyimpan nilai
exportyang dipilih di/V; teksdisplayadalah apa yang ditampilkan oleh penampilan yang dihasilkan.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
Field added with Form.AddTextField() does not appear on the page | Koordinat rect berada di luar dimensi halaman target | Pastikan persegi panjang berada dalam batas halaman |
Field still appears interactive after Flatten() | Flatten() dipanggil pada salinan bukan pada handle Add*() / Form.Get() yang dikembalikan | Panggil Flatten() pada objek yang diperoleh langsung dari formulir |
| Perubahan nilai field tidak terlihat di layar | Penampilan field tidak dibuat ulang setelah nilai berubah | Panggil Form.GenerateAppearances(), atau GenerateAppearance() milik field |
FAQ
Bagaimana cara membaca atau mengubah nilai field setelah membuatnya?
Cari dengan Form.Get('fieldName') (atau gunakan handle yang dikembalikan oleh panggilan Add*()) dan baca atau tetapkan properti Value secara langsung.
Jenis field apa yang didukung oleh Form facade?
Bidang teks, kotak centang, grup radio, kotak kombo, kotak daftar, dan tombol tekan, melalui Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox(), dan Form.AddPushButton().
Bagaimana cara menghapus field?
Panggil Form.RemoveField() dengan handle field atau namanya.
Bagaimana cara membuat field formulir menjadi permanen dan tidak dapat diedit?
Panggil Flatten() pada pegangan bidang — pola yang sama digunakan untuk anotasi — yang mengintegrasikan penampilannya saat ini ke dalam halaman dan menghapusnya dari AcroForm.
API Reference Ringkasan
| Kelas/Metode | Deskripsi |
|---|---|
Form | Fasade AcroForm, diakses melalui doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Buat field dengan tipe yang sesuai |
Form.Fields | Setiap Field pada dokumen, sebagai array |
Form.Get() | Cari bidang berdasarkan nama lengkap |
Form.RemoveField() | Hapus bidang berdasarkan handle atau nama |
Form.GenerateAppearances() | Regenerasi tampilan di layar untuk setiap bidang |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | Handle bidang bertipe yang berbagi Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Buat bidang langsung pada halaman |