ข้อมูลเอกสาร
ข้อมูลเอกสาร
คู่มือนี้แสดงวิธีการอ่านและเขียนเมตาดาต้าเอกสารด้วย 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 / FieldDocProperty | AUTHOR, COMMENTS, และ DOCPROPERTY ฟิลด์; Update(), Result, GetFieldCode() |
DocumentBuilder.InsertField() | แทรกฟิลด์โดยใช้โค้ดฟิลด์หรือ FieldType |