Forms
Forms
На цій сторінці розглядається створення та керування інтерактивними полями AcroForm. Form, досягти якого можна через doc.Form, є фасадом для кожного типу поля; кожен метод Add*() створює поле, прив’язане до сторінки та прямокутника віджета, і повертає типізований дескриптор (TextField, CheckboxField, ChoiceField, ButtonField або RadioField), який має спільні властивості Field Value, ReadOnly та Required.
Створення полів
Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() та їхні супутники кожен приймає об’єкт параметрів, у якому вказується цільовий page (нумерація з 0), rect віджета, name поля та стилізація, наприклад borderColor та 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() та Page.AddCheckbox() створюють ті ж типи полів безпосередньо на сторінці, не вказуючи doc.Form або номер page у об’єкті параметрів.
Читання та модифікація полів
Form.Fields — це масив усіх Field у документі; Form.Get() шукає конкретний за його повністю кваліфікованою назвою. Value кожного поля можна прочитати або переназначити, а ReadOnly / Required — прості булеві властивості.
const nameField = doc.Form.Get('FullName');
if (nameField) {
console.log(nameField.Value);
nameField.Value = 'Bob Sample';
}Згладжування полів
Метод Flatten() кожного типу поля вбудовує його поточний вигляд у статичний вміст сторінки та видаляє його з AcroForm — той самий постійний, неінтерактивний ефект, який Annotation.Flatten() має для анотацій.
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();Поради та найкращі практики
- Змініть дескриптор поля, який повертається безпосередньо викликом
Add*(), або той, що щойно знайдений за допомогоюForm.Get()— застаріле посилання не бачить змін, внесених в іншому місці. Form.RemoveField()приймає або дескрипторField, або рядок з назвою поля.- Викличте
Form.GenerateAppearances()після пакетної зміни значень полів, щоб вигляд кожного поля на екрані залишався синхронізованим з йогоValue. - Комбобокси та спискові бокси зберігають вибране значення
exportу/V; текстdisplay— це те, що показує згенерований вигляд.
Типові проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
Поле, додане за допомогою Form.AddTextField(), не відображається на сторінці | Координати rect виходять за межі розмірів цільової сторінки | Переконайтеся, що прямокутник знаходиться в межах сторінки |
Поле все ще виглядає інтерактивним після Flatten() | Flatten() було викликано на копії, а не на дескрипторі Add*() / Form.Get(), який повернувся | Викличте Flatten() на об’єкті, отриманому безпосередньо з форми |
| Зміна значення поля не відображається на екрані | Вигляд поля не був перегенерований після зміни значення | Викличте Form.GenerateAppearances(), або власний GenerateAppearance() поля |
FAQ
Як прочитати або змінити значення поля після його створення?
Знайдіть його за допомогою Form.Get('fieldName') (або використайте дескриптор, який повернув виклик Add*()) і прочитайте або присвойте його властивість Value безпосередньо.
Які типи полів підтримує фасад Form?
Текстові поля, чекбокси, групи радіокнопок, комбо-бокси, спискові бокси та кнопки, за допомогою Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() та Form.AddPushButton().
Як видалити поле?
Викличте Form.RemoveField(), передавши або дескриптор поля, або його назву.
Як зробити поле форми постійним і недоступним для редагування?
Викличте Flatten() на полі handle — той самий шаблон, що використовується для анотацій — який вбудовує його поточний вигляд у сторінку та видаляє його з AcroForm.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
Form | AcroForm фасад, доступний через doc.Form |
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton() | Створіть поле відповідного типу |
Form.Fields | Кожен Field у документі, у вигляді масиву |
Form.Get() | Знайдіть поле за його повністю кваліфікованою назвою |
Form.RemoveField() | Видаліть поле за ідентифікатором або назвою |
Form.GenerateAppearances() | Перегенеруйте зовнішній вигляд на екрані для кожного поля |
TextField / CheckboxField / ChoiceField / ButtonField / RadioField | Поле типу обробляє спільний доступ Value, ReadOnly, Required |
Page.AddTextField() / Page.AddCheckbox() | Створити поле безпосередньо на сторінці |