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 Підсумок

Клас/МетодОпис
FormAcroForm фасад, доступний через 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()Створити поле безпосередньо на сторінці

Дивіться також

 Українська