ฟิลด์การเปลี่ยนผ่าน

ฟิลด์การเปลี่ยนผ่าน

ฟิลด์แบบเปลี่ยนผ่าน

คู่มือนี้แสดงวิธีทำงานกับประเภทฟิลด์แบบเปลี่ยนผ่าน — ฟิลด์บาร์โค้ดแบบดั้งเดิมและฟิลด์ความเข้ากันได้ — ใน Aspose.Words FOSS สำหรับ .NET.

Aspose.Words FOSS สำหรับ .NET แสดงถึงประเภทฟิลด์ Word เก่าบางประเภทผ่านชุดคลาสเฉพาะใน Aspose.Words.Fields เนมสเปซ, ที่เรียกโดยไม่เป็นทางการว่า transitional ฟิลด์เหล่านี้เป็นฟิลด์ที่มีมาก่อนฟิลด์เทียบเท่า Open XML ที่ตามมาภายหลัง แต่ยังคงใช้ได้ภายใน .docx เอกสารที่เปิดจากแหล่งข้อมูลแบบดั้งเดิม แต่ละประเภทฟิลด์การเปลี่ยนผ่านมีคลาสที่มีประเภทอย่างเข้มข้นของตนเองซึ่งสืบทอดจาก Field, ควบคู่กับทั่วไป Field วัตถุที่เปิดเผยโดย Document.Range.Fields.


ฟิลด์บาร์โค้ด

คลาสฟิลด์สามประเภทสร้างหรือแสดงข้อมูลบาร์โค้ดภายในเอกสาร: FieldBarcode (ฟิลด์ BARCODE — บาร์โค้ดไปรษณีย์แบบดั้งเดิมที่มีคุณสมบัติของตนเองคือ PostalAddress, IsBookmark, FacingIdentificationMark, และ IsUSPostalAddress), FieldDisplayBarcode (ฟิลด์ DISPLAYBARCODE), และ FieldMergeBarcode (ฟิลด์ MERGEBARCODE ซึ่งยังทำการใช้งาน IMergeFieldSurrogate สำหรับการผสานจดหมาย). FieldDisplayBarcode และ FieldMergeBarcode มีคุณสมบัติการกำหนดค่าบาร์โค้ดทั่วไปเดียวกัน — BarcodeType, BarcodeValue, SymbolHeight, SymbolRotation, ScalingFactor, ForegroundColor, BackgroundColor, PosCodeStyle, CaseCodeStyle, ErrorCorrectionLevel, DisplayText, AddStartStopChar, และ FixCheckDigit — ซึ่ง FieldBarcode ไม่มี.

คลาส BarcodeParameters เป็นคอนเทนเนอร์แบบผ่านต่อที่เปิดเผยการรวมของชุดคุณสมบัติทั้งสอง (คุณสมบัติที่อยู่ไปรษณีย์และคุณสมบัติการกำหนดค่าบาร์โค้ดทั่วไป) ใช้เพื่อส่งการตั้งค่าให้กับเรนเดอร์บาร์โค้ด, และ IBarcodeGenerator คืออินเทอร์เฟซที่เรนเดอร์แบบกำหนดเองทำการใช้งาน, เปิดเผย GetBarcodeImage(parameters) และ GetOldBarcodeImage(parameters) แบบดั้งเดิม. วนซ้ำ Document.Range.Fields และตรวจสอบ Field.Type เทียบกับ FieldType.FieldBarcode, FieldType.FieldDisplayBarcode หรือ FieldType.FieldMergeBarcode เพื่อค้นหาฟิลด์เหล่านี้, จากนั้นแคสท์เป็นคลาสฟิลด์เฉพาะ — BarcodeValue และ BarcodeType จะมีให้ใช้เฉพาะหลังจากแคสท์เป็น FieldDisplayBarcode หรือ FieldMergeBarcode, ไม่ใช่ FieldBarcode.


ฟิลด์ความเข้ากันได้แบบดั้งเดิม

คลาสฟิลด์เพิ่มเติมสี่คลาสครอบคลุมรหัสฟิลด์ Word รุ่นเก่าที่พบได้น้อยลงในเอกสารที่เขียนใหม่ แต่ยังปรากฏในไฟล์ .docx แบบเก่า: FieldBidiOutline (ฟิลด์ BIDIOUTLINE สำหรับการจัดลำดับหัวข้อจากขวาไปซ้าย), FieldEQ (ฟิลด์สมการ EQ ซึ่งยังเปิดให้ AsOfficeMath() แปลงเนื้อหาเป็นอ็อบเจกต์ OfficeMath), FieldFootnoteRef (ฟิลด์ FOOTNOTEREF ที่อ้างอิงข้ามหมายเลขเชิงอรรถหรือบันทึกท้าย), และ FieldInfo (ฟิลด์ INFO ที่อ่านหรือเขียนคุณสมบัติข้อมูลสรุปของเอกสารผ่านคุณสมบัติ InfoType และ NewValue).

แต่ละคลาสฟิลด์เหล่านี้สืบทอดส่วนติดต่อ Field เดียวกัน: GetFieldCode() คืนข้อความรหัสพื้นฐานของฟิลด์, Update() ประเมินผลลัพธ์ของฟิลด์ใหม่, Unlink() แทนที่ฟิลด์ด้วยผลลัพธ์ที่คำนวณล่าสุด, และ Remove() ลบฟิลด์ออกจากเอกสาร. IFieldCodeTokenInfoProvider ถูกดำเนินการโดย FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, และ FieldInfo, เนื่องจากรหัสฟิลด์ของพวกเขามีสวิตช์โครงสร้างที่ซับซ้อนเกินกว่าข้อความคำสั่งธรรมดา.


เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด

  • ควรตรวจสอบ Field.Type เสมอก่อนแปลงประเภท Field ทั่วไปให้เป็นหนึ่งในคลาสฟิลด์แบบเปลี่ยนผ่าน — การแปลงประเภทที่ไม่ถูกต้องจะทำให้เกิด InvalidCastException.
  • เรียก Update() หลังจากเปลี่ยนแปลงคุณสมบัติของฟิลด์บาร์โค้ดเพื่อให้ Result สะท้อนการตั้งค่าใหม่ก่อนบันทึกเอกสาร.
  • FieldEQ.AsOfficeMath() จะสำเร็จเฉพาะเมื่อฟิลด์ EQ จริง ๆ แล้วเข้ารหัสสมการ; ตรวจสอบว่า Result ของฟิลด์ดูเหมือนสูตรก่อนเรียกใช้งาน.
  • ใช้ Unlink() เมื่อคุณต้องการตรึงค่าปัจจุบันของฟิลด์เป็นข้อความคงที่, โดยยกเลิกความสามารถในการคำนวณใหม่ในภายหลัง.
  • คลาสฟิลด์บาร์โค้ดจะเก็บข้อมูลเท่านั้น — รุ่น FOSS นี้ไม่มีเอนจินการแสดงผลบาร์โค้ด, ดังนั้นผลลัพธ์ของ GetBarcodeImage() จะขึ้นอยู่กับการนำไปใช้ของ IBarcodeGenerator ที่คุณจัดหา.

ปัญหาทั่วไป

ปัญหาสาเหตุแก้ไข
InvalidCastException เมื่อทำการแคสท์ Fieldสมมติ FieldType ผิดตรวจสอบ Field.Type กับค่าคงที่ FieldType ที่ตรงกันก่อน
FieldEQ.AsOfficeMath() ให้ผลลัพธ์ที่ไม่คาดคิดฟิลด์ไม่มีคำสั่งสมการที่ถูกต้องตรวจสอบผลลัพธ์ของ GetFieldCode() ก่อนการแปลง
ฟิลด์บาร์โค้ดไม่มีรูปภาพที่เรนเดอร์ไม่มีการจัดหา implementation ของ IBarcodeGeneratorจัดหาตัวสร้างที่กำหนดเองซึ่ง implements GetBarcodeImage()
ค่า FieldInfo ไม่ได้อัปเดตหลังจากการเปลี่ยนแปลงของ NewValueฟิลด์ไม่ได้รีเฟรชเรียก Update() บนฟิลด์หลังจากแก้ไข NewValue

FAQ

คำว่า “transitional” หมายถึงอะไรสำหรับประเภทฟิลด์เหล่านี้?

นี่ไม่ใช่คำศัพท์อย่างเป็นทางการของ Word — มันจัดกลุ่มคลาสฟิลด์ในเนมสเปซ Aspose.Words.Fields ของฉบับนี้ที่ทำการทำงานของโค้ดฟิลด์เก่า (barcode และฟิลด์ความเข้ากันได้ก่อนเปิด-XML) ผ่านคลาสที่มีชนิดข้อมูลแน่นหนาของตนเอง แทนที่จะถูกจัดการเฉพาะผ่านวัตถุ Field แบบทั่วไป.

ฉบับนี้สามารถแสดงภาพ barcode ได้หรือไม่?

ไม่ใช่. FieldBarcode, FieldDisplayBarcode และ FieldMergeBarcode เก็บข้อมูล barcode และเปิดเผยอินเทอร์เฟซ IBarcodeGenerator แต่ไม่มีเอนจินการแสดง barcode ในตัวที่มาพร้อมกับฉบับนี้ — คุณต้องจัดหา implementation IBarcodeGenerator ของคุณเอง.

ฉันสามารถแปลงฟิลด์ EQ เป็นสมการ OfficeMath ได้หรือไม่?

ใช่, ผ่าน FieldEQ.AsOfficeMath(), โดยที่โค้ดของฟิลด์จริง ๆ แล้วเข้ารหัสเป็นสมการ.

ฉันจะค้นหาฟิลด์การเปลี่ยนแปลงทั้งหมดในเอกสารได้อย่างไร?

นับรายการ Document.Range.Fields และเปรียบเทียบแต่ละ Field.Type กับค่าคงที่ FieldType ที่เกี่ยวข้อง (FieldBarcode, FieldDisplayBarcode, FieldMergeBarcode, FieldBidiOutline, FieldEQ, FieldFootnoteRef, FieldInfo).


API Reference สรุป

คลาส / เมธอดคำอธิบาย
FieldBarcodeimplements ฟิลด์ BARCODE
FieldDisplayBarcodeทำงานกับฟิลด์ DISPLAYBARCODE
FieldMergeBarcodeทำงานกับฟิลด์บาร์โค้ดการรวมจดหมาย MERGEBARCODE
BarcodeParametersคอนเทนเนอร์สำหรับการตั้งค่าบาร์โค้ดที่ส่งให้ตัวสร้าง
IBarcodeGeneratorอินเทอร์เฟซสำหรับตัวเรนเดอร์ภาพบาร์โค้ดแบบกำหนดเอง
FieldBidiOutlineดำเนินการฟิลด์ BIDIOUTLINE
FieldEQดำเนินการฟิลด์สมการ EQ; AsOfficeMath() แปลงเป็น OfficeMath
FieldFootnoteRefดำเนินการฟิลด์ FOOTNOTEREF
FieldInfoดำเนินการฟิลด์คุณสมบัติเอกสาร INFO

ดูเพิ่มเติม

 ภาษาไทย