ข้อมูลเอกสาร

ข้อมูลเอกสาร

ข้อมูลเอกสาร

คู่มือนี้แสดงวิธีการอ่านและเขียนเมตาดาต้าเอกสารด้วย Aspose.Words FOSS สำหรับ .NET. ทุก Document ที่โหลดหรือสร้างใหม่จะมีเมตาดาต้าสองประเภทเคียงข้างเนื้อหา: ชุดคงที่ของคุณสมบัติมาตรฐาน (author, title, word count, และอื่น ๆ ที่คล้ายกัน) และชุดไม่มีที่สิ้นสุดของคุณสมบัติกำหนดเองที่คุณกำหนดเอง. Aspose.Words FOSS สำหรับ .NET ยังทำงานร่วมกับฟิลด์ Word ที่แสดงเมตาดาต้านี้ในส่วนเนื้อหาเอกสาร — AUTHOR, COMMENTS, และ DOCPROPERTY — เพื่อให้ค่าของคุณสมบัติเกิดเป็นข้อความที่สดใหม่และสามารถอัปเดตได้.


คุณสมบัติมาตรฐานของเอกสาร

Document.BuiltInDocumentProperties คืนค่า BuiltInDocumentProperties คอลเลกชันที่มีคุณสมบัติหนึ่งรายการสำหรับแต่ละฟิลด์เมตาดาต้า Word มาตรฐาน: Author, Title, Subject, Comments, Category, Company, Manager, Keywords, CreatedTime, LastSavedTime, LastSavedBy, LastPrinted, RevisionNumber, TotalEditingTime, และสถิติ เช่น Pages, Words, Characters, CharactersWithSpaces, Paragraphs, และ Lines. เนื่องจาก BuiltInDocumentProperties สืบทอดจาก DocumentPropertyCollection, มันยังสนับสนุนการค้นหาตามชื่อผ่านตัวดัชนีของมัน, Contains(), IndexOf(), และการวนลูปผ่าน GetEnumerator(). คอลเลกชันเดียวกันนี้จะเปิดให้ใช้บน PlainTextDocument.BuiltInDocumentProperties เมื่อทำงานกับอินพุตข้อความธรรมดา.


คุณสมบัติกำหนดเองของเอกสาร

Document.CustomDocumentProperties คืนค่า CustomDocumentProperties คอลเลกชันสำหรับคุณสมบัติที่แอปพลิเคชันกำหนดเอง — คู่ชื่อ/ค่าแบบอิสระที่ Word จัดเก็บเคียงกับชุดมาตรฐาน. เพิ่มคุณสมบัติด้วย Add(name, value), ซึ่งมีการโอเวอร์โหลดใน CustomDocumentProperties สำหรับประเภทค่าที่คุณสมบัติโรงไว้; ดึงค่าด้วยชื่อผ่านตัวดัชนี, เช่น properties[name]; และลบรายการด้วย Remove(name), RemoveAt(index), หรือ Clear(). AddLinkToContent(name, linkSource) สร้างคุณสมบัติที่ค่าถูกเชื่อมโยงกับบุ๊กมาร์กหรือช่วงภายในเอกสารแทนที่จะเก็บเป็นค่าคงที่.

ทุกรายการในคอลเลกชันใดก็ได้ — ไม่ว่าจะเป็นแบบมาตรฐานหรือแบบกำหนดเอง — คือ DocumentProperty, ซึ่งเปิดเผย Name, Value, และ Type (ค่าชนิด PropertyType: String, Number, Double, Boolean, DateTime, StringArray, ObjectArray, ByteArray, หรือ Other), พร้อมกับ IsLinkToContent และ LinkSource สำหรับคุณสมบัติที่เชื่อมโยง. DocumentProperty ให้ตัวช่วยแปลงค่าเช่น ToString(), ToInt(), ToDouble(), ToDateTime(), ToBool(), และ ToByteArray() เพื่อดึงค่าพื้นฐานในประเภท .NET ที่ต้องการ.


ฟิลด์ข้อมูลเอกสาร

สามคลาสย่อย Field เปิดเผยเมตาดาต้าเอกสารเป็นฟิลด์ภายในเนื้อหาเอกสารเอง: FieldAuthor (ฟิลด์ AUTHOR พร้อมคุณสมบัติ AuthorName), FieldComments (ฟิลด์ COMMENTS พร้อมคุณสมบัติ Text), และ FieldDocProperty (ฟิลด์ DOCPROPERTY ซึ่งอ่านคุณสมบัติเอกสารที่กำหนดชื่อ — ที่สร้างมาโดยระบบหรือกำหนดเอง — ไปยังเอกสาร). เช่นเดียวกับทุก Field ทั้งสามนี้แชร์วงจรชีวิตพื้นฐานของ Field: GetFieldCode() เพื่ออ่านโค้ดฟิลด์พื้นฐาน, Result / DisplayResult เพื่ออ่านค่าที่คำนวณล่าสุด, Update() เพื่อคำนวณค่าใหม่, Unlink() เพื่อแทนที่ฟิลด์ด้วยผลลัพธ์คงที่, และ Remove() เพื่อทำการลบ. แทรกฟิลด์ข้อมูลเอกสารด้วย DocumentBuilder.InsertField(fieldCode) — เช่นโค้ดฟิลด์ของ AUTHOR หรือ DOCPROPERTY "Company" — หรือด้วยการ overload InsertField(fieldType, updateField) โดยใช้ค่าประเภท FieldType เช่น FieldType.FieldAuthor, FieldType.FieldComments, หรือ FieldType.FieldDocProperty.

เนื่องจาก FieldDocProperty อ่านคุณสมบัติเอกสารใดก็ได้ที่มันผูกไว้ การเปลี่ยนค่า BuiltInDocumentProperties หรือ CustomDocumentProperties ที่อยู่ภายใต้แล้วเรียก Update() — หรือ Document.UpdateFields() เพื่อรีเฟรชทุกฟิลด์ในเอกสารพร้อมกัน — จะทำให้ค่ใหม่ถูกส่งต่อไปยังผลลัพธ์ที่แสดงของฟิลด์.


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

  • กำหนดคุณสมบัติมาตรฐานเช่น Title, Author และ Subject ก่อนบันทึก — Word และโปรแกรมอื่น ๆ จะอ่านค่าต่าง ๆ เหล่านี้จาก BuiltInDocumentProperties เพื่อใช้ในรายการเอกสารและการทำดัชนีการค้นหา.
  • ใช้ DocumentProperty.Type เพื่อตรวจสอบ PropertyType ของคุณสมบัติก่อนเรียกตัวช่วยแปลงเฉพาะ (ToInt(), ToDateTime() เป็นต้น) เพื่อหลีกเลี่ยงความไม่ตรงกันของการแปลงบนคุณสมบัติที่คุณไม่ได้สร้างเอง.
  • AddLinkToContent() ทำให้คุณสมบัติกำหนดเองซิงโครไนซ์กับเนื้อหาเอกสาร (เช่นช่วงที่มีเครื่องหมายคั่น) แทนค่าคงที่ — ใช้เมื่อคุณสมบัติควรสะท้อนสิ่งที่อยู่ในเอกสารในขณะนั้นเสมอ.
  • เรียก Document.UpdateFields() หลังจากเปลี่ยนคุณสมบัติเอกสาร เพื่อให้ฟิลด์ FieldDocProperty, FieldAuthor หรือ FieldComments ที่มีอยู่ในเนื้อหาเอกสารรับค่าใหม่.
  • BuiltInDocumentProperties และ CustomDocumentProperties มีให้ใช้ทั้งบน PlainTextDocument และ Document ดังนั้นเมตาดาต้าจึงสามารถส่งต่อได้แม้เมื่อเนื้อหาที่โหลดเป็นข้อความธรรมดา.

ปัญหาทั่วไป

ปัญหาสาเหตุวิธีแก้
ตัวทำดัชนีคืนค่า null สำหรับคุณสมบัติที่กำหนดเองคุณสมบัตินี้ยังไม่ได้เพิ่มเรียก CustomDocumentProperties.Add(name, value) ก่อน หรือ ตรวจสอบ Contains(name) ก่อนอ่าน
FieldDocProperty แสดงค่าที่ล้าสมัยหลังจากเปลี่ยนคุณสมบัติฟิลด์ไม่ได้รับการรีเฟรชเรียก Update() บนฟิลด์, หรือ Document.UpdateFields() เพื่อรีเฟรชทุกฟิลด์ในเอกสาร
DocumentProperty.ToInt() / ToDateTime() โยนข้อผิดพลาดค่า Type ที่แท้จริงของคุณสมบัติไม่ตรงกับการแปลงที่ร้องขอตรวจสอบ DocumentProperty.Type ก่อนเลือกว่าจะเรียกตัวช่วยแปลงใด

FAQ

ความแตกต่างระหว่างคุณสมบัติเอกสารที่มีมาในตัวและคุณสมบัติกำหนดเองคืออะไร?

คุณสมบัติที่มีมาในตัว (Document.BuiltInDocumentProperties) เป็นชุดคงที่ที่กำหนดโดยรูปแบบ OOXML — Author, Title, Pages และอื่น ๆ ที่คล้ายกัน คุณสมบัติกำหนดเอง (Document.CustomDocumentProperties) เป็นชุดที่เปิดกว้างและกำหนดโดยแอปพลิเคชันของชื่อ/ค่า ที่เพิ่มด้วย Add().

ฉันจะทำให้คุณสมบัติกำหนดเองติดตามเนื้อหาเอกสารแทนค่าคงที่ได้อย่างไร?

ใช้ CustomDocumentProperties.AddLinkToContent(name, linkSource) ซึ่งเชื่อมค่าของคุณสมบัติกับบุ๊กมาร์กหรือช่วงในเอกสารแทนการเก็บค่าคงที่.

การอัปเดตคุณสมบัติของเอกสารจะทำให้ฟิลด์ที่แสดงมันอัปเดตโดยอัตโนมัติหรือไม่?

ไม่ — เรียก Update() บนฟิลด์เฉพาะหรือ Document.UpdateFields() เพื่อคำนวณใหม่ทุกฟิลด์ในเอกสาร รวมถึงอินสแตนซ์ของ FieldDocProperty, FieldAuthor และ FieldComments .

ฉันสามารถอ่านคุณสมบัติของเอกสารจากไฟล์ข้อความธรรมดาได้หรือไม่?

ใช่. PlainTextDocument เปิดเผยคุณสมบัติ BuiltInDocumentProperties และ CustomDocumentProperties เดียวกันกับ Document .


API Reference สรุป

คลาส / เมธอดคำอธิบาย
Document.BuiltInDocumentPropertiesคอลเลกชันเมตาดาต้ามาตรฐาน OOXML (Author, Title, Pages, ฯลฯ)
Document.CustomDocumentPropertiesคอลเลกชันคุณสมบัติชื่อ/ค่า ที่กำหนดโดยแอปพลิเคชัน
CustomDocumentProperties.Add() / ตัวจัดทำดัชนีตามชื่อ / AddLinkToContent()เพิ่ม, ดึงคืน, หรือเชื่อมโยงเนื้อหาให้กับคุณสมบัติกำหนดเอง
DocumentPropertyรายการคุณสมบัติเพียงรายการเดียว; Value, Type, และ ToString()/ToInt()/ToDouble()/ToDateTime()/ToBool()/ToByteArray() ตัวช่วยการแปลง
FieldAuthor / FieldComments / FieldDocPropertyAUTHOR, COMMENTS, และ DOCPROPERTY ฟิลด์; Update(), Result, GetFieldCode()
DocumentBuilder.InsertField()แทรกฟิลด์โดยใช้โค้ดฟิลด์หรือ FieldType

ดูเพิ่มเติม

 ภาษาไทย