Forms

Forms

หน้านี้ครอบคลุมการสร้างและการจัดการฟิลด์ AcroForm ที่โต้ตอบได้. Form, ที่เข้าถึงผ่าน doc.Form, เป็นหน้ากากสำหรับทุกประเภทของฟิลด์; แต่ละวิธี Add*() จะสร้างฟิลด์ที่เชื่อมโยงกับหน้าและสี่เหลี่ยมวิดเจ็ตและส่งคืนตัวจัดการที่มีประเภท (TextField, CheckboxField, ChoiceField, ButtonField, หรือ RadioField) ซึ่งแชร์คุณสมบัติทั่วไป Field ได้แก่ Value, ReadOnly, และ Required.


การสร้างฟิลด์

Form.AddTextField(), Form.AddCheckbox(), Form.AddComboBox() และพี่น้องของพวกมันแต่ละตัวรับอ็อบเจกต์ options ที่ระบุชื่อ 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 ในอ็อบเจกต์ options.


การอ่านและการแก้ไขฟิลด์

Form.Fields คืออาร์เรย์ของทุก Field ในเอกสาร; Form.Get() ค้นหาอันหนึ่งโดยใช้ชื่อเต็มของมัน. Value ของทุกฟิลด์สามารถอ่านหรือกำหนดค่าใหม่ได้, และ ReadOnly / Required เป็นคุณสมบัติ boolean ธรรมดา.

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 facade รองรับ?

ฟิลด์ข้อความ, กล่องตรวจสอบ, กลุ่มวิทยุ, คอมโบบ็อกซ์, ลิสต์บ็อกซ์, และปุ่มกด, ผ่าน Form.AddTextField(), Form.AddCheckbox(), Form.AddRadioGroup(), Form.AddComboBox(), Form.AddListBox(), และ Form.AddPushButton().

ฉันจะลบฟิลด์ได้อย่างไร?

เรียก Form.RemoveField() พร้อมด้วยแฮนด์เดิลของฟิลด์หรือชื่อของมัน.

ฟิลด์ฟอร์มจะถูกทำให้ถาวรและไม่แก้ไขได้อย่างไร?

เรียก Flatten() บนตัวจัดการฟิลด์ — รูปแบบเดียวกับที่ใช้สำหรับคำอธิบาย — ซึ่งจะทำให้ลักษณะปัจจุบันของมันถูกรวมไว้ในหน้าและลบออกจาก AcroForm.


API Reference สรุป

คลาส/เมธอดคำอธิบาย
FormAcroForm facade, เข้าถึงผ่าน 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()สร้างฟิลด์โดยตรงบนหน้า

ดูเพิ่มเติม

 ภาษาไทย