อัปเดตฟิลด์

โดยทั่วไปแล้ว ช่องที่แทรกลงใน Microsoft Word จะมีค่าล่าสุดอยู่แล้ว ตัวอย่างเช่น หากฟิลด์นั้นเป็นสูตรหรือหมายเลขหน้า ฟิลด์นั้นก็จะมีค่าที่คำนวณได้ถูกต้องสำหรับเวอร์ชันของเอกสารที่กำหนด แต่ถ้าคุณมีแอปพลิเคชันที่สร้างหรือแก้ไขเอกสารที่มีฟิลด์ต่างๆ เช่น การรวมเอกสารสองฉบับหรือเติมข้อมูลลงในเอกสาร ตามหลักการแล้ว ฟิลด์ทั้งหมดจะต้องได้รับการอัปเดตเพื่อให้เอกสารมีประโยชน์

วิธีอัปเดตฟิลด์

เมื่อโหลดเอกสาร Aspose.Words จะเลียนแบบลักษณะการทำงานของ Microsoft Word พร้อมกับปิดตัวเลือกในการอัปเดตช่องโดยอัตโนมัติ พฤติกรรมสามารถสรุปได้ดังนี้:

  • เมื่อคุณเปิด/บันทึกเอกสาร ช่องต่างๆ จะยังคงเหมือนเดิม
  • คุณสามารถอัปเดตฟิลด์ทั้งหมดในเอกสารได้อย่างชัดเจน (เช่น สร้าง TOC ใหม่) เมื่อคุณต้องการ
  • เมื่อคุณพิมพ์/เรนเดอร์เป็น PDF หรือ XPS ฟิลด์ที่เกี่ยวข้องกับการกำหนดหมายเลขหน้าในส่วนหัว/ท้ายกระดาษจะได้รับการอัปเดต
  • เมื่อคุณดำเนินการ mail merge ฟิลด์ทั้งหมดจะได้รับการอัปเดตโดยอัตโนมัติ

อัปเดตฟิลด์โดยทางโปรแกรม

หากต้องการอัปเดตช่องในเอกสารทั้งหมดอย่างชัดเจน เพียงโทรไปที่ update_fields หากต้องการอัปเดตฟิลด์ที่มีอยู่ในส่วนหนึ่งของเอกสาร ให้รับออบเจ็กต์ Range และเรียกใช้เมธอด update_fields ใน Aspose.Words คุณสามารถรับ Range สำหรับโหนดใดๆ ในแผนผังเอกสาร เช่น Section, HeaderFooter, Paragraph เป็นต้น โดยใช้คุณสมบัติ Node.range คุณสามารถอัปเดตผลลัพธ์ของฟิลด์เดียวได้โดยการเรียกเมธอด update

การอัปเดตฟิลด์ที่เกี่ยวข้องกับเพจโดยอัตโนมัติระหว่างการเรนเดอร์

เมื่อคุณดำเนินการแปลงเอกสารเป็นรูปแบบหน้าคงที่ เช่น PDF หรือ XPS แล้ว Aspose.Words จะอัปเดตฟิลด์ที่เกี่ยวข้องกับเค้าโครงหน้า PAGE, PAGEREF ที่พบในส่วนหัว/ส่วนท้ายของเอกสารโดยอัตโนมัติ ลักษณะการทำงานนี้เลียนแบบพฤติกรรมของ Microsoft Word เมื่อพิมพ์เอกสาร

หากคุณต้องการอัปเดตช่องอื่นๆ ทั้งหมดในเอกสาร คุณต้องเรียก update_fields ก่อนที่จะเรนเดอร์เอกสาร

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีอัปเดตฟิลด์ทั้งหมดก่อนแสดงผลเอกสาร:

อัปเดตฟิลด์อัตโนมัติระหว่าง Mail Merge

เมื่อคุณดำเนินการ mail merge ช่องทั้งหมดในเอกสารจะได้รับการอัปเดตโดยอัตโนมัติ เนื่องจาก mail merge เป็นกรณีของการอัปเดตช่อง โปรแกรมพบฟิลด์ mail merge และจำเป็นต้องอัปเดตผลลัพธ์ ซึ่งเกี่ยวข้องกับการดึงค่าจากแหล่งข้อมูลแล้วแทรกลงในฟิลด์ แน่นอนว่าตรรกะนั้นซับซ้อนกว่า เช่น เมื่อถึงจุดสิ้นสุดของเอกสาร/ขอบเขต mail merge แต่ยังมีข้อมูลเพิ่มเติมที่จะรวมเข้าด้วยกัน จำเป็นต้องทำซ้ำขอบเขตและอัปเดตชุดฟิลด์ใหม่

อัปเดตฟิลด์ที่มีแอตทริบิวต์สกปรก

w:dirty เป็นแอตทริบิวต์ระดับฟิลด์ที่จะรีเฟรชเฉพาะฟิลด์ที่คุณระบุเมื่อเปิดเอกสาร โดยจะแจ้งให้ MS Word รีเฟรชฟิลด์นี้ในครั้งถัดไปที่เปิดเอกสารเท่านั้น คุณสามารถใช้คุณสมบัติ update_dirty_fields เพื่อระบุว่าจะอัปเดตฟิลด์ด้วยแอตทริบิวต์ Dirt หรือไม่ เมื่อตั้งค่าของ update_dirty_fields เป็น True ฟิลด์ทั้งหมดที่มีค่า True สำหรับคุณสมบัติ Field.is_dirty หรือ FieldChar.is_dirty จะได้รับการอัปเดตในการโหลดเอกสาร

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอัปเดตฟิลด์ที่มีแอตทริบิวต์ Dirt:

อัปเดตคุณสมบัติ LastSavedTime ก่อนบันทึก

คุณสามารถใช้คุณสมบัติ SaveOptions.update_last_saved_time_property ว่าจะอัปเดตคุณสมบัติเอกสารในตัวที่สอดคล้องกัน last_saved_time หรือไม่เมื่อบันทึกเอกสาร

ตัวอย่างรหัสต่อไปนี้แสดงวิธีการปรับปรุงคุณสมบัตินี้: