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 สรุป
| คลาส/เมธอด | คำอธิบาย |
|---|---|
Form | AcroForm 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() | สร้างฟิลด์โดยตรงบนหน้า |