Forms

Forms

Trang này bao phủ việc tạo và quản lý các trường tương tác AcroForm. Form, được truy cập qua doc.Form, là lớp bề mặt cho mọi loại trường; mỗi phương thức Add*() tạo một trường gắn với một trang và một hình chữ nhật widget và trả về một handle có kiểu (TextField, CheckboxField, ChoiceField, ButtonField hoặc RadioField) mà chia sẻ các thuộc tính chung Field Value, ReadOnly, và Required.


Tạo Trường

Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox(), và các thành phần cùng cấp của chúng mỗi cái nhận một đối tượng tùy chọn chỉ tên page mục tiêu (bắt đầu từ 0), rect widget, một name trường, và các kiểu dáng như borderColor và 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() và Page.AddCheckbox() tạo các loại trường giống nhau trực tiếp trên một trang, mà không cần đặt tên doc.Form hoặc một số page trong đối tượng tùy chọn.


Đọc và Sửa Trường

Form.Fields là một mảng chứa mọi Field trên tài liệu; Form.Get() tra cứu một bằng tên đầy đủ của nó. Value của mỗi trường có thể được đọc hoặc gán lại, và ReadOnly / Required là các thuộc tính boolean đơn giản.

const nameField = doc.Form.Get('FullName');
if (nameField) {
  console.log(nameField.Value);
  nameField.Value = 'Bob Sample';
}

Làm phẳng các trường

Mỗi phương thức Flatten() của loại trường đều ghép ngoại hình hiện tại của nó vào nội dung tĩnh của trang và loại bỏ nó khỏi AcroForm — hiệu ứng cố định, không tương tác mà Annotation.Flatten() có đối với chú thích.

const tb = form.AddTextField({
  page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten();

Mẹo và Thực hành Tốt nhất

  • Sửa đổi handle trường được trả về trực tiếp bởi cuộc gọi Add*(), hoặc một handle được tra cứu mới bằng Form.Get() — một tham chiếu cũ không thấy các thay đổi được thực hiện ở nơi khác.
  • Form.RemoveField() chấp nhận một handle Field hoặc một chuỗi tên trường.
  • Gọi Form.GenerateAppearances() sau khi thay đổi giá trị trường hàng loạt để ngoại hình trên màn hình của mỗi trường luôn đồng bộ với Value của nó.
  • Các hộp combo và hộp danh sách lưu giá trị export đã chọn vào /V; văn bản display là những gì hiển thị trong ngoại hình được tạo.

Các vấn đề thường gặp

Vấn đềNguyên nhânKhắc phục
Trường được thêm bằng Form.AddTextField() không hiển thị trên trangCác tọa độ rect nằm ngoài kích thước của trang đíchXác nhận hình chữ nhật nằm trong giới hạn của trang
Trường vẫn hiển thị là tương tác sau Flatten()Flatten() đã được gọi trên một bản sao thay vì handle Add*() / Form.Get() được trả vềGọi Flatten() trên đối tượng lấy trực tiếp từ biểu mẫu
Thay đổi giá trị trường không hiển thị trên màn hìnhGiao diện của trường không được tạo lại sau khi giá trị thay đổiGọi Form.GenerateAppearances(), hoặc GenerateAppearance() riêng của trường

FAQ

Làm sao đọc hoặc thay đổi giá trị của một trường sau khi đã tạo?

Tìm nó bằng Form.Get('fieldName') (hoặc sử dụng handle mà cuộc gọi Add*() trả về) và đọc hoặc gán trực tiếp thuộc tính Value của nó.

Facade Form hỗ trợ những loại trường nào?

Các trường văn bản, ô kiểm, nhóm nút radio, hộp combo, hộp danh sách và nút nhấn, thông qua Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox() và Form.AddPushButton().

Làm sao để xóa một trường?

Gọi Form.RemoveField() với handle của trường hoặc tên của nó.

Làm thế nào để một trường biểu mẫu trở thành cố định và không thể chỉnh sửa?

Gọi Flatten() trên trình quản lý trường — cùng mẫu được dùng cho chú thích — mà nhúng giao diện hiện tại của nó vào trang và loại bỏ nó khỏi AcroForm.


API Reference Tóm tắt

Lớp/Phương thứcMô tả
FormAcroForm facade, tiếp cận qua doc.Form
Form.AddTextField() / Form.AddCheckbox() / Form.AddRadioGroup() / Form.AddComboBox() / Form.AddListBox() / Form.AddPushButton()Tạo một trường có kiểu tương ứng
Form.FieldsMỗi Field trong tài liệu, dưới dạng mảng
Form.Get()Tra cứu một trường bằng tên đầy đủ của nó
Form.RemoveField()Xóa một trường bằng handle hoặc tên
Form.GenerateAppearances()Tái tạo giao diện trên màn hình cho mọi trường
TextField / CheckboxField / ChoiceField / ButtonField / RadioFieldTrường nhập liệu xử lý việc chia sẻ Value, ReadOnly, Required
Page.AddTextField() / Page.AddCheckbox()Tạo một trường trực tiếp trên trang

Xem thêm

 Tiếng Việt